次のレクサールールがあります。
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
、空白がない場合 (空のルールに対応) には構文エラーが発生します。
何か不足していますか?