0

我正在为 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_namelex_cell放入之前就足够lex_namerule token = parse吗?

4

1 回答 1

0

根据ocamllex 手册,首先放置就足够了lex_cell

如果多个正则表达式匹配输入的前缀,则应用“最长匹配”规则:选择匹配输入的最长前缀的正则表达式。在 tie 的情况下,选择规则中较早出现的正则表达式。

于 2016-05-30T05:50:42.343 回答