Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
 public override void Interpret(Context.Context context)
 {
     context.SkipToken("LOOP");
     number = context.GetCurrentNumber();
     context.NextToken();
     // 循环语句中的表达式
     commandNode = new ExpressionNode();
     commandNode.Interpret(context);
 }
Ejemplo n.º 3
0
        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();
            }
        }