public override void Interpret(Context.Context context) { // 循环处理Context中的标记 while (true) { // 如果已经没有任何标记,则退出解释 if (context.GetCurrentToken() == null) { break; } // 如果标记为END,则不解释END并结束本次解释过程,可以继续之后的解释 else if (context.GetCurrentToken().Equals("END", StringComparison.OrdinalIgnoreCase)) { context.SkipToken("END"); break; } // 如果为其它标记,则解释标记并加入命令集合 else { Node node = new CommandNode(); node.Interpret(context); nodeList.Add(node); } } }
public override void Interpret(Context.Context context) { context.SkipToken("LOOP"); number = context.GetCurrentNumber(); context.NextToken(); // 循环语句中的表达式 commandNode = new ExpressionNode(); commandNode.Interpret(context); }
public override void Interpret(Context.Context context) { name = context.GetCurrentToken(); context.SkipToken(name); if (!name.Equals("PRINT", StringComparison.OrdinalIgnoreCase) && !name.Equals("BREAK", StringComparison.OrdinalIgnoreCase) && !name.Equals("SPACE", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("非法命令!"); } if (name.Equals("PRINT", StringComparison.OrdinalIgnoreCase)) { text = context.GetCurrentToken(); context.NextToken(); } }