大規模なプログラムでは、次のように指定しました(フレックス/バイソン)
フレックス:
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 が認識されます
追加を行うにはどうすればよいですか?