我目前正在使用 Happy & Alex 为玩具语言的编译器编写解析器。由于需要某种形式的可选布局,我必须在匹配block
非终端之前更改 Alex 的状态。不幸的是,在我有机会更改 Alex 的状态之前,Happy 所需的前瞻令牌似乎已被读取。
这是一个演示问题的小片段:
funcDef : header localDefs block
^ I have to change alex's state
before the underlying lexer
starts reading the block tokens.
有没有解决这个问题的通用方法?