http://www.codeguru.com/cpp_mfc/pascal.shtml
Mini Pascal Compiler

解决方案 »

  1.   

    在吕映芝的《编译原理》上有一段是:属性文法的翻译
    简单赋值的是:

    s->id = E {p = lookup(id.name);
                   
               if p=nil then             emit(p = E.place)              else error} 
    在这里的
    lookup(id.name)是在你的符号表里面查id的name是否存在。
    emit(expression)是个用来在文件里面生成中间代码的函数。
    expression 指表达式,如p=E.place.
      

  2.   

    而像
    E->E1+E2
    {
    E.place=newtemp;
    emit(E.place=E1.place+E2.place)
    }
    也是类似的。
    所有的二元表达式的运算都是类似的。
      

  3.   


    nowadays, people seldom do parser themselves. JavaCC. JLex. are easy to use.
    But if your project is just focused on a parser, you probably cannot use a parser generator.poor guy.
      

  4.   

    哦,不是这样的,我把贴子贴到这里不是我要做java的解释器,是想多让一些人看到而已。这只是project的一极小部分而已,但是是我现在的主要任务,当作练习编程。understand!