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

解决方案 »

  1.   

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

  2.   

    在Java中int等数据类型与boolean是有能类型转换的。所以判断还是要要boolean型的表达式
      

  3.   

    前面那个说错了是赋值语句,不是判断语句
    可能我没表达好吧,各位把我说的的理解错了,
    我想说的是 怎么判断 x=2*i+j/2  是一个合法的语句
    例如  x=i+j-+*i 或者 x=*i/j+  这就是一个不合法的语句  这个过程可以用递归下降程序来分析
    但是for(int i=0;i<10;i++){} 和  while(true){}  怎么判断他是合法的语句呢  用什么算法?
    小弟 做的是编译原理中的语法分析器~~~~
      

  4.   

    for 和 while 的处理也一样的for(int i=0;i<10;i++){}当分析的语句中出现for关键字时,先取整个句子,然后从for()中按分号提取表达式,接着分别递归下降判断表达合法,如果都合法就可以规约成for(E;E;E) {}就可以识别了while也一样应该很简单吧
      

  5.   

    请看com.sun.tools.javac.parser.Parser类
    LL(1)文法,递归下降,运算符优先级等等等等
    你没想到的问题里面也有