private void VisitLabeledStatement(labeled_statement ls) { bw.Write(members[ls.label]); WriteDebugInfo(ls.location); VisitStatement(ls.statement); }
private void VisitLabeledStatement(labeled_statement stmt) { VisitStatement(stmt.statement); }
public override void visit(SyntaxTree.labeled_statement _labeled_statement) { convertion_data_and_alghoritms.check_node_parser_error(_labeled_statement.label_name); SymbolInfo si = context.CurrentScope.FindOnlyInScopeAndBlocks(_labeled_statement.label_name.name); if (_labeled_statement.to_statement is SyntaxTree.var_statement) { AddError(get_location(_labeled_statement.label_name), "LABELED_DECLARATION_NOT_ALLOWED"); } if (si == null) { AddError(new UndefinedNameReference(_labeled_statement.label_name.name, get_location(_labeled_statement.label_name))); } label_node lab = si.sym_info as label_node; if (lab == null) { AddError(get_location(_labeled_statement.label_name), "IDENT_{0}_IS_NOT_LABEL", _labeled_statement.label_name.name); } if (lab.is_defined) { AddError(get_location(_labeled_statement.label_name), "LABEL_{0}_REDEFINED", _labeled_statement.label_name.name); } lab.is_defined = true; lab.comprehensive_code_block = context.block_stack.Peek(); foreach (goto_statement gs in lab.goto_statements) { if (!context.check_can_goto(lab.comprehensive_code_block, gs.comprehensive_code_block)) { //AddError(gs.location, "BLOCKED_LABEL_{0}_GOTO", lab.name); } } convertion_data_and_alghoritms.check_node_parser_error(_labeled_statement.to_statement); statement_node snode = ret.visit((SyntaxTree.statement)_labeled_statement.to_statement); labeled_statement las = new labeled_statement(lab, snode, get_location(_labeled_statement)); ret.return_value((statement_node)las); }