public override void VisitLabelstatementNode(LabelStatementNode l)
 {
     PreVisit(l);
     l.Label.Visit(this);
     l.Stat.Visit(this);
     PostVisit(l);
 }
 public override void VisitLabelstatementNode(LabelStatementNode l)
 {
     Text += IndentStr();
     l.Label.Visit(this);
     Text += ": ";
     l.Stat.Visit(this);
 }
Beispiel #3
0
        public override void VisitLabelstatementNode(LabelStatementNode l)
        {
            var instructionIndex = Instructions.Count;

            l.Stat.Visit(this);
            Instructions[instructionIndex].Label = l.Label.Num.ToString();
        }
Beispiel #4
0
        public override void VisitLabelstatementNode(LabelStatementNode l)
        {
            var instructionIndex = Instructions.Count;

            // Чтобы не затиралась временная метка у while
            if (l.Stat is WhileNode)
            {
                GenCommand("", "noop", "", "", "");
            }
            l.Stat.Visit(this);
            Instructions[instructionIndex].Label = l.Label.Num.ToString();
        }
Beispiel #5
0
        private Statement BindLabelStatement(LabelStatementNode node)
        {
            var name = node.Label.Identifier.Text;

            if (Function == null)
            {
                diagnostics.ReportInvalidLabelDeclaration(node.MainToken, name);
                return(new InvalidStatement());
            }

            var label = new LabelSymbol(name);

            if (!Scope.TryDeclareLabel(label))
            {
                diagnostics.ReportSymbolAlreadyDeclared(node.MainToken, name, "Label");
            }

            return(new LabelStatement(Scope, label));
        }
Beispiel #6
0
 public virtual void VisitLabelstatementNode(LabelStatementNode l)
 {
 }