protected override BNode InnerClone(Dictionary <Value, Value> originalValueForClonedValue) { GotoNode gotoNode = CreateInstance <GotoNode>(); gotoNode.position = CloneValue(originalValueForClonedValue, position); return(gotoNode); }
protected override BNode InnerClone(Dictionary <Value, Value> originalValueForClonedValue) { GotoNode cloned = CreateInstance <GotoNode>(); cloned.destPos = destPos; return(cloned); }
public override void VisitGotoNode(GotoNode gt) { TACodeContainer.PushNode(new TacGotoNode() { IsUtility = false, TargetLabel = "l" + gt.Label }); }
public override void Visit(GotoNode node) { WriteIndent(); ProgramBuilder.Append("goto "); ProgramBuilder.Append(node.Label); ProgramBuilder.Append(";"); NewLine(); }
public override void VisitGotoNode(GotoNode g) => GenCommand("", "goto", g.Label.Num.ToString(), "", "");
public virtual XzaarExpression Visit(GotoNode @goto) { return(null); }
public virtual void VisitGotoNode(GotoNode g) { }
public override void VisitGotoNode(GotoNode g) { PreVisit(g); g.Label.Visit(this); PostVisit(g); }
public override void VisitGotoNode(GotoNode g) => GenCommand("", "goto", g.Label.Num.ToString(CultureInfo.InvariantCulture), "", "");
public override void VisitGotoNode(GotoNode g) { Text += IndentStr() + "goto " + g.Id.Name; }
public override void VisitGotoNode(GotoNode g) { Text += IndentStr() + "goto "; g.Label.Visit(this); Text += ";"; }
public virtual void Visit(GotoNode node) { }
public override void Visit(GotoNode node) { OnEnter(node); base.Visit(node); OnExit(node); }
public virtual GotoNode Visit(GotoNode node) { return(node); }
protected override void Update() { if (Unit == null || Operation == null) { return; } if (underlay.sprite != null) { float target_image_alpha = 0; float target_underlay_alpha = 1; if (this.IsPointedAt()) { target_image_alpha = 1; target_underlay_alpha = 0.1f; } Image.color = Image.color.AlphaChangedTo( Mathf.Lerp(Image.color.a, target_image_alpha, Time.deltaTime * 5)); underlay.color = underlay.color.AlphaChangedTo( Mathf.Lerp(underlay.color.a, target_underlay_alpha, Time.deltaTime * 5)); } description_text.gameObject.SetActive(this.IsPointedAt()); SelectionOverlay.gameObject.SetActive(IsSelected); InputNode.gameObject.SetActive(Operation.TakesInput); OutputNode.gameObject.SetActive(Operation.HasOutput); GotoNode.gameObject.SetActive(Operation.TakesGoto); if (IsInProgramInterface) { if (InputNode.VariableTile != null) { Operation.Input.PrimaryVariableName = InputNode.VariableTile.Variable.Name; } if (OutputNode.VariableTile != null) { Operation.Output.PrimaryVariableName = OutputNode.VariableTile.Variable.Name; } if (GotoNode.GotoOperationTile != null) { Operation.Goto = GotoNode.GotoOperationTile.Operation; } } else if (IsInOperationMenu && IsSelected) { bool is_complete = false; if (operation.TakesGoto) { is_complete = GotoNode.GotoOperationTile != null; } else if ((!operation.TakesInput || InputNode.VariableTile != null) && (!operation.HasOutput || OutputNode.VariableTile != null)) { is_complete = true; } if (is_complete) { Operation operation = Operation.Instantiate(); if (operation.TakesInput && InputNode.VariableTile != null) { operation.Input.PrimaryVariableName = InputNode.VariableTile.Variable.Name; } if (operation.HasOutput && OutputNode.VariableTile != null) { operation.Output.PrimaryVariableName = OutputNode.VariableTile.Variable.Name; } if (operation.TakesGoto && GotoNode.GotoOperationTile != null) { operation.Goto = GotoNode.GotoOperationTile.Operation; } Unit.Program.Add(operation); if (Input.GetKey(KeyCode.LeftShift)) { if (Unit.Program.Next == null) { Unit.Program.Next = operation; } } else { Unit.Program.Next = operation; if (operation is Task) { Unit.Task = null; operation.Execute(Unit); } } InputNode.VariableName = null; InputNode.IsSelected = false; OutputNode.VariableName = null; OutputNode.IsSelected = false; GotoNode.GotoOperationTile = null; GotoNode.IsSelected = false; IsSelected = false; } } if (!InputUtility.DidDragOccur && this.IsPointedAt() && !InputNode.IsPointedAt() && !OutputNode.IsPointedAt() && !GotoNode.IsPointedAt() && this.UseMouseLeftRelease()) { if (IsInOperationMenu) { IsSelected = true; } else if (IsInProgramInterface) { Unit.Program.Next = Operation; Operation.Execute(Unit); } } if (InputUtility.WasMouseRightReleased) { if (IsSelected) { IsSelected = false; } } if (IsSelected) { if (Operation.TakesInput && InputNode.VariableTile == null && !Operation.TakesGoto) { if (!InputNode.IsSelected) { InputNode.IsSelected = true; } } else if (Operation.HasOutput && OutputNode.VariableTile == null) { if (!OutputNode.IsSelected) { OutputNode.IsSelected = true; } } else if (Operation.TakesGoto && GotoNode.GotoOperationTile == null) { if (!GotoNode.IsSelected) { GotoNode.IsSelected = true; } } } base.Update(); }
public override void VisitGotoNode(GotoNode gt) { Text += gt.ToString(); }
public ITreeNode Program() { ITreeNode programNode = new ErrorNode(); switch (curTokenType) { case TokenType.BEGINBL: Match(ref matchToken, TokenType.BEGINBL); ITreeNode someStatement = Program(); BlockNode block = new BlockNode(); block.addStatement(someStatement); while (curTokenType != TokenType.ENDBL) { someStatement = Program(); block.addStatement(someStatement); } Match(ref matchToken, TokenType.ENDBL); programNode = block; break; case TokenType.LABEL: Match(ref matchToken, TokenType.LABEL); LabelNode labeledBlock = new LabelNode(matchToken.getValue()); ITreeNode labeledStatement; do { labeledStatement = Program(); labeledBlock.addStatement(labeledStatement); } while (curTokenType != TokenType.EOF); programNode = labeledBlock; break; case TokenType.INTDEC: Match(ref matchToken, TokenType.INTDEC); Match(ref matchToken, TokenType.ID); programNode = new IdentifierDeclarationNode(IdentifierType.INT, matchToken.getValue()); Match(ref matchToken, TokenType.EOS); break; case TokenType.BOOLDEC: Match(ref matchToken, TokenType.BOOLDEC); Match(ref matchToken, TokenType.ID); programNode = new IdentifierDeclarationNode(IdentifierType.BOOL, matchToken.getValue()); Match(ref matchToken, TokenType.EOS); break; case TokenType.FOR: Match(ref matchToken, TokenType.FOR); Match(ref matchToken, TokenType.LPAREN); AssignmentNode init = (AssignmentNode)Program(); AssignmentNode step = (AssignmentNode)Program(); BooleanExpressionNode condition = (BooleanExpressionNode)BooleanExpression(); Match(ref matchToken, TokenType.RPAREN); BlockNode forBody = (BlockNode)Program(); programNode = new ForNode(init, step, condition, forBody); break; /*case TokenType.FUN: Match(ref matchToken, TokenType.FUN); IdentifierNode id = (IdentifierNode)Factor(); programNode = new FunctionNode(id); Match(ref matchToken, TokenType.EOS); break;*/ case TokenType.GOTO: Match(ref matchToken, TokenType.GOTO); Match(ref matchToken, TokenType.ID); IdentifierNode gotoLabel = new IdentifierNode(matchToken.getValue(), IdentifierType.LABEL); programNode = new GotoNode(gotoLabel); Match(ref matchToken, TokenType.EOS); break; case TokenType.ID: Match(ref matchToken, TokenType.ID); IdentifierNode assignId = new IdentifierNode(matchToken.getValue(), IdentifierType.UNKNOWN); Match(ref matchToken, TokenType.ASSIGN); BooleanExpressionNode assignValue = (BooleanExpressionNode)BooleanExpression(); programNode = new AssignmentNode(assignId, assignValue); Match(ref matchToken, TokenType.EOS); break; case TokenType.IF: Match(ref matchToken, TokenType.IF); ITreeNode thenBranch; ITreeNode elseBranch; Match(ref matchToken, TokenType.LPAREN); BooleanExpressionNode ifCondition = (BooleanExpressionNode)BooleanExpression(); Match(ref matchToken, TokenType.RPAREN); Match(ref matchToken, TokenType.THEN); thenBranch = (BlockNode)Program(); if (curTokenType == TokenType.ELSE) { Match(ref matchToken, TokenType.ELSE); elseBranch = (BlockNode)Program(); } else { elseBranch = new BlankNode(); } programNode = new IfNode(ifCondition, thenBranch, elseBranch); break; /*case TokenType.LET: Match(ref matchToken, TokenType.LET); IdentifierNode shortId = (IdentifierNode)Factor(); Match(ref matchToken, TokenType.ASSIGN); BooleanExpressionNode subst = (BooleanExpressionNode)BooleanExpression(); Match(ref matchToken, TokenType.IN); BooleanExpressionNode target = (BooleanExpressionNode)BooleanExpression(); programNode = new LetNode(shortId, subst, target); Match(ref matchToken, TokenType.EOS); break;*/ case TokenType.PRINT: Match(ref matchToken, TokenType.PRINT); Match(ref matchToken, TokenType.LPAREN); BooleanExpressionNode printArgument = (BooleanExpressionNode)BooleanExpression(); Match(ref matchToken, TokenType.RPAREN); programNode = new PrintNode(printArgument); Match(ref matchToken, TokenType.EOS); break; case TokenType.WHILE: Match(ref matchToken, TokenType.WHILE); Match(ref matchToken, TokenType.LPAREN); BooleanExpressionNode whileCondition = (BooleanExpressionNode)BooleanExpression(); Match(ref matchToken, TokenType.RPAREN); BlockNode whileBody = (BlockNode)Program(); programNode = new WhileNode(whileCondition, whileBody); break; case TokenType.EOF: programNode = new BlankNode(); break; default: Expect(TokenType.UNKNOWN, lookAheadToken); break; } return programNode; }