这里只给出语法分析器的关键代码 /** * 自顶向下(递归下降方法)的语法分析器 * AUTHOR:方剑冰 * DATE:2009.12.7 * * 语法规则: * stmt → BEGIN sentences end # * sentences → sent ; sentences * | ε * sent → evaluate * evalute → ID := expr * expr → item + item * | item - item * | item * item → gene * gene * | gene / gene * | gene * gene → ID * | NUM * | ( expr ) */ package parser; import lexer.Token; import lexer.Tag; import lexer.main; public class Parser { private static Token lookahead; //记录向前看的第一个Token private static int index; //标识现在所取的Token编号 private static int num; //code中总共的Token数目 public Parser(){ index = 0; num = main.tokens.size(); if(index < num) lookahead = (Token)main.tokens.get(index++); else return; } public boolean stmt(){ return( match(Tag.BEGIN) && sent