我正在为 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 *)
但是像B2
with match both lex_cell
and这样的字符串lex_name
,有谁知道我如何告诉词法分析器首先lex_cell
考虑lex_name
?lex_cell
放入之前就足够lex_name
了rule token = parse
吗?