示例#1
0
文件: Parser.cs 项目: borota/JTVS
 //exec_stmt: 'exec' expr ['in' expression [',' expression]]
 private ExecStatement ParseExecStmt()
 {
     Eat(TokenKind.KeywordExec);
     string execWhiteSpace = _tokenWhiteSpace;
     var start = GetStart();
     Expression code, locals = null, globals = null;
     code = ParseExpr();
     string inWhiteSpace = null, commaWhiteSpace = null;
     if (MaybeEat(TokenKind.KeywordIn)) {
         inWhiteSpace = _tokenWhiteSpace;
         globals = ParseExpression();
         if (MaybeEat(TokenKind.Comma)) {
             commaWhiteSpace = _tokenWhiteSpace;
             locals = ParseExpression();
         }
     }
     ExecStatement ret = new ExecStatement(code, locals, globals);
     if (_verbatim) {
         AddPreceedingWhiteSpace(ret, execWhiteSpace);
         AddSecondPreceedingWhiteSpace(ret, inWhiteSpace);
         AddThirdPreceedingWhiteSpace(ret, commaWhiteSpace);
     }
     ret.SetLoc(start, GetEnd());
     return ret;
 }
示例#2
0
 // ExecStatement
 public override bool Walk(ExecStatement node)
 {
     return ShouldWalkWorker(node);
 }
示例#3
0
 public override bool Walk(ExecStatement node)
 {
     UpdateChildRanges(node);
     return base.Walk(node);
 }
示例#4
0
 public override void PostWalk(ExecStatement node)
 {
     PostWalkWorker(node);
 }