作者finalwave (小龍)
看板b93902HW
標題[討論] 算數 assign
時間Sun May 27 22:24:21 2007
不知道問題出在哪
只要是那種很複雜尤其是有 ^ 的算式 一定會出錯@@
我的寫法是
前面
%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是各種變數名)
這樣哪裡有寫錯啊@@
一直找不出來~"~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.170.84
→ sophialiege:'^' 是 right associative operator 05/27 22:35
推 wens:說真的 我是google associativity 才知道的 XD 05/27 22:37
推 wens:還有啊... C 裡面的 ^ 是 xor 喔XD 05/27 22:37
推 finalwave:C裡面是xor 但現在翻譯的語言是pascal? 有點忘了ORZ 05/27 22:41
→ finalwave:那在這個語言裡面^代表什麼意思? 次方嗎? 05/27 22:42
推 sophialiege:對 05/27 22:47
推 borisC:次方的優先應該比負數優先吧?? 05/28 01:33
推 sophialiege:負數應該比^優先 -2^2 = 4 != -4 05/28 11:30
推 sophialiege:不過若是減號就剛好相反 05/28 11:32
推 usoko:那如果是-2^(1/2)的話?@@ 05/28 11:56
→ sophialiege:如果你要implement的話, 那就是1.414i 05/28 14:05