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"); }
protected LanguageNode(LanguageNode node) : base(node) { }