小弟最近想用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)文法,递归下降,运算符优先级等等等等。。。。。。
你没想到的问题里面也有