expressionparser.jj配置檔案:
---支援變數x、函式(sin,cos...)、簡潔乘法(如 3sin(x) 表示3乘以sin(x))
/**
*分析計算公式
* saber
*/ options
parser_begin(expressionparser)
package myexample;
/** new line translator. */
public class expressionparser
public expressionparser(string expression,double x)
/** main entry point. */
public static void main(string args ) throws parseexception }
parser_end(expressionparser)
skip :
token :
token :
token :
token :
/*次方*/
token :
token :
token:
/** 解析表示式 */
double parse() :
| < minus >
i=timesanddivide()
)*}/**基本運算單元**/
double primary():
|d=calculatorpar()
| < minus >d=primary()
| d=dofunction()
}/**乘法運算**/
double timesanddivide():
| < divide >
i=primary()
)* }
/**函式計算**/
double dofunction():
| < cos >
arg=calculatorpar() }
/*** 遇到數字,有4種情況:
* a. 數字後緊跟著圓弧,如3(3-2),標識3乘以(3-2)
* b. 數字後是函式,如3sin(3.14),表示3乘以sin(3.14)
* c. 數字後是變數x,如3x,表示3乘以x變數
* d. 其他情況,則直接返回當前數字
*/double donumber():
| d=dofunction())*}
/** * 如果是數字則直接返回數字,否則,是變數則返回變數的次方
**/double getnumber():(
< x > )*
|(
< x > )*
}/*計算圓弧內的表示式*/
double calculatorpar():
}
三元運算表示式分析
三元運算表示式的型別 int i 99 system.out.println true?a 99999 99999超出字元範圍,表示式的型別確定為int system.out.println true?a 99 99可以認為是字元常量,表示式的型別確定為char system.out.println...
Python 變數,運算表示式
變數 變數不需要先定義,可以直接複製使用 變數可重複儲存不同的資料型別 可同時為多個變數複製,用逗號隔開 a,b a b 不支援自增自減 變數引用計數 相同資料的賦值,會共享同一片空間位址,並非占用乙個新的位址單元,節約記憶體。使用sys模組下的getrefcount 函式檢視變數引用計數 impo...
運算表示式求值模板
表示式計算 使用方法 輸入合法的表示式,加減乘除,可以帶括號,用空格分開數字和符號,1為結束標誌,比如 2 5 3 1 注意 這是用來算具體答案的,不是轉化成字尾表示式輸出的,當然,思想是遞迴建立表示式樹,然後後序遍歷得逆波蘭式,然後用棧計算結果 模板 include include include...