递归下降的表达式解析器

此算法用java实现

1.标识符:如“1+(22-33)*44”,标识符共有9个,分别为1,+, (, 22, -,33, ), *, 44,共计9个

2.提取标识符代码:

//得到标识符 private static void getToken() { token = ""; tokenType = NONE; if (stringIndex == string.length()) { token += EOF; tokenType = NONE; return; } if (isDelimiter(string.charAt(stringIndex))) { token += string.charAt(stringIndex); stringIndex++; tokenType = DELIMITER; return; } while (stringIndex != string.length() && !isDelimiter(string.charAt(stringIndex))) { token += string.charAt(stringIndex); stringIndex++; } tokenType = NUMBER; } //判断字符是否为分隔符 private static boolean isDelimiter(char ch) { if ("+-*/()".indexOf(ch) != -1) { return true; } return false; }

每次调用getToken()提取下一个标识符

3.所谓递归,指圆括号内表达式的值的计算方法与整个表达式值计算方法相同。所谓下降,每个函数处理优先级相同的运算符

具体下载网址:http://download.csdn.net/source/2670793

有问题可加我qq:773839970 或发email 非诚勿扰

你可能感兴趣的:(算法与数据结构,token,email,算法,java,qq)