//print_stmt: 'print' ( [ expression (',' expression)* [','] ] | '>>' expression [ (',' expression)+ [','] ] ) private PrintStatement ParsePrintStmt() { Eat(TokenKind.KeywordPrint); string printWhiteSpace = _tokenWhiteSpace; var start = GetStart(); Expression dest = null; PrintStatement ret; string rightShiftWhiteSpace = null; string theCommaWhiteSpace = null; bool needNonEmptyTestList = false; int end = 0; if (MaybeEat(TokenKind.RightShift)) { rightShiftWhiteSpace = _tokenWhiteSpace; dest = ParseExpression(); if (MaybeEat(TokenKind.Comma)) { theCommaWhiteSpace = _tokenWhiteSpace; needNonEmptyTestList = true; end = GetEnd(); } else { ret = new PrintStatement(dest, new Expression[0], false); if (_verbatim) { AddPreceedingWhiteSpace(ret, printWhiteSpace); AddSecondPreceedingWhiteSpace(ret, rightShiftWhiteSpace); } ret.SetLoc(start, GetEnd()); return ret; } } bool trailingComma = false; List<string> commaWhiteSpace = null; Expression[] exprs; if (!NeverTestToken(PeekToken())) { var expr = ParseExpression(); if (!MaybeEat(TokenKind.Comma)) { exprs = new[] { expr }; } else { List<Expression> exprList = ParseTestListAsExpr(expr, out commaWhiteSpace, out trailingComma); exprs = exprList.ToArray(); } } else { if (needNonEmptyTestList) { ReportSyntaxError(start, end, "print statement expected expression to be printed"); exprs = new[] { Error("") }; } else { exprs = new Expression[0]; } } ret = new PrintStatement(dest, exprs, trailingComma); if (_verbatim) { AddPreceedingWhiteSpace(ret, printWhiteSpace); AddSecondPreceedingWhiteSpace(ret, rightShiftWhiteSpace); AddThirdPreceedingWhiteSpace(ret, theCommaWhiteSpace); if (commaWhiteSpace != null) { AddListWhiteSpace(ret, commaWhiteSpace.ToArray()); } } ret.SetLoc(start, GetEnd()); return ret; }
public override bool Walk(PrintStatement node) { CanComplete = IsActualExpression(node.Expressions); CommitByDefault = true; return base.Walk(node); }
public override bool Walk(PrintStatement node) { return base.Walk(node); }
public override bool Walk(PrintStatement node) { UpdateLineInfo(node); return base.Walk(node); }
public override bool Walk(PrintStatement node) { UpdateChildRanges(node); return base.Walk(node); }
public override void PostWalk(PrintStatement node) { PostWalkWorker(node); }
// PrintStatement public override bool Walk(PrintStatement node) { return ShouldWalkWorker(node); }