jison(Bisonと同等のJavaScript)を使用していますが、次の優先順位の問題があります。電卓のデモ http://zaach.github.com/jison/try/を使用して説明します
そのままで問題なく動作します。優先順位は
%left '+' '-'
%left '*' '/'
%left '^'
%left UMINUS
文法は
e
: e '+' e
{$$ = $1+$3;}
| e '-' e
{$$ = $1-$3;}
| e '*' e
{$$ = $1*$3;}
| e '/' e
{$$ = $1/$3;}
| e '^' e
{$$ = Math.pow($1, $3);}
| '-' e %prec UMINUS
{$$ = -$2;}
'*'行を次のように変更すると
| e '*' e %prec TIMESPREC
{$$ = $1*$3;}
優先順位をに変更します
%left '+' '-'
%left TIMESPREC '/'
%left '^'
%left UMINUS
もう動作しません。同じように動作するはずではありませんか?これは、たとえば、2 x + 3が(2x)+3として解析される代数構文を最終的に作成したい場合に役立ちます。
ありがとう!