[讨论] 算数 assign

楼主: finalwave (吃火球赚钱)   2007-05-27 22:24:21
不知道问题出在哪
只要是那种很复杂尤其是有 ^ 的算式 一定会出错@@
我的写法是
前面
%left '+' '-'
%left '*' '/'
%left '^'
%right UMINUS
后面
expr 部份
expr : expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
| expr '*' expr { $$ = $1 * $3; }
| expr '/' expr { $$ = $1 / $3; }
| expr '^' expr { $$ = $1 ^ $3; }
| '(' expr ')' { $$ = $2; }
| '-' expr %prec UMINUS { $$ = - $2; }
| NUMBER { $$ = atoi(yytext); printf("this is number\n"); }
| a
;
(a是各种变量名)
这样哪里有写错啊@@
一直找不出来~"~
作者: sophialiege (with friends)   2007-05-27 22:35:00
'^' 是 right associative operator
作者: wens (文思)   2007-05-27 22:37:00
说真的 我是google associativity 才知道的 XD还有啊... C 里面的 ^ 是 xor 喔XD
楼主: finalwave (吃火球赚钱)   2007-05-27 22:41:00
C里面是xor 但现在翻译的语言是pascal? 有点忘了ORZ那在这个语言里面^代表什么意思? 次方吗?
作者: sophialiege (with friends)   2007-05-27 22:47:00
作者: borisC (哀哀人)   2007-05-28 01:33:00
次方的优先应该比负数优先吧??
作者: sophialiege (with friends)   2007-05-28 11:30:00
负数应该比^优先 -2^2 = 4 != -4不过若是减号就刚好相反
作者: usoko (time to face reality)   2007-05-28 11:56:00
那如果是-2^(1/2)的话?@@
作者: sophialiege (with friends)   2007-05-28 14:05:00
如果你要implement的话, 那就是1.414i

Links booklink

Contact Us: admin [ a t ] ucptt.com