我想標記由整數,浮點數,運算符,函數,變量和括號組成的字符串。下面的例子應該點亮的問題本質:用於複雜數學表達式的高級標記器
當前狀態:
String infix = 4*x+5.2024*(Log(x,y)^z)-300.12
期望狀態:
String tokBuf[0]=4
String tokBuf[1]=*
String tokBuf[2]=x
String tokBuf[3]=+
String tokBuf[4]=5.2024
String tokBuf[5]=*
String tokBuf[6]=(
String tokBuf[7]=Log
String tokBuf[8]=(
String tokBuf[9]=x
String tokBuf[10]=,
String tokBuf[11]=y
String tokBuf[12]=)
String tokBuf[13]=^
String tokBuf[14]=z
String tokBuf[15]=)
String tokBuf[16]=-
String tokBuf[17]=300.12
所有的技巧和方法,將不勝感激。
使用類似[ANTLR(http://www.antlr.org/)來定義喲語法你的表達併爲它生成一個解析器。 – 2013-05-11 15:23:23
yacc是另一個好工具。很可能你想要一個符號圖而不是數組。 – 2013-05-11 15:28:31
如果您正在構建表達式評估器,請在嘗試之前使用GNU libmatheval或muParse :) – 2013-05-11 15:30:14