我正在尝试使用 Lex 和 Yacc 解析以下字符串输入,但没有成功。
"@user;一些随机文本;@another 用户;一些其他随机文本"
我正在使用以下语法:
/* Lambda calculus grammar by Zach Carter */
%lex
%%
\s*\n\s* {/* ignore */}
";" { return 'SEP'; }
"@" { return 'AT'; }
[a-zA-Z]+ { return 'VAR'; }
<<EOF>> { return 'EOF'; }
/lex
%%
file
: expr EOF
{ return $expr; }
| EOF
;
expr
: AT expression
| expression
| SEP expression
;
expression
: VAR
{ $$ = yytext; }
;
你可以在这里试试这个语法:
我想要的结果是:
"@user;一些随机文本;@another 用户;一些其他随机文本"
输出:
用户一些
随机文本
另一个用户
其他一些随机文本