我正在尝试使用标识符和文字解析语言。
b
b""
这b
是一个标识符,并且b""
是一个文字(也可能是例如,b"foo"
)。
我有以下简化语法:
module.exports = grammar({
name: 'foo',
rules: {
file: $ => repeat(choice(
$.ident,
$.literal,
)),
ident: _ => /[a-z]/,
literal: _ => seq('b', /\"[a-z]*\"/),
},
});
这会产生以下匹配状态:
(file [0, 0] - [2, 0]
(ERROR [0, 0] - [0, 1])
(literal [1, 0] - [1, 3]))
foo.bar 0 ms (ERROR [0, 0] - [0, 1])
即,我能够解析类似的结构b""
,但匹配器ident
进入错误分支并且无法恢复。
我试过token
没有成功。这里缺少什么?