在更大的程序中,我给出了以下内容(flex/bison)
在弹性:
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
我怎样才能让它做加法?