public override void CheckSemantics(Scope scope, Report report)
        {
            LanguageNode node = Parent as LanguageNode;

            while (node != null && !(node is IBreak))
            {
                if (node is ExprSeqNode)
                {
                    node.returnType = scope.FindType("void");
                    (node as ExprSeqNode).existsBreak = true;
                }

                if (node is FunctionDecNode)
                {
                    report.Add(Line, CharPositionInLine, "Ilegal Break");
                    returnType = scope.FindType("error");
                    return;
                }

                node = node.Parent as LanguageNode;
            }

            if (node == null)
            {
                report.Add(Line, CharPositionInLine, "Ilegal Break");
                returnType = scope.FindType("error");
                return;
            }

            loop       = node as IBreak;
            returnType = scope.FindType("void");
        }
Exemple #2
0
 protected LanguageNode(LanguageNode node) : base(node)
 {
 }