我正在为 Excel 公式编写词法分析器和解析器。
在 Excel 中,我们可以为单元格指定名称。例如,abc是一个有效的名称,而禁止命名一个单元格B2,以免与单元格混淆
B2。因此,一旦我们遇到一个公式=B2,我们确定它B2引用的是一个单元格而不是用户定义的名称。
在我的lexer_formula.mll中,我定义了标识符:
let lex_cell = ['A' - 'Z']+ ['0' - '9']+ (* regular expressions to include all the cells *)
let lex_name = ['A' - 'Z' '0' - '9']+ (* regular expressions to include all the names *)
但是像B2with match both lex_celland这样的字符串lex_name,有谁知道我如何告诉词法分析器首先lex_cell考虑lex_name?lex_cell放入之前就足够lex_name了rule token = parse吗?