public override StatementNode VisitMemberAssignStatement([NotNull] CoronaParser.MemberAssignStatementContext context) { BuildValueAst valueVisitor = new BuildValueAst(); BuildExpressionAst exprVisitor = new BuildExpressionAst(); try { // Get GridPoint GridValueNode gridPoint = null; if (context.gridPoint() != null) { gridPoint = (GridValueNode)valueVisitor.Visit(context.gridPoint()); } // Get Member IdentifierValueNode memberID = new IdentifierValueNode(context.identifierValue().GetText()); // Get value ValueNode value; if (context.expr() != null) { value = exprVisitor.Visit(context.expr()); } else { value = new StringValueNode(context.STRING().GetText()); } return(new MemberAssignmentStatementNode(gridPoint, memberID, value)); } catch (TheLanguageErrorException e) { throw new TheLanguageErrorException("Member assignment statement", e); } }
public Cell Visit(GridValueNode node) { MathExpressionAstEvaluator exprVisitor = new MathExpressionAstEvaluator(); int x = exprVisitor.Visit(node.FirstD); int y = exprVisitor.Visit(node.SecondD); // Wrap around if out of bounds while (x >= sender.X_Max) { x -= sender.X_Max; } while (x < 0) { x += sender.X_Max; } while (y >= sender.Y_Max) { y -= sender.Y_Max; } while (y < 0) { y += sender.Y_Max; } return(sender.GetCell(new Pos(x, y))); }
public override StatementNode VisitGridAssignStatement([NotNull] CoronaParser.GridAssignStatementContext context) { BuildValueAst valueVisitor = new BuildValueAst(); try { IdentifierValueNode id = new IdentifierValueNode(context.ID().GetText()); GridValueNode gridpoint = (GridValueNode)valueVisitor.Visit(context.gridPoint()); return(new GridAssignmentStatementNode(gridpoint, id)); } catch (TheLanguageErrorException e) { throw new TheLanguageErrorException("Grid assignment statement", e); } }
public GridAssignmentStatementNode(GridValueNode gridPoint, IdentifierValueNode id) { GridPoint = gridPoint; Identifier = id; }
public MemberAssignmentStatementNode(GridValueNode gridPoint, IdentifierValueNode memberID, ValueNode value) { GridPoint = gridPoint; MemberID = memberID; Value = value; }