我有以下词法分析器规则:
let ws = [' ' '\t' '\n']+
...
| ws {Printf.printf "%s" (Lexing.lexeme lexbuf); WS(Lexing.lexeme lexbuf)}
以及以下解析器规则:
%token <string> WORD WS
cs : LSQRB wsornon choices wsornon RSQRB {$2}
;
wsornon : /* nothing */
| WS {$1}
;
choices : choice {$1}
| choices choice {$2}
;
choice : CHOICE LCURLYB mainbody RCURLYB {$3}
;
我基本上想wsornon
匹配空白或什么都没有。但是cs
在没有空格的情况下给出语法错误(对应于空规则)。
我错过了什么吗?