在較大的程序中,我已經給出了以下(柔性/野牛)如何解決2 + 2和2 + 2衝突
在柔性:
pn [\+|\-]
dig [0-9]+
exp [e|E]{dig}+
。
。
。
"+" {printf("+ detected\n");
return PLUS_SIGN;}
{pn}?{dig}+ { printf("digit detected - %s\n",yytext);
sscanf(yytext, "%d", (int*)&yylval);
return TYPE_INT;}
野牛:
expr:
expr PLUS_SIGN expr
{
$$ = $1 + $3;
printf(" $$=%f\n",$$);
}
| TYPE_INT
{
$$ = (int)$1;
printf(" $$=%f\n",$$);
}
;
的問題是:
當我給2 + 2也承認2 2 +2代替,+,2
哪有我得到它做添加?
在幾運行後多用途標點符號/運算符含糊不清的問題我採用了遞歸方式w/o(f)lex/bison/yacc。 –