问题描述: 使用Bison/yacc解析器在未用空格分隔语法时,会跳过语法,导致"unexpected $end"错误。
解决方法:
expr: expr '+' term
| expr '-' term
| term
;
expr: expr '+' term
| expr '-' term
| term
;
term: term '*' factor
| term '/' factor
| factor
;
factor: NUMBER
| factor ',' NUMBER // 使用逗号作为分隔符
;
expr: '{' expr '+' term '}'
| '{' expr '-' term '}'
| term
;
term: '{' term '*' factor '}'
| '{' term '/' factor '}'
| factor
;
factor: NUMBER
| '<' factor '>' // 使用尖括号作为分隔符
;
在编写解析器时,需要根据实际情况选择合适的解决方法,以避免"unexpected $end"错误。