Exemplo n.º 1
0
        internal override Statement /*!*/ Analyze(Analyzer /*!*/ analyzer)
        {
            //
            // TODO: analyze reachability, restrict jumps inside blocks, ...
            //
            // goto x;
            // // unreachable
            // x:
            //

            if (analyzer.IsThisCodeUnreachable())
            {
                analyzer.ReportUnreachableCode(position);
                return(EmptyStmt.Unreachable);
            }

            Dictionary <VariableName, Statement> labels = analyzer.CurrentLabels;

            Statement stmt;

            if (labels.TryGetValue(labelName, out stmt))
            {
                LabelStmt label = stmt as LabelStmt;
                if (label != null)
                {
                    label.IsReferred = true;
                }
            }
            else
            {
                // add a stub (this node):
                labels.Add(labelName, this);
            }

            return(this);
        }
Exemplo n.º 2
0
 virtual public void VisitLabelStmt(LabelStmt x)
 {
     // x.Name
 }
Exemplo n.º 3
0
 virtual public void VisitLabelStmt(LabelStmt x)
 {
     // x.Name
 }
Exemplo n.º 4
0
 virtual public void VisitLabelStmt(LabelStmt x)
 {
     // nothing
 }
Exemplo n.º 5
0
 virtual public void VisitLabelStmt(LabelStmt x)
 {
     // nothing
 }