[討論] 算數 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