public override dynamic Visit(WriteStatementNode node) { for (var i = 0; i < node.Arguments.Count; i++) { if (node.Arguments[i] is LValueNode lvn) { node.Arguments[i] = new ValueOfNode { LValue = lvn, Type = lvn.Type, Token = lvn.Token }; } var argument = node.Arguments[i]; argument.Accept(this); // var id = ((IdNode) argument).Id.Accept(this); if (!WriteStatementTypes.Includes(argument.Type.PrimitiveType)) { Context.ErrorService.Add( ErrorType.Unknown, argument.Token, $"invalid parameter of type {argument.Type.PrimitiveType} for writeln" ); } // throw new Exception($"invalid parameter of type {argument.Type.PrimitiveType} for writeln"); } return(null); }
public override dynamic Visit(WriteStatementNode node) { var newArguments = node.Arguments.Select(Replace).ToList(); node.Arguments = newArguments; return(null); }
public abstract dynamic Visit(WriteStatementNode node);
public override dynamic Visit(WriteStatementNode node) { CurrentBlock.AddStatement(node); return(null); }
public SymConst Visit(WriteStatementNode node) { throw EvalException(); }