日期:2014-05-20  浏览次数:20863 次

java做语法分析程序碰到的几个问题,请教下大家
小弟最近想用java做个语法分析程序,但有几个问题没弄明白,请教下各位
判断表达式语句     如   x=2*i+j/2     这样的语句是否为正确的语句   可以用递归下降分析程序判断
但是如果是for(int   i=0;i <10;i++){}     或者while(true){}这样的语句   该怎么判断是合法的句子呢?


------解决方案--------------------
java中的判断符号是==,以前你是学vb的吧?至于for和while,前者定义i都在里面当然不会错了,不要在里面有数组越界就好,后面那个也没有语法错误,只要你不要造成死循环就好了,(有些场合死循环也无所谓,比如网络程序中的端口接受程序,即socket程序)
------解决方案--------------------
在Java中int等数据类型与boolean是有能类型转换的。

所以判断还是要要boolean型的表达式
------解决方案--------------------
for 和 while 的处理也一样的

for(int i=0;i <10;i++){}

当分析的语句中出现for关键字时,先取整个句子,然后从for()中按分号提取表达式,接着分别递归下降判断表达合法,如果都合法就可以规约成

for(E;E;E) {}

就可以识别了

while也一样

应该很简单吧
------解决方案--------------------
请看com.sun.tools.javac.parser.Parser类
LL(1)文法,递归下降,运算符优先级等等等等。。。。。。
你没想到的问题里面也有