internal OutputStatement GenOutputStatement(Program program, Expression expr) { program.Require(GlobalFunction.PRNT); var os = new OutputStatement() { Value = expr }; return(os); }
internal OutputStatement GenOutputStatement(Program program, Variable v) { program.Require(GlobalFunction.PRNT); var os = new OutputStatement() { Value = GenVariableInvocationExpression(program, v, _options.MaxExpressionDepth) }; return(os); }
public static Expression Analyze(AnalysisContext analysisContext, OutputStatement node) { List<Expression> expressionsToWrite = new List<Expression>(); foreach (var expr in node.ExpressionsToWrite) { Expression expressionToWrite = ExpressionAnalyzer.Analyze(analysisContext, expr); Expression writeToOutputExpression = analysisContext.CreateWriteToOutputExpression(expressionToWrite); expressionsToWrite.Add(writeToOutputExpression); } DebugAssert.IsGreater(0, expressionsToWrite.Count, "number of output expressions should have been > 0"); return Expression.Block(expressionsToWrite); }
public override void BeforeVisit(OutputStatement node) { base.AfterVisit(node); _result = OutputStatementAnalyzer.Analyze(_analysisContext, node); }