我想标记由整数,浮点数,运算符,函数,变量和括号组成的字符串。下面的例子应该点亮的问题本质:用于复杂数学表达式的高级标记器
当前状态:
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