比如:程序->分程序。那么,我写两个函数,pro()和subPro()因为程序只能推出分程序,那么我在pro()方法中的第一句,便直接调用subPro()函数来进行分析。这样递归下降,并留出适当的出口,如分析因子中的id和num,或者分析其他元素中的id和num等,这样就OK了。
建议你自己写,写出来了对你有好处。
编程原理这个东西不是一言两语说的清楚的,你自己去看一下《解释器构造及实践》这本书中的例子吧。
Firstvt和Lastvt是为了画算符优先关系表的(就是表里面填优先大于小于等于的那个)。然后要注意他们可都是终结符的集合。
Firstvt
找Firstvt的三条规则:如果要找A的Firstvt,A的候选式中出现:
A->a.......,即以终结符开头,该终结符入Firstvt
A->B.......,即以非终结符开头,该非终结符的Firstvt入A的Firstvt
A->Ba.....,即先以非终结符开头,紧跟终结符,则终结符入Firstvt
Lastvt
找Lastvt的三条规则:如果要找A的Lastvt,A的候选式中出现:
A->.......a,即以终结符结尾,该终结符入Lastvt
A->.......B,即以非终结符结尾,该非终结符的Lastvt入A的Lastvt
A->.....aB,即先以非终结符结尾,前面是终结符,则终结符入Firstvt
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)