pascalabcnet/SyntaxTree/tree/SyntaxTreeStreamReader.cs
Mikhalkovich Stanislav 3240593d2e Реализован foreach index
Исправлена ошибка for step
Дополнена справка по for step и foreach index
J,yjdkty ntrcnjdsq htlfrnjh? gjlcdtxbdf.obq ыеуз b штвуч rjyntrcnyj d hfvrf[ jlyjq cnhjrb
2022-02-26 12:33:53 +03:00

4526 lines
114 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/********************************************************************************************
Этот файл создан программой
PascalABC.NET: syntax tree generator v1.5(с) Водолазов Н., Ткачук А.В., Иванов С.О., 2007
Вручную не редактировать!
*********************************************************************************************/
using System;
using System.IO;
using System.Collections.Generic;
namespace PascalABCCompiler.SyntaxTree
{
public class SyntaxTreeStreamReader:IVisitor
{
public BinaryReader br;
public syntax_tree_node _construct_node(Int16 node_class_number)
{
switch(node_class_number)
{
case 0:
return new expression();
case 1:
return new syntax_tree_node();
case 2:
return new statement();
case 3:
return new statement_list();
case 4:
return new ident();
case 5:
return new assign();
case 6:
return new bin_expr();
case 7:
return new un_expr();
case 8:
return new const_node();
case 9:
return new bool_const();
case 10:
return new int32_const();
case 11:
return new double_const();
case 12:
return new subprogram_body();
case 13:
return new addressed_value();
case 14:
return new type_definition();
case 15:
return new roof_dereference();
case 16:
return new named_type_reference();
case 17:
return new variable_definitions();
case 18:
return new ident_list();
case 19:
return new var_def_statement();
case 20:
return new declaration();
case 21:
return new declarations();
case 22:
return new program_tree();
case 23:
return new program_name();
case 24:
return new string_const();
case 25:
return new expression_list();
case 26:
return new dereference();
case 27:
return new indexer();
case 28:
return new for_node();
case 29:
return new repeat_node();
case 30:
return new while_node();
case 31:
return new if_node();
case 32:
return new ref_type();
case 33:
return new diapason();
case 34:
return new indexers_types();
case 35:
return new array_type();
case 36:
return new label_definitions();
case 37:
return new procedure_attribute();
case 38:
return new typed_parameters();
case 39:
return new formal_parameters();
case 40:
return new procedure_attributes_list();
case 41:
return new procedure_header();
case 42:
return new function_header();
case 43:
return new procedure_definition();
case 44:
return new type_declaration();
case 45:
return new type_declarations();
case 46:
return new simple_const_definition();
case 47:
return new typed_const_definition();
case 48:
return new const_definition();
case 49:
return new consts_definitions_list();
case 50:
return new unit_name();
case 51:
return new unit_or_namespace();
case 52:
return new uses_unit_in();
case 53:
return new uses_list();
case 54:
return new program_body();
case 55:
return new compilation_unit();
case 56:
return new unit_module();
case 57:
return new program_module();
case 58:
return new hex_constant();
case 59:
return new get_address();
case 60:
return new case_variant();
case 61:
return new case_node();
case 62:
return new method_name();
case 63:
return new dot_node();
case 64:
return new empty_statement();
case 65:
return new goto_statement();
case 66:
return new labeled_statement();
case 67:
return new with_statement();
case 68:
return new method_call();
case 69:
return new pascal_set_constant();
case 70:
return new array_const();
case 71:
return new write_accessor_name();
case 72:
return new read_accessor_name();
case 73:
return new property_accessors();
case 74:
return new simple_property();
case 75:
return new index_property();
case 76:
return new class_members();
case 77:
return new access_modifer_node();
case 78:
return new class_body_list();
case 79:
return new class_definition();
case 80:
return new default_indexer_property_node();
case 81:
return new known_type_definition();
case 82:
return new set_type_definition();
case 83:
return new record_const_definition();
case 84:
return new record_const();
case 85:
return new record_type();
case 86:
return new enum_type_definition();
case 87:
return new char_const();
case 88:
return new raise_statement();
case 89:
return new sharp_char_const();
case 90:
return new literal_const_line();
case 91:
return new string_num_definition();
case 92:
return new variant();
case 93:
return new variant_list();
case 94:
return new variant_type();
case 95:
return new variant_types();
case 96:
return new variant_record_type();
case 97:
return new procedure_call();
case 98:
return new class_predefinition();
case 99:
return new nil_const();
case 100:
return new file_type_definition();
case 101:
return new constructor();
case 102:
return new destructor();
case 103:
return new inherited_method_call();
case 104:
return new typecast_node();
case 105:
return new interface_node();
case 106:
return new implementation_node();
case 107:
return new diap_expr();
case 108:
return new block();
case 109:
return new proc_block();
case 110:
return new array_of_named_type_definition();
case 111:
return new array_of_const_type_definition();
case 112:
return new literal();
case 113:
return new case_variants();
case 114:
return new diapason_expr();
case 115:
return new var_def_list_for_record();
case 116:
return new record_type_parts();
case 117:
return new property_array_default();
case 118:
return new property_interface();
case 119:
return new property_parameter();
case 120:
return new property_parameter_list();
case 121:
return new inherited_ident();
case 122:
return new format_expr();
case 123:
return new initfinal_part();
case 124:
return new token_info();
case 125:
return new raise_stmt();
case 126:
return new op_type_node();
case 127:
return new file_type();
case 128:
return new known_type_ident();
case 129:
return new exception_handler();
case 130:
return new exception_ident();
case 131:
return new exception_handler_list();
case 132:
return new exception_block();
case 133:
return new try_handler();
case 134:
return new try_handler_finally();
case 135:
return new try_handler_except();
case 136:
return new try_stmt();
case 137:
return new inherited_message();
case 138:
return new external_directive();
case 139:
return new using_list();
case 140:
return new jump_stmt();
case 141:
return new loop_stmt();
case 142:
return new foreach_stmt();
case 143:
return new addressed_value_funcname();
case 144:
return new named_type_reference_list();
case 145:
return new template_param_list();
case 146:
return new template_type_reference();
case 147:
return new int64_const();
case 148:
return new uint64_const();
case 149:
return new new_expr();
case 150:
return new where_type_specificator_list();
case 151:
return new where_definition();
case 152:
return new where_definition_list();
case 153:
return new sizeof_operator();
case 154:
return new typeof_operator();
case 155:
return new compiler_directive();
case 156:
return new operator_name_ident();
case 157:
return new var_statement();
case 158:
return new question_colon_expression();
case 159:
return new expression_as_statement();
case 160:
return new c_scalar_type();
case 161:
return new c_module();
case 162:
return new declarations_as_statement();
case 163:
return new array_size();
case 164:
return new enumerator();
case 165:
return new enumerator_list();
case 166:
return new c_for_cycle();
case 167:
return new switch_stmt();
case 168:
return new type_definition_attr_list();
case 169:
return new type_definition_attr();
case 170:
return new lock_stmt();
case 171:
return new compiler_directive_list();
case 172:
return new compiler_directive_if();
case 173:
return new documentation_comment_list();
case 174:
return new documentation_comment_tag();
case 175:
return new documentation_comment_tag_param();
case 176:
return new documentation_comment_section();
case 177:
return new token_taginfo();
case 178:
return new declaration_specificator();
case 179:
return new ident_with_templateparams();
case 180:
return new template_type_name();
case 181:
return new default_operator();
case 182:
return new bracket_expr();
case 183:
return new attribute();
case 184:
return new simple_attribute_list();
case 185:
return new attribute_list();
case 186:
return new function_lambda_definition();
case 187:
return new function_lambda_call();
case 188:
return new semantic_check();
case 189:
return new lambda_inferred_type();
case 190:
return new same_type_node();
case 191:
return new name_assign_expr();
case 192:
return new name_assign_expr_list();
case 193:
return new unnamed_type_object();
case 194:
return new semantic_type_node();
case 195:
return new short_func_definition();
case 196:
return new no_type_foreach();
case 197:
return new matching_expression();
case 198:
return new closure_substituting_node();
case 199:
return new sequence_type();
case 200:
return new modern_proc_type();
case 201:
return new yield_node();
case 202:
return new template_operator_name();
case 203:
return new semantic_addr_value();
case 204:
return new pair_type_stlist();
case 205:
return new assign_tuple();
case 206:
return new addressed_value_list();
case 207:
return new tuple_node();
case 208:
return new uses_closure();
case 209:
return new dot_question_node();
case 210:
return new slice_expr();
case 211:
return new no_type();
case 212:
return new yield_unknown_ident();
case 213:
return new yield_unknown_expression_type();
case 214:
return new yield_unknown_foreach_type();
case 215:
return new yield_sequence_node();
case 216:
return new assign_var_tuple();
case 217:
return new slice_expr_question();
case 218:
return new semantic_check_sugared_statement_node();
case 219:
return new sugared_expression();
case 220:
return new sugared_addressed_value();
case 221:
return new double_question_node();
case 222:
return new pattern_node();
case 223:
return new type_pattern();
case 224:
return new is_pattern_expr();
case 225:
return new match_with();
case 226:
return new pattern_case();
case 227:
return new pattern_cases();
case 228:
return new deconstructor_pattern();
case 229:
return new pattern_parameter();
case 230:
return new desugared_deconstruction();
case 231:
return new var_deconstructor_parameter();
case 232:
return new recursive_deconstructor_parameter();
case 233:
return new deconstruction_variables_definition();
case 234:
return new var_tuple_def_statement();
case 235:
return new semantic_check_sugared_var_def_statement_node();
case 236:
return new const_pattern();
case 237:
return new tuple_pattern_wild_card();
case 238:
return new const_pattern_parameter();
case 239:
return new wild_card_deconstructor_parameter();
case 240:
return new collection_pattern();
case 241:
return new collection_pattern_gap_parameter();
case 242:
return new collection_pattern_wild_card();
case 243:
return new collection_pattern_var_parameter();
case 244:
return new recursive_collection_parameter();
case 245:
return new recursive_pattern_parameter();
case 246:
return new tuple_pattern();
case 247:
return new tuple_pattern_var_parameter();
case 248:
return new recursive_tuple_parameter();
case 249:
return new diapason_expr_new();
case 250:
return new if_expr_new();
case 251:
return new simple_expr_with_deref();
case 252:
return new index();
case 253:
return new array_const_new();
case 254:
return new semantic_ith_element_of();
case 255:
return new bigint_const();
case 256:
return new foreach_stmt_formatting();
case 257:
return new property_ident();
case 258:
return new expression_with_let();
}
return null;
}
public syntax_tree_node _read_node()
{
if (br.ReadByte() == 1)
{
syntax_tree_node ssyy_tmp = _construct_node(br.ReadInt16());
ssyy_tmp.visit(this);
return ssyy_tmp;
}
else
{
return null;
}
}
public void visit(expression _expression)
{
read_expression(_expression);
}
public void read_expression(expression _expression)
{
read_declaration(_expression);
}
public void visit(syntax_tree_node _syntax_tree_node)
{
read_syntax_tree_node(_syntax_tree_node);
}
public void read_syntax_tree_node(syntax_tree_node _syntax_tree_node)
{
if (br.ReadByte() == 0)
{
_syntax_tree_node.source_context = null;
}
else
{
SourceContext ssyy_beg = null;
SourceContext ssyy_end = null;
if (br.ReadByte() == 1)
{
ssyy_beg = new SourceContext(br.ReadInt32(), br.ReadInt32(), 0, 0);
}
if (br.ReadByte() == 1)
{
ssyy_end = new SourceContext(0, 0, br.ReadInt32(), br.ReadInt32());
}
_syntax_tree_node.source_context = new SourceContext(ssyy_beg, ssyy_end);
}
}
public void visit(statement _statement)
{
read_statement(_statement);
}
public void read_statement(statement _statement)
{
read_declaration(_statement);
}
public void visit(statement_list _statement_list)
{
read_statement_list(_statement_list);
}
public void read_statement_list(statement_list _statement_list)
{
read_statement(_statement_list);
if (br.ReadByte() == 0)
{
_statement_list.subnodes = null;
}
else
{
_statement_list.subnodes = new List<statement>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_statement_list.subnodes.Add(_read_node() as statement);
}
}
_statement_list.left_logical_bracket = _read_node() as token_info;
_statement_list.right_logical_bracket = _read_node() as token_info;
_statement_list.expr_lambda_body = br.ReadBoolean();
}
public void visit(ident _ident)
{
read_ident(_ident);
}
public void read_ident(ident _ident)
{
read_addressed_value_funcname(_ident);
if (br.ReadByte() == 0)
{
_ident.name = null;
}
else
{
_ident.name = br.ReadString();
}
}
public void visit(assign _assign)
{
read_assign(_assign);
}
public void read_assign(assign _assign)
{
read_statement(_assign);
_assign.to = _read_node() as addressed_value;
_assign.from = _read_node() as expression;
_assign.operator_type = (Operators)br.ReadByte();
}
public void visit(bin_expr _bin_expr)
{
read_bin_expr(_bin_expr);
}
public void read_bin_expr(bin_expr _bin_expr)
{
read_addressed_value(_bin_expr);
_bin_expr.left = _read_node() as expression;
_bin_expr.right = _read_node() as expression;
_bin_expr.operation_type = (Operators)br.ReadByte();
}
public void visit(un_expr _un_expr)
{
read_un_expr(_un_expr);
}
public void read_un_expr(un_expr _un_expr)
{
read_addressed_value(_un_expr);
_un_expr.subnode = _read_node() as expression;
_un_expr.operation_type = (Operators)br.ReadByte();
}
public void visit(const_node _const_node)
{
read_const_node(_const_node);
}
public void read_const_node(const_node _const_node)
{
read_addressed_value(_const_node);
}
public void visit(bool_const _bool_const)
{
read_bool_const(_bool_const);
}
public void read_bool_const(bool_const _bool_const)
{
read_const_node(_bool_const);
_bool_const.val = br.ReadBoolean();
}
public void visit(int32_const _int32_const)
{
read_int32_const(_int32_const);
}
public void read_int32_const(int32_const _int32_const)
{
read_const_node(_int32_const);
_int32_const.val = br.ReadInt32();
}
public void visit(double_const _double_const)
{
read_double_const(_double_const);
}
public void read_double_const(double_const _double_const)
{
read_const_node(_double_const);
_double_const.val = br.ReadDouble();
}
public void visit(subprogram_body _subprogram_body)
{
read_subprogram_body(_subprogram_body);
}
public void read_subprogram_body(subprogram_body _subprogram_body)
{
read_syntax_tree_node(_subprogram_body);
_subprogram_body.subprogram_code = _read_node() as statement_list;
_subprogram_body.subprogram_defs = _read_node() as declarations;
}
public void visit(addressed_value _addressed_value)
{
read_addressed_value(_addressed_value);
}
public void read_addressed_value(addressed_value _addressed_value)
{
read_expression(_addressed_value);
}
public void visit(type_definition _type_definition)
{
read_type_definition(_type_definition);
}
public void read_type_definition(type_definition _type_definition)
{
read_declaration(_type_definition);
_type_definition.attr_list = _read_node() as type_definition_attr_list;
}
public void visit(roof_dereference _roof_dereference)
{
read_roof_dereference(_roof_dereference);
}
public void read_roof_dereference(roof_dereference _roof_dereference)
{
read_dereference(_roof_dereference);
}
public void visit(named_type_reference _named_type_reference)
{
read_named_type_reference(_named_type_reference);
}
public void read_named_type_reference(named_type_reference _named_type_reference)
{
read_type_definition(_named_type_reference);
if (br.ReadByte() == 0)
{
_named_type_reference.names = null;
}
else
{
_named_type_reference.names = new List<ident>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_named_type_reference.names.Add(_read_node() as ident);
}
}
}
public void visit(variable_definitions _variable_definitions)
{
read_variable_definitions(_variable_definitions);
}
public void read_variable_definitions(variable_definitions _variable_definitions)
{
read_declaration(_variable_definitions);
if (br.ReadByte() == 0)
{
_variable_definitions.var_definitions = null;
}
else
{
_variable_definitions.var_definitions = new List<var_def_statement>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_variable_definitions.var_definitions.Add(_read_node() as var_def_statement);
}
}
}
public void visit(ident_list _ident_list)
{
read_ident_list(_ident_list);
}
public void read_ident_list(ident_list _ident_list)
{
read_syntax_tree_node(_ident_list);
if (br.ReadByte() == 0)
{
_ident_list.idents = null;
}
else
{
_ident_list.idents = new List<ident>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_ident_list.idents.Add(_read_node() as ident);
}
}
}
public void visit(var_def_statement _var_def_statement)
{
read_var_def_statement(_var_def_statement);
}
public void read_var_def_statement(var_def_statement _var_def_statement)
{
read_declaration(_var_def_statement);
_var_def_statement.vars = _read_node() as ident_list;
_var_def_statement.vars_type = _read_node() as type_definition;
_var_def_statement.inital_value = _read_node() as expression;
_var_def_statement.var_attr = (definition_attribute)br.ReadByte();
_var_def_statement.is_event = br.ReadBoolean();
}
public void visit(declaration _declaration)
{
read_declaration(_declaration);
}
public void read_declaration(declaration _declaration)
{
read_syntax_tree_node(_declaration);
_declaration.attributes = _read_node() as attribute_list;
}
public void visit(declarations _declarations)
{
read_declarations(_declarations);
}
public void read_declarations(declarations _declarations)
{
read_syntax_tree_node(_declarations);
if (br.ReadByte() == 0)
{
_declarations.defs = null;
}
else
{
_declarations.defs = new List<declaration>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_declarations.defs.Add(_read_node() as declaration);
}
}
}
public void visit(program_tree _program_tree)
{
read_program_tree(_program_tree);
}
public void read_program_tree(program_tree _program_tree)
{
read_syntax_tree_node(_program_tree);
if (br.ReadByte() == 0)
{
_program_tree.compilation_units = null;
}
else
{
_program_tree.compilation_units = new List<compilation_unit>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_program_tree.compilation_units.Add(_read_node() as compilation_unit);
}
}
}
public void visit(program_name _program_name)
{
read_program_name(_program_name);
}
public void read_program_name(program_name _program_name)
{
read_syntax_tree_node(_program_name);
_program_name.prog_name = _read_node() as ident;
}
public void visit(string_const _string_const)
{
read_string_const(_string_const);
}
public void read_string_const(string_const _string_const)
{
read_literal(_string_const);
if (br.ReadByte() == 0)
{
_string_const.Value = null;
}
else
{
_string_const.Value = br.ReadString();
}
}
public void visit(expression_list _expression_list)
{
read_expression_list(_expression_list);
}
public void read_expression_list(expression_list _expression_list)
{
read_syntax_tree_node(_expression_list);
if (br.ReadByte() == 0)
{
_expression_list.expressions = null;
}
else
{
_expression_list.expressions = new List<expression>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_expression_list.expressions.Add(_read_node() as expression);
}
}
}
public void visit(dereference _dereference)
{
read_dereference(_dereference);
}
public void read_dereference(dereference _dereference)
{
read_addressed_value_funcname(_dereference);
_dereference.dereferencing_value = _read_node() as addressed_value;
}
public void visit(indexer _indexer)
{
read_indexer(_indexer);
}
public void read_indexer(indexer _indexer)
{
read_dereference(_indexer);
_indexer.indexes = _read_node() as expression_list;
}
public void visit(for_node _for_node)
{
read_for_node(_for_node);
}
public void read_for_node(for_node _for_node)
{
read_statement(_for_node);
_for_node.loop_variable = _read_node() as ident;
_for_node.initial_value = _read_node() as expression;
_for_node.finish_value = _read_node() as expression;
_for_node.statements = _read_node() as statement;
_for_node.cycle_type = (for_cycle_type)br.ReadByte();
_for_node.increment_value = _read_node() as expression;
_for_node.type_name = _read_node() as type_definition;
_for_node.create_loop_variable = br.ReadBoolean();
}
public void visit(repeat_node _repeat_node)
{
read_repeat_node(_repeat_node);
}
public void read_repeat_node(repeat_node _repeat_node)
{
read_statement(_repeat_node);
_repeat_node.statements = _read_node() as statement;
_repeat_node.expr = _read_node() as expression;
}
public void visit(while_node _while_node)
{
read_while_node(_while_node);
}
public void read_while_node(while_node _while_node)
{
read_statement(_while_node);
_while_node.expr = _read_node() as expression;
_while_node.statements = _read_node() as statement;
_while_node.CycleType = (WhileCycleType)br.ReadByte();
}
public void visit(if_node _if_node)
{
read_if_node(_if_node);
}
public void read_if_node(if_node _if_node)
{
read_statement(_if_node);
_if_node.condition = _read_node() as expression;
_if_node.then_body = _read_node() as statement;
_if_node.else_body = _read_node() as statement;
}
public void visit(ref_type _ref_type)
{
read_ref_type(_ref_type);
}
public void read_ref_type(ref_type _ref_type)
{
read_type_definition(_ref_type);
_ref_type.pointed_to = _read_node() as type_definition;
}
public void visit(diapason _diapason)
{
read_diapason(_diapason);
}
public void read_diapason(diapason _diapason)
{
read_type_definition(_diapason);
_diapason.left = _read_node() as expression;
_diapason.right = _read_node() as expression;
}
public void visit(indexers_types _indexers_types)
{
read_indexers_types(_indexers_types);
}
public void read_indexers_types(indexers_types _indexers_types)
{
read_type_definition(_indexers_types);
if (br.ReadByte() == 0)
{
_indexers_types.indexers = null;
}
else
{
_indexers_types.indexers = new List<type_definition>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_indexers_types.indexers.Add(_read_node() as type_definition);
}
}
}
public void visit(array_type _array_type)
{
read_array_type(_array_type);
}
public void read_array_type(array_type _array_type)
{
read_type_definition(_array_type);
_array_type.indexers = _read_node() as indexers_types;
_array_type.elements_type = _read_node() as type_definition;
}
public void visit(label_definitions _label_definitions)
{
read_label_definitions(_label_definitions);
}
public void read_label_definitions(label_definitions _label_definitions)
{
read_declaration(_label_definitions);
_label_definitions.labels = _read_node() as ident_list;
}
public void visit(procedure_attribute _procedure_attribute)
{
read_procedure_attribute(_procedure_attribute);
}
public void read_procedure_attribute(procedure_attribute _procedure_attribute)
{
read_ident(_procedure_attribute);
_procedure_attribute.attribute_type = (proc_attribute)br.ReadByte();
}
public void visit(typed_parameters _typed_parameters)
{
read_typed_parameters(_typed_parameters);
}
public void read_typed_parameters(typed_parameters _typed_parameters)
{
read_declaration(_typed_parameters);
_typed_parameters.idents = _read_node() as ident_list;
_typed_parameters.vars_type = _read_node() as type_definition;
_typed_parameters.param_kind = (parametr_kind)br.ReadByte();
_typed_parameters.inital_value = _read_node() as expression;
}
public void visit(formal_parameters _formal_parameters)
{
read_formal_parameters(_formal_parameters);
}
public void read_formal_parameters(formal_parameters _formal_parameters)
{
read_syntax_tree_node(_formal_parameters);
if (br.ReadByte() == 0)
{
_formal_parameters.params_list = null;
}
else
{
_formal_parameters.params_list = new List<typed_parameters>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_formal_parameters.params_list.Add(_read_node() as typed_parameters);
}
}
}
public void visit(procedure_attributes_list _procedure_attributes_list)
{
read_procedure_attributes_list(_procedure_attributes_list);
}
public void read_procedure_attributes_list(procedure_attributes_list _procedure_attributes_list)
{
read_syntax_tree_node(_procedure_attributes_list);
if (br.ReadByte() == 0)
{
_procedure_attributes_list.proc_attributes = null;
}
else
{
_procedure_attributes_list.proc_attributes = new List<procedure_attribute>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_procedure_attributes_list.proc_attributes.Add(_read_node() as procedure_attribute);
}
}
}
public void visit(procedure_header _procedure_header)
{
read_procedure_header(_procedure_header);
}
public void read_procedure_header(procedure_header _procedure_header)
{
read_type_definition(_procedure_header);
_procedure_header.parameters = _read_node() as formal_parameters;
_procedure_header.proc_attributes = _read_node() as procedure_attributes_list;
_procedure_header.name = _read_node() as method_name;
_procedure_header.of_object = br.ReadBoolean();
_procedure_header.class_keyword = br.ReadBoolean();
_procedure_header.template_args = _read_node() as ident_list;
_procedure_header.where_defs = _read_node() as where_definition_list;
}
public void visit(function_header _function_header)
{
read_function_header(_function_header);
}
public void read_function_header(function_header _function_header)
{
read_procedure_header(_function_header);
_function_header.return_type = _read_node() as type_definition;
}
public void visit(procedure_definition _procedure_definition)
{
read_procedure_definition(_procedure_definition);
}
public void read_procedure_definition(procedure_definition _procedure_definition)
{
read_declaration(_procedure_definition);
_procedure_definition.proc_header = _read_node() as procedure_header;
_procedure_definition.proc_body = _read_node() as proc_block;
_procedure_definition.is_short_definition = br.ReadBoolean();
}
public void visit(type_declaration _type_declaration)
{
read_type_declaration(_type_declaration);
}
public void read_type_declaration(type_declaration _type_declaration)
{
read_declaration(_type_declaration);
_type_declaration.type_name = _read_node() as ident;
_type_declaration.type_def = _read_node() as type_definition;
}
public void visit(type_declarations _type_declarations)
{
read_type_declarations(_type_declarations);
}
public void read_type_declarations(type_declarations _type_declarations)
{
read_declaration(_type_declarations);
if (br.ReadByte() == 0)
{
_type_declarations.types_decl = null;
}
else
{
_type_declarations.types_decl = new List<type_declaration>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_type_declarations.types_decl.Add(_read_node() as type_declaration);
}
}
}
public void visit(simple_const_definition _simple_const_definition)
{
read_simple_const_definition(_simple_const_definition);
}
public void read_simple_const_definition(simple_const_definition _simple_const_definition)
{
read_const_definition(_simple_const_definition);
}
public void visit(typed_const_definition _typed_const_definition)
{
read_typed_const_definition(_typed_const_definition);
}
public void read_typed_const_definition(typed_const_definition _typed_const_definition)
{
read_const_definition(_typed_const_definition);
_typed_const_definition.const_type = _read_node() as type_definition;
}
public void visit(const_definition _const_definition)
{
read_const_definition(_const_definition);
}
public void read_const_definition(const_definition _const_definition)
{
read_declaration(_const_definition);
_const_definition.const_name = _read_node() as ident;
_const_definition.const_value = _read_node() as expression;
}
public void visit(consts_definitions_list _consts_definitions_list)
{
read_consts_definitions_list(_consts_definitions_list);
}
public void read_consts_definitions_list(consts_definitions_list _consts_definitions_list)
{
read_declaration(_consts_definitions_list);
if (br.ReadByte() == 0)
{
_consts_definitions_list.const_defs = null;
}
else
{
_consts_definitions_list.const_defs = new List<const_definition>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_consts_definitions_list.const_defs.Add(_read_node() as const_definition);
}
}
}
public void visit(unit_name _unit_name)
{
read_unit_name(_unit_name);
}
public void read_unit_name(unit_name _unit_name)
{
read_syntax_tree_node(_unit_name);
_unit_name.idunit_name = _read_node() as ident;
_unit_name.HeaderKeyword = (UnitHeaderKeyword)br.ReadByte();
}
public void visit(unit_or_namespace _unit_or_namespace)
{
read_unit_or_namespace(_unit_or_namespace);
}
public void read_unit_or_namespace(unit_or_namespace _unit_or_namespace)
{
read_syntax_tree_node(_unit_or_namespace);
_unit_or_namespace.name = _read_node() as ident_list;
}
public void visit(uses_unit_in _uses_unit_in)
{
read_uses_unit_in(_uses_unit_in);
}
public void read_uses_unit_in(uses_unit_in _uses_unit_in)
{
read_unit_or_namespace(_uses_unit_in);
_uses_unit_in.in_file = _read_node() as string_const;
}
public void visit(uses_list _uses_list)
{
read_uses_list(_uses_list);
}
public void read_uses_list(uses_list _uses_list)
{
read_syntax_tree_node(_uses_list);
if (br.ReadByte() == 0)
{
_uses_list.units = null;
}
else
{
_uses_list.units = new List<unit_or_namespace>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_uses_list.units.Add(_read_node() as unit_or_namespace);
}
}
}
public void visit(program_body _program_body)
{
read_program_body(_program_body);
}
public void read_program_body(program_body _program_body)
{
read_syntax_tree_node(_program_body);
_program_body.used_units = _read_node() as uses_list;
_program_body.program_definitions = _read_node() as declarations;
_program_body.program_code = _read_node() as statement_list;
_program_body.using_list = _read_node() as using_list;
}
public void visit(compilation_unit _compilation_unit)
{
read_compilation_unit(_compilation_unit);
}
public void read_compilation_unit(compilation_unit _compilation_unit)
{
read_syntax_tree_node(_compilation_unit);
if (br.ReadByte() == 0)
{
_compilation_unit.file_name = null;
}
else
{
_compilation_unit.file_name = br.ReadString();
}
if (br.ReadByte() == 0)
{
_compilation_unit.compiler_directives = null;
}
else
{
_compilation_unit.compiler_directives = new List<compiler_directive>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_compilation_unit.compiler_directives.Add(_read_node() as compiler_directive);
}
}
_compilation_unit.Language = (LanguageId)br.ReadByte();
}
public void visit(unit_module _unit_module)
{
read_unit_module(_unit_module);
}
public void read_unit_module(unit_module _unit_module)
{
read_compilation_unit(_unit_module);
_unit_module.unit_name = _read_node() as unit_name;
_unit_module.interface_part = _read_node() as interface_node;
_unit_module.implementation_part = _read_node() as implementation_node;
_unit_module.initialization_part = _read_node() as statement_list;
_unit_module.finalization_part = _read_node() as statement_list;
_unit_module.attributes = _read_node() as attribute_list;
}
public void visit(program_module _program_module)
{
read_program_module(_program_module);
}
public void read_program_module(program_module _program_module)
{
read_compilation_unit(_program_module);
_program_module.program_name = _read_node() as program_name;
_program_module.used_units = _read_node() as uses_list;
_program_module.program_block = _read_node() as block;
_program_module.using_namespaces = _read_node() as using_list;
}
public void visit(hex_constant _hex_constant)
{
read_hex_constant(_hex_constant);
}
public void read_hex_constant(hex_constant _hex_constant)
{
read_int64_const(_hex_constant);
}
public void visit(get_address _get_address)
{
read_get_address(_get_address);
}
public void read_get_address(get_address _get_address)
{
read_addressed_value_funcname(_get_address);
_get_address.address_of = _read_node() as addressed_value;
}
public void visit(case_variant _case_variant)
{
read_case_variant(_case_variant);
}
public void read_case_variant(case_variant _case_variant)
{
read_statement(_case_variant);
_case_variant.conditions = _read_node() as expression_list;
_case_variant.exec_if_true = _read_node() as statement;
}
public void visit(case_node _case_node)
{
read_case_node(_case_node);
}
public void read_case_node(case_node _case_node)
{
read_statement(_case_node);
_case_node.param = _read_node() as expression;
_case_node.conditions = _read_node() as case_variants;
_case_node.else_statement = _read_node() as statement;
}
public void visit(method_name _method_name)
{
read_method_name(_method_name);
}
public void read_method_name(method_name _method_name)
{
read_syntax_tree_node(_method_name);
if (br.ReadByte() == 0)
{
_method_name.ln = null;
}
else
{
_method_name.ln = new List<ident>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_method_name.ln.Add(_read_node() as ident);
}
}
_method_name.class_name = _read_node() as ident;
_method_name.meth_name = _read_node() as ident;
_method_name.explicit_interface_name = _read_node() as ident;
}
public void visit(dot_node _dot_node)
{
read_dot_node(_dot_node);
}
public void read_dot_node(dot_node _dot_node)
{
read_addressed_value_funcname(_dot_node);
_dot_node.left = _read_node() as addressed_value;
_dot_node.right = _read_node() as addressed_value;
}
public void visit(empty_statement _empty_statement)
{
read_empty_statement(_empty_statement);
}
public void read_empty_statement(empty_statement _empty_statement)
{
read_statement(_empty_statement);
}
public void visit(goto_statement _goto_statement)
{
read_goto_statement(_goto_statement);
}
public void read_goto_statement(goto_statement _goto_statement)
{
read_statement(_goto_statement);
_goto_statement.label = _read_node() as ident;
}
public void visit(labeled_statement _labeled_statement)
{
read_labeled_statement(_labeled_statement);
}
public void read_labeled_statement(labeled_statement _labeled_statement)
{
read_statement(_labeled_statement);
_labeled_statement.label_name = _read_node() as ident;
_labeled_statement.to_statement = _read_node() as statement;
}
public void visit(with_statement _with_statement)
{
read_with_statement(_with_statement);
}
public void read_with_statement(with_statement _with_statement)
{
read_statement(_with_statement);
_with_statement.what_do = _read_node() as statement;
_with_statement.do_with = _read_node() as expression_list;
}
public void visit(method_call _method_call)
{
read_method_call(_method_call);
}
public void read_method_call(method_call _method_call)
{
read_dereference(_method_call);
_method_call.parameters = _read_node() as expression_list;
}
public void visit(pascal_set_constant _pascal_set_constant)
{
read_pascal_set_constant(_pascal_set_constant);
}
public void read_pascal_set_constant(pascal_set_constant _pascal_set_constant)
{
read_addressed_value(_pascal_set_constant);
_pascal_set_constant.values = _read_node() as expression_list;
}
public void visit(array_const _array_const)
{
read_array_const(_array_const);
}
public void read_array_const(array_const _array_const)
{
read_expression(_array_const);
_array_const.elements = _read_node() as expression_list;
}
public void visit(write_accessor_name _write_accessor_name)
{
read_write_accessor_name(_write_accessor_name);
}
public void read_write_accessor_name(write_accessor_name _write_accessor_name)
{
read_syntax_tree_node(_write_accessor_name);
_write_accessor_name.accessor_name = _read_node() as ident;
_write_accessor_name.pr = _read_node() as procedure_definition;
_write_accessor_name.statment_for_formatting = _read_node() as statement;
}
public void visit(read_accessor_name _read_accessor_name)
{
read_read_accessor_name(_read_accessor_name);
}
public void read_read_accessor_name(read_accessor_name _read_accessor_name)
{
read_syntax_tree_node(_read_accessor_name);
_read_accessor_name.accessor_name = _read_node() as ident;
_read_accessor_name.pr = _read_node() as procedure_definition;
_read_accessor_name.expression_for_formatting = _read_node() as expression;
}
public void visit(property_accessors _property_accessors)
{
read_property_accessors(_property_accessors);
}
public void read_property_accessors(property_accessors _property_accessors)
{
read_syntax_tree_node(_property_accessors);
_property_accessors.read_accessor = _read_node() as read_accessor_name;
_property_accessors.write_accessor = _read_node() as write_accessor_name;
}
public void visit(simple_property _simple_property)
{
read_simple_property(_simple_property);
}
public void read_simple_property(simple_property _simple_property)
{
read_declaration(_simple_property);
_simple_property.property_name = _read_node() as property_ident;
_simple_property.property_type = _read_node() as type_definition;
_simple_property.index_expression = _read_node() as expression;
_simple_property.accessors = _read_node() as property_accessors;
_simple_property.array_default = _read_node() as property_array_default;
_simple_property.parameter_list = _read_node() as property_parameter_list;
_simple_property.attr = (definition_attribute)br.ReadByte();
_simple_property.virt_over_none_attr = (proc_attribute)br.ReadByte();
_simple_property.is_auto = br.ReadBoolean();
_simple_property.initial_value = _read_node() as expression;
}
public void visit(index_property _index_property)
{
read_index_property(_index_property);
}
public void read_index_property(index_property _index_property)
{
read_simple_property(_index_property);
_index_property.property_parametres = _read_node() as formal_parameters;
_index_property.is_default = _read_node() as default_indexer_property_node;
}
public void visit(class_members _class_members)
{
read_class_members(_class_members);
}
public void read_class_members(class_members _class_members)
{
read_syntax_tree_node(_class_members);
if (br.ReadByte() == 0)
{
_class_members.members = null;
}
else
{
_class_members.members = new List<declaration>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_class_members.members.Add(_read_node() as declaration);
}
}
_class_members.access_mod = _read_node() as access_modifer_node;
}
public void visit(access_modifer_node _access_modifer_node)
{
read_access_modifer_node(_access_modifer_node);
}
public void read_access_modifer_node(access_modifer_node _access_modifer_node)
{
read_syntax_tree_node(_access_modifer_node);
_access_modifer_node.access_level = (access_modifer)br.ReadByte();
}
public void visit(class_body_list _class_body_list)
{
read_class_body_list(_class_body_list);
}
public void read_class_body_list(class_body_list _class_body_list)
{
read_syntax_tree_node(_class_body_list);
if (br.ReadByte() == 0)
{
_class_body_list.class_def_blocks = null;
}
else
{
_class_body_list.class_def_blocks = new List<class_members>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_class_body_list.class_def_blocks.Add(_read_node() as class_members);
}
}
}
public void visit(class_definition _class_definition)
{
read_class_definition(_class_definition);
}
public void read_class_definition(class_definition _class_definition)
{
read_type_definition(_class_definition);
_class_definition.class_parents = _read_node() as named_type_reference_list;
_class_definition.body = _read_node() as class_body_list;
_class_definition.keyword = (class_keyword)br.ReadByte();
_class_definition.template_args = _read_node() as ident_list;
_class_definition.where_section = _read_node() as where_definition_list;
_class_definition.attribute = (class_attribute)br.ReadByte();
_class_definition.is_auto = br.ReadBoolean();
}
public void visit(default_indexer_property_node _default_indexer_property_node)
{
read_default_indexer_property_node(_default_indexer_property_node);
}
public void read_default_indexer_property_node(default_indexer_property_node _default_indexer_property_node)
{
read_syntax_tree_node(_default_indexer_property_node);
}
public void visit(known_type_definition _known_type_definition)
{
read_known_type_definition(_known_type_definition);
}
public void read_known_type_definition(known_type_definition _known_type_definition)
{
read_type_definition(_known_type_definition);
_known_type_definition.tp = (known_type)br.ReadByte();
_known_type_definition.unit_name = _read_node() as ident;
}
public void visit(set_type_definition _set_type_definition)
{
read_set_type_definition(_set_type_definition);
}
public void read_set_type_definition(set_type_definition _set_type_definition)
{
read_type_definition(_set_type_definition);
_set_type_definition.of_type = _read_node() as type_definition;
}
public void visit(record_const_definition _record_const_definition)
{
read_record_const_definition(_record_const_definition);
}
public void read_record_const_definition(record_const_definition _record_const_definition)
{
read_statement(_record_const_definition);
_record_const_definition.name = _read_node() as ident;
_record_const_definition.val = _read_node() as expression;
}
public void visit(record_const _record_const)
{
read_record_const(_record_const);
}
public void read_record_const(record_const _record_const)
{
read_expression(_record_const);
if (br.ReadByte() == 0)
{
_record_const.rec_consts = null;
}
else
{
_record_const.rec_consts = new List<record_const_definition>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_record_const.rec_consts.Add(_read_node() as record_const_definition);
}
}
}
public void visit(record_type _record_type)
{
read_record_type(_record_type);
}
public void read_record_type(record_type _record_type)
{
read_type_definition(_record_type);
_record_type.parts = _read_node() as record_type_parts;
_record_type.base_type = _read_node() as type_definition;
}
public void visit(enum_type_definition _enum_type_definition)
{
read_enum_type_definition(_enum_type_definition);
}
public void read_enum_type_definition(enum_type_definition _enum_type_definition)
{
read_type_definition(_enum_type_definition);
_enum_type_definition.enumerators = _read_node() as enumerator_list;
}
public void visit(char_const _char_const)
{
read_char_const(_char_const);
}
public void read_char_const(char_const _char_const)
{
read_literal(_char_const);
_char_const.cconst = br.ReadChar();
}
public void visit(raise_statement _raise_statement)
{
read_raise_statement(_raise_statement);
}
public void read_raise_statement(raise_statement _raise_statement)
{
read_statement(_raise_statement);
_raise_statement.excep = _read_node() as expression;
}
public void visit(sharp_char_const _sharp_char_const)
{
read_sharp_char_const(_sharp_char_const);
}
public void read_sharp_char_const(sharp_char_const _sharp_char_const)
{
read_literal(_sharp_char_const);
_sharp_char_const.char_num = (int)br.ReadByte();
}
public void visit(literal_const_line _literal_const_line)
{
read_literal_const_line(_literal_const_line);
}
public void read_literal_const_line(literal_const_line _literal_const_line)
{
read_literal(_literal_const_line);
if (br.ReadByte() == 0)
{
_literal_const_line.literals = null;
}
else
{
_literal_const_line.literals = new List<literal>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_literal_const_line.literals.Add(_read_node() as literal);
}
}
}
public void visit(string_num_definition _string_num_definition)
{
read_string_num_definition(_string_num_definition);
}
public void read_string_num_definition(string_num_definition _string_num_definition)
{
read_type_definition(_string_num_definition);
_string_num_definition.num_of_symbols = _read_node() as expression;
_string_num_definition.name = _read_node() as ident;
}
public void visit(variant _variant)
{
read_variant(_variant);
}
public void read_variant(variant _variant)
{
read_syntax_tree_node(_variant);
_variant.vars = _read_node() as ident_list;
_variant.vars_type = _read_node() as type_definition;
}
public void visit(variant_list _variant_list)
{
read_variant_list(_variant_list);
}
public void read_variant_list(variant_list _variant_list)
{
read_syntax_tree_node(_variant_list);
if (br.ReadByte() == 0)
{
_variant_list.vars = null;
}
else
{
_variant_list.vars = new List<variant>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_variant_list.vars.Add(_read_node() as variant);
}
}
}
public void visit(variant_type _variant_type)
{
read_variant_type(_variant_type);
}
public void read_variant_type(variant_type _variant_type)
{
read_syntax_tree_node(_variant_type);
_variant_type.case_exprs = _read_node() as expression_list;
_variant_type.parts = _read_node() as record_type_parts;
}
public void visit(variant_types _variant_types)
{
read_variant_types(_variant_types);
}
public void read_variant_types(variant_types _variant_types)
{
read_syntax_tree_node(_variant_types);
if (br.ReadByte() == 0)
{
_variant_types.vars = null;
}
else
{
_variant_types.vars = new List<variant_type>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_variant_types.vars.Add(_read_node() as variant_type);
}
}
}
public void visit(variant_record_type _variant_record_type)
{
read_variant_record_type(_variant_record_type);
}
public void read_variant_record_type(variant_record_type _variant_record_type)
{
read_syntax_tree_node(_variant_record_type);
_variant_record_type.var_name = _read_node() as ident;
_variant_record_type.var_type = _read_node() as type_definition;
_variant_record_type.vars = _read_node() as variant_types;
}
public void visit(procedure_call _procedure_call)
{
read_procedure_call(_procedure_call);
}
public void read_procedure_call(procedure_call _procedure_call)
{
read_statement(_procedure_call);
_procedure_call.func_name = _read_node() as addressed_value;
_procedure_call.is_ident = br.ReadBoolean();
}
public void visit(class_predefinition _class_predefinition)
{
read_class_predefinition(_class_predefinition);
}
public void read_class_predefinition(class_predefinition _class_predefinition)
{
read_type_declaration(_class_predefinition);
_class_predefinition.class_name = _read_node() as ident;
}
public void visit(nil_const _nil_const)
{
read_nil_const(_nil_const);
}
public void read_nil_const(nil_const _nil_const)
{
read_const_node(_nil_const);
}
public void visit(file_type_definition _file_type_definition)
{
read_file_type_definition(_file_type_definition);
}
public void read_file_type_definition(file_type_definition _file_type_definition)
{
read_type_definition(_file_type_definition);
_file_type_definition.elem_type = _read_node() as type_definition;
}
public void visit(constructor _constructor)
{
read_constructor(_constructor);
}
public void read_constructor(constructor _constructor)
{
read_procedure_header(_constructor);
}
public void visit(destructor _destructor)
{
read_destructor(_destructor);
}
public void read_destructor(destructor _destructor)
{
read_procedure_header(_destructor);
}
public void visit(inherited_method_call _inherited_method_call)
{
read_inherited_method_call(_inherited_method_call);
}
public void read_inherited_method_call(inherited_method_call _inherited_method_call)
{
read_statement(_inherited_method_call);
_inherited_method_call.method_name = _read_node() as ident;
_inherited_method_call.exprs = _read_node() as expression_list;
}
public void visit(typecast_node _typecast_node)
{
read_typecast_node(_typecast_node);
}
public void read_typecast_node(typecast_node _typecast_node)
{
read_addressed_value(_typecast_node);
_typecast_node.expr = _read_node() as addressed_value;
_typecast_node.type_def = _read_node() as type_definition;
_typecast_node.cast_op = (op_typecast)br.ReadByte();
}
public void visit(interface_node _interface_node)
{
read_interface_node(_interface_node);
}
public void read_interface_node(interface_node _interface_node)
{
read_syntax_tree_node(_interface_node);
_interface_node.interface_definitions = _read_node() as declarations;
_interface_node.uses_modules = _read_node() as uses_list;
_interface_node.using_namespaces = _read_node() as using_list;
}
public void visit(implementation_node _implementation_node)
{
read_implementation_node(_implementation_node);
}
public void read_implementation_node(implementation_node _implementation_node)
{
read_syntax_tree_node(_implementation_node);
_implementation_node.uses_modules = _read_node() as uses_list;
_implementation_node.implementation_definitions = _read_node() as declarations;
_implementation_node.using_namespaces = _read_node() as using_list;
}
public void visit(diap_expr _diap_expr)
{
read_diap_expr(_diap_expr);
}
public void read_diap_expr(diap_expr _diap_expr)
{
read_expression(_diap_expr);
_diap_expr.left = _read_node() as expression;
_diap_expr.right = _read_node() as expression;
}
public void visit(block _block)
{
read_block(_block);
}
public void read_block(block _block)
{
read_proc_block(_block);
_block.defs = _read_node() as declarations;
_block.program_code = _read_node() as statement_list;
}
public void visit(proc_block _proc_block)
{
read_proc_block(_proc_block);
}
public void read_proc_block(proc_block _proc_block)
{
read_syntax_tree_node(_proc_block);
}
public void visit(array_of_named_type_definition _array_of_named_type_definition)
{
read_array_of_named_type_definition(_array_of_named_type_definition);
}
public void read_array_of_named_type_definition(array_of_named_type_definition _array_of_named_type_definition)
{
read_type_definition(_array_of_named_type_definition);
_array_of_named_type_definition.type_name = _read_node() as named_type_reference;
}
public void visit(array_of_const_type_definition _array_of_const_type_definition)
{
read_array_of_const_type_definition(_array_of_const_type_definition);
}
public void read_array_of_const_type_definition(array_of_const_type_definition _array_of_const_type_definition)
{
read_type_definition(_array_of_const_type_definition);
}
public void visit(literal _literal)
{
read_literal(_literal);
}
public void read_literal(literal _literal)
{
read_const_node(_literal);
}
public void visit(case_variants _case_variants)
{
read_case_variants(_case_variants);
}
public void read_case_variants(case_variants _case_variants)
{
read_syntax_tree_node(_case_variants);
if (br.ReadByte() == 0)
{
_case_variants.variants = null;
}
else
{
_case_variants.variants = new List<case_variant>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_case_variants.variants.Add(_read_node() as case_variant);
}
}
}
public void visit(diapason_expr _diapason_expr)
{
read_diapason_expr(_diapason_expr);
}
public void read_diapason_expr(diapason_expr _diapason_expr)
{
read_expression(_diapason_expr);
_diapason_expr.left = _read_node() as expression;
_diapason_expr.right = _read_node() as expression;
}
public void visit(var_def_list_for_record _var_def_list_for_record)
{
read_var_def_list_for_record(_var_def_list_for_record);
}
public void read_var_def_list_for_record(var_def_list_for_record _var_def_list_for_record)
{
read_syntax_tree_node(_var_def_list_for_record);
if (br.ReadByte() == 0)
{
_var_def_list_for_record.vars = null;
}
else
{
_var_def_list_for_record.vars = new List<var_def_statement>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_var_def_list_for_record.vars.Add(_read_node() as var_def_statement);
}
}
}
public void visit(record_type_parts _record_type_parts)
{
read_record_type_parts(_record_type_parts);
}
public void read_record_type_parts(record_type_parts _record_type_parts)
{
read_syntax_tree_node(_record_type_parts);
_record_type_parts.fixed_part = _read_node() as var_def_list_for_record;
_record_type_parts.variant_part = _read_node() as variant_record_type;
}
public void visit(property_array_default _property_array_default)
{
read_property_array_default(_property_array_default);
}
public void read_property_array_default(property_array_default _property_array_default)
{
read_syntax_tree_node(_property_array_default);
}
public void visit(property_interface _property_interface)
{
read_property_interface(_property_interface);
}
public void read_property_interface(property_interface _property_interface)
{
read_syntax_tree_node(_property_interface);
_property_interface.parameter_list = _read_node() as property_parameter_list;
_property_interface.property_type = _read_node() as type_definition;
_property_interface.index_expression = _read_node() as expression;
}
public void visit(property_parameter _property_parameter)
{
read_property_parameter(_property_parameter);
}
public void read_property_parameter(property_parameter _property_parameter)
{
read_syntax_tree_node(_property_parameter);
_property_parameter.names = _read_node() as ident_list;
_property_parameter.type = _read_node() as type_definition;
}
public void visit(property_parameter_list _property_parameter_list)
{
read_property_parameter_list(_property_parameter_list);
}
public void read_property_parameter_list(property_parameter_list _property_parameter_list)
{
read_syntax_tree_node(_property_parameter_list);
if (br.ReadByte() == 0)
{
_property_parameter_list.parameters = null;
}
else
{
_property_parameter_list.parameters = new List<property_parameter>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_property_parameter_list.parameters.Add(_read_node() as property_parameter);
}
}
}
public void visit(inherited_ident _inherited_ident)
{
read_inherited_ident(_inherited_ident);
}
public void read_inherited_ident(inherited_ident _inherited_ident)
{
read_ident(_inherited_ident);
}
public void visit(format_expr _format_expr)
{
read_format_expr(_format_expr);
}
public void read_format_expr(format_expr _format_expr)
{
read_addressed_value(_format_expr);
_format_expr.expr = _read_node() as expression;
_format_expr.format1 = _read_node() as expression;
_format_expr.format2 = _read_node() as expression;
}
public void visit(initfinal_part _initfinal_part)
{
read_initfinal_part(_initfinal_part);
}
public void read_initfinal_part(initfinal_part _initfinal_part)
{
read_syntax_tree_node(_initfinal_part);
_initfinal_part.initialization_sect = _read_node() as statement_list;
_initfinal_part.finalization_sect = _read_node() as statement_list;
}
public void visit(token_info _token_info)
{
read_token_info(_token_info);
}
public void read_token_info(token_info _token_info)
{
read_syntax_tree_node(_token_info);
if (br.ReadByte() == 0)
{
_token_info.text = null;
}
else
{
_token_info.text = br.ReadString();
}
}
public void visit(raise_stmt _raise_stmt)
{
read_raise_stmt(_raise_stmt);
}
public void read_raise_stmt(raise_stmt _raise_stmt)
{
read_statement(_raise_stmt);
_raise_stmt.expr = _read_node() as expression;
_raise_stmt.address = _read_node() as expression;
}
public void visit(op_type_node _op_type_node)
{
read_op_type_node(_op_type_node);
}
public void read_op_type_node(op_type_node _op_type_node)
{
read_token_info(_op_type_node);
_op_type_node.type = (Operators)br.ReadByte();
}
public void visit(file_type _file_type)
{
read_file_type(_file_type);
}
public void read_file_type(file_type _file_type)
{
read_type_definition(_file_type);
_file_type.file_of_type = _read_node() as type_definition;
}
public void visit(known_type_ident _known_type_ident)
{
read_known_type_ident(_known_type_ident);
}
public void read_known_type_ident(known_type_ident _known_type_ident)
{
read_ident(_known_type_ident);
_known_type_ident.type = (known_type)br.ReadByte();
}
public void visit(exception_handler _exception_handler)
{
read_exception_handler(_exception_handler);
}
public void read_exception_handler(exception_handler _exception_handler)
{
read_syntax_tree_node(_exception_handler);
_exception_handler.variable = _read_node() as ident;
_exception_handler.type_name = _read_node() as named_type_reference;
_exception_handler.statements = _read_node() as statement;
}
public void visit(exception_ident _exception_ident)
{
read_exception_ident(_exception_ident);
}
public void read_exception_ident(exception_ident _exception_ident)
{
read_syntax_tree_node(_exception_ident);
_exception_ident.variable = _read_node() as ident;
_exception_ident.type_name = _read_node() as named_type_reference;
}
public void visit(exception_handler_list _exception_handler_list)
{
read_exception_handler_list(_exception_handler_list);
}
public void read_exception_handler_list(exception_handler_list _exception_handler_list)
{
read_syntax_tree_node(_exception_handler_list);
if (br.ReadByte() == 0)
{
_exception_handler_list.handlers = null;
}
else
{
_exception_handler_list.handlers = new List<exception_handler>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_exception_handler_list.handlers.Add(_read_node() as exception_handler);
}
}
}
public void visit(exception_block _exception_block)
{
read_exception_block(_exception_block);
}
public void read_exception_block(exception_block _exception_block)
{
read_syntax_tree_node(_exception_block);
_exception_block.stmt_list = _read_node() as statement_list;
_exception_block.handlers = _read_node() as exception_handler_list;
_exception_block.else_stmt_list = _read_node() as statement_list;
}
public void visit(try_handler _try_handler)
{
read_try_handler(_try_handler);
}
public void read_try_handler(try_handler _try_handler)
{
read_syntax_tree_node(_try_handler);
}
public void visit(try_handler_finally _try_handler_finally)
{
read_try_handler_finally(_try_handler_finally);
}
public void read_try_handler_finally(try_handler_finally _try_handler_finally)
{
read_try_handler(_try_handler_finally);
_try_handler_finally.stmt_list = _read_node() as statement_list;
}
public void visit(try_handler_except _try_handler_except)
{
read_try_handler_except(_try_handler_except);
}
public void read_try_handler_except(try_handler_except _try_handler_except)
{
read_try_handler(_try_handler_except);
_try_handler_except.except_block = _read_node() as exception_block;
}
public void visit(try_stmt _try_stmt)
{
read_try_stmt(_try_stmt);
}
public void read_try_stmt(try_stmt _try_stmt)
{
read_statement(_try_stmt);
_try_stmt.stmt_list = _read_node() as statement_list;
_try_stmt.handler = _read_node() as try_handler;
}
public void visit(inherited_message _inherited_message)
{
read_inherited_message(_inherited_message);
}
public void read_inherited_message(inherited_message _inherited_message)
{
read_statement(_inherited_message);
}
public void visit(external_directive _external_directive)
{
read_external_directive(_external_directive);
}
public void read_external_directive(external_directive _external_directive)
{
read_proc_block(_external_directive);
_external_directive.modulename = _read_node() as expression;
_external_directive.name = _read_node() as expression;
}
public void visit(using_list _using_list)
{
read_using_list(_using_list);
}
public void read_using_list(using_list _using_list)
{
read_syntax_tree_node(_using_list);
if (br.ReadByte() == 0)
{
_using_list.namespaces = null;
}
else
{
_using_list.namespaces = new List<unit_or_namespace>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_using_list.namespaces.Add(_read_node() as unit_or_namespace);
}
}
}
public void visit(jump_stmt _jump_stmt)
{
read_jump_stmt(_jump_stmt);
}
public void read_jump_stmt(jump_stmt _jump_stmt)
{
read_statement(_jump_stmt);
_jump_stmt.expr = _read_node() as expression;
_jump_stmt.JumpType = (JumpStmtType)br.ReadByte();
}
public void visit(loop_stmt _loop_stmt)
{
read_loop_stmt(_loop_stmt);
}
public void read_loop_stmt(loop_stmt _loop_stmt)
{
read_statement(_loop_stmt);
_loop_stmt.count = _read_node() as expression;
_loop_stmt.stmt = _read_node() as statement;
}
public void visit(foreach_stmt _foreach_stmt)
{
read_foreach_stmt(_foreach_stmt);
}
public void read_foreach_stmt(foreach_stmt _foreach_stmt)
{
read_statement(_foreach_stmt);
_foreach_stmt.identifier = _read_node() as ident;
_foreach_stmt.type_name = _read_node() as type_definition;
_foreach_stmt.in_what = _read_node() as expression;
_foreach_stmt.stmt = _read_node() as statement;
_foreach_stmt.index = _read_node() as ident;
}
public void visit(addressed_value_funcname _addressed_value_funcname)
{
read_addressed_value_funcname(_addressed_value_funcname);
}
public void read_addressed_value_funcname(addressed_value_funcname _addressed_value_funcname)
{
read_addressed_value(_addressed_value_funcname);
}
public void visit(named_type_reference_list _named_type_reference_list)
{
read_named_type_reference_list(_named_type_reference_list);
}
public void read_named_type_reference_list(named_type_reference_list _named_type_reference_list)
{
read_syntax_tree_node(_named_type_reference_list);
if (br.ReadByte() == 0)
{
_named_type_reference_list.types = null;
}
else
{
_named_type_reference_list.types = new List<named_type_reference>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_named_type_reference_list.types.Add(_read_node() as named_type_reference);
}
}
}
public void visit(template_param_list _template_param_list)
{
read_template_param_list(_template_param_list);
}
public void read_template_param_list(template_param_list _template_param_list)
{
read_dereference(_template_param_list);
if (br.ReadByte() == 0)
{
_template_param_list.params_list = null;
}
else
{
_template_param_list.params_list = new List<type_definition>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_template_param_list.params_list.Add(_read_node() as type_definition);
}
}
}
public void visit(template_type_reference _template_type_reference)
{
read_template_type_reference(_template_type_reference);
}
public void read_template_type_reference(template_type_reference _template_type_reference)
{
read_named_type_reference(_template_type_reference);
_template_type_reference.name = _read_node() as named_type_reference;
_template_type_reference.params_list = _read_node() as template_param_list;
}
public void visit(int64_const _int64_const)
{
read_int64_const(_int64_const);
}
public void read_int64_const(int64_const _int64_const)
{
read_const_node(_int64_const);
_int64_const.val = br.ReadInt64();
}
public void visit(uint64_const _uint64_const)
{
read_uint64_const(_uint64_const);
}
public void read_uint64_const(uint64_const _uint64_const)
{
read_const_node(_uint64_const);
_uint64_const.val = br.ReadUInt64();
}
public void visit(new_expr _new_expr)
{
read_new_expr(_new_expr);
}
public void read_new_expr(new_expr _new_expr)
{
read_addressed_value(_new_expr);
_new_expr.type = _read_node() as type_definition;
_new_expr.params_list = _read_node() as expression_list;
_new_expr.new_array = br.ReadBoolean();
_new_expr.array_init_expr = _read_node() as array_const;
}
public void visit(where_type_specificator_list _where_type_specificator_list)
{
read_where_type_specificator_list(_where_type_specificator_list);
}
public void read_where_type_specificator_list(where_type_specificator_list _where_type_specificator_list)
{
read_syntax_tree_node(_where_type_specificator_list);
if (br.ReadByte() == 0)
{
_where_type_specificator_list.defs = null;
}
else
{
_where_type_specificator_list.defs = new List<type_definition>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_where_type_specificator_list.defs.Add(_read_node() as type_definition);
}
}
}
public void visit(where_definition _where_definition)
{
read_where_definition(_where_definition);
}
public void read_where_definition(where_definition _where_definition)
{
read_syntax_tree_node(_where_definition);
_where_definition.names = _read_node() as ident_list;
_where_definition.types = _read_node() as where_type_specificator_list;
}
public void visit(where_definition_list _where_definition_list)
{
read_where_definition_list(_where_definition_list);
}
public void read_where_definition_list(where_definition_list _where_definition_list)
{
read_syntax_tree_node(_where_definition_list);
if (br.ReadByte() == 0)
{
_where_definition_list.defs = null;
}
else
{
_where_definition_list.defs = new List<where_definition>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_where_definition_list.defs.Add(_read_node() as where_definition);
}
}
}
public void visit(sizeof_operator _sizeof_operator)
{
read_sizeof_operator(_sizeof_operator);
}
public void read_sizeof_operator(sizeof_operator _sizeof_operator)
{
read_addressed_value(_sizeof_operator);
_sizeof_operator.type_def = _read_node() as type_definition;
_sizeof_operator.expr = _read_node() as expression;
}
public void visit(typeof_operator _typeof_operator)
{
read_typeof_operator(_typeof_operator);
}
public void read_typeof_operator(typeof_operator _typeof_operator)
{
read_addressed_value(_typeof_operator);
_typeof_operator.type_name = _read_node() as named_type_reference;
}
public void visit(compiler_directive _compiler_directive)
{
read_compiler_directive(_compiler_directive);
}
public void read_compiler_directive(compiler_directive _compiler_directive)
{
read_syntax_tree_node(_compiler_directive);
_compiler_directive.Name = _read_node() as token_info;
_compiler_directive.Directive = _read_node() as token_info;
}
public void visit(operator_name_ident _operator_name_ident)
{
read_operator_name_ident(_operator_name_ident);
}
public void read_operator_name_ident(operator_name_ident _operator_name_ident)
{
read_ident(_operator_name_ident);
_operator_name_ident.operator_type = (Operators)br.ReadByte();
}
public void visit(var_statement _var_statement)
{
read_var_statement(_var_statement);
}
public void read_var_statement(var_statement _var_statement)
{
read_statement(_var_statement);
_var_statement.var_def = _read_node() as var_def_statement;
}
public void visit(question_colon_expression _question_colon_expression)
{
read_question_colon_expression(_question_colon_expression);
}
public void read_question_colon_expression(question_colon_expression _question_colon_expression)
{
read_addressed_value(_question_colon_expression);
_question_colon_expression.condition = _read_node() as expression;
_question_colon_expression.ret_if_true = _read_node() as expression;
_question_colon_expression.ret_if_false = _read_node() as expression;
}
public void visit(expression_as_statement _expression_as_statement)
{
read_expression_as_statement(_expression_as_statement);
}
public void read_expression_as_statement(expression_as_statement _expression_as_statement)
{
read_statement(_expression_as_statement);
_expression_as_statement.expr = _read_node() as expression;
}
public void visit(c_scalar_type _c_scalar_type)
{
read_c_scalar_type(_c_scalar_type);
}
public void read_c_scalar_type(c_scalar_type _c_scalar_type)
{
read_type_definition(_c_scalar_type);
_c_scalar_type.scalar_name = (c_scalar_type_name)br.ReadByte();
_c_scalar_type.sign = (c_scalar_sign)br.ReadByte();
}
public void visit(c_module _c_module)
{
read_c_module(_c_module);
}
public void read_c_module(c_module _c_module)
{
read_compilation_unit(_c_module);
_c_module.defs = _read_node() as declarations;
_c_module.used_units = _read_node() as uses_list;
}
public void visit(declarations_as_statement _declarations_as_statement)
{
read_declarations_as_statement(_declarations_as_statement);
}
public void read_declarations_as_statement(declarations_as_statement _declarations_as_statement)
{
read_statement(_declarations_as_statement);
_declarations_as_statement.defs = _read_node() as declarations;
}
public void visit(array_size _array_size)
{
read_array_size(_array_size);
}
public void read_array_size(array_size _array_size)
{
read_type_definition(_array_size);
_array_size.max_value = _read_node() as expression;
}
public void visit(enumerator _enumerator)
{
read_enumerator(_enumerator);
}
public void read_enumerator(enumerator _enumerator)
{
read_syntax_tree_node(_enumerator);
_enumerator.name = _read_node() as type_definition;
_enumerator.value = _read_node() as expression;
}
public void visit(enumerator_list _enumerator_list)
{
read_enumerator_list(_enumerator_list);
}
public void read_enumerator_list(enumerator_list _enumerator_list)
{
read_syntax_tree_node(_enumerator_list);
if (br.ReadByte() == 0)
{
_enumerator_list.enumerators = null;
}
else
{
_enumerator_list.enumerators = new List<enumerator>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_enumerator_list.enumerators.Add(_read_node() as enumerator);
}
}
}
public void visit(c_for_cycle _c_for_cycle)
{
read_c_for_cycle(_c_for_cycle);
}
public void read_c_for_cycle(c_for_cycle _c_for_cycle)
{
read_statement(_c_for_cycle);
_c_for_cycle.expr1 = _read_node() as statement;
_c_for_cycle.expr2 = _read_node() as expression;
_c_for_cycle.expr3 = _read_node() as expression;
_c_for_cycle.stmt = _read_node() as statement;
}
public void visit(switch_stmt _switch_stmt)
{
read_switch_stmt(_switch_stmt);
}
public void read_switch_stmt(switch_stmt _switch_stmt)
{
read_statement(_switch_stmt);
_switch_stmt.condition = _read_node() as expression;
_switch_stmt.stmt = _read_node() as statement;
_switch_stmt.Part = (SwitchPartType)br.ReadByte();
}
public void visit(type_definition_attr_list _type_definition_attr_list)
{
read_type_definition_attr_list(_type_definition_attr_list);
}
public void read_type_definition_attr_list(type_definition_attr_list _type_definition_attr_list)
{
read_syntax_tree_node(_type_definition_attr_list);
if (br.ReadByte() == 0)
{
_type_definition_attr_list.attributes = null;
}
else
{
_type_definition_attr_list.attributes = new List<type_definition_attr>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_type_definition_attr_list.attributes.Add(_read_node() as type_definition_attr);
}
}
}
public void visit(type_definition_attr _type_definition_attr)
{
read_type_definition_attr(_type_definition_attr);
}
public void read_type_definition_attr(type_definition_attr _type_definition_attr)
{
read_type_definition(_type_definition_attr);
_type_definition_attr.attr = (definition_attribute)br.ReadByte();
}
public void visit(lock_stmt _lock_stmt)
{
read_lock_stmt(_lock_stmt);
}
public void read_lock_stmt(lock_stmt _lock_stmt)
{
read_statement(_lock_stmt);
_lock_stmt.lock_object = _read_node() as expression;
_lock_stmt.stmt = _read_node() as statement;
}
public void visit(compiler_directive_list _compiler_directive_list)
{
read_compiler_directive_list(_compiler_directive_list);
}
public void read_compiler_directive_list(compiler_directive_list _compiler_directive_list)
{
read_compiler_directive(_compiler_directive_list);
if (br.ReadByte() == 0)
{
_compiler_directive_list.directives = null;
}
else
{
_compiler_directive_list.directives = new List<compiler_directive>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_compiler_directive_list.directives.Add(_read_node() as compiler_directive);
}
}
}
public void visit(compiler_directive_if _compiler_directive_if)
{
read_compiler_directive_if(_compiler_directive_if);
}
public void read_compiler_directive_if(compiler_directive_if _compiler_directive_if)
{
read_compiler_directive(_compiler_directive_if);
_compiler_directive_if.if_part = _read_node() as compiler_directive;
_compiler_directive_if.elseif_part = _read_node() as compiler_directive;
}
public void visit(documentation_comment_list _documentation_comment_list)
{
read_documentation_comment_list(_documentation_comment_list);
}
public void read_documentation_comment_list(documentation_comment_list _documentation_comment_list)
{
read_syntax_tree_node(_documentation_comment_list);
if (br.ReadByte() == 0)
{
_documentation_comment_list.sections = null;
}
else
{
_documentation_comment_list.sections = new List<documentation_comment_section>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_documentation_comment_list.sections.Add(_read_node() as documentation_comment_section);
}
}
}
public void visit(documentation_comment_tag _documentation_comment_tag)
{
read_documentation_comment_tag(_documentation_comment_tag);
}
public void read_documentation_comment_tag(documentation_comment_tag _documentation_comment_tag)
{
read_syntax_tree_node(_documentation_comment_tag);
if (br.ReadByte() == 0)
{
_documentation_comment_tag.name = null;
}
else
{
_documentation_comment_tag.name = br.ReadString();
}
if (br.ReadByte() == 0)
{
_documentation_comment_tag.parameters = null;
}
else
{
_documentation_comment_tag.parameters = new List<documentation_comment_tag_param>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_documentation_comment_tag.parameters.Add(_read_node() as documentation_comment_tag_param);
}
}
if (br.ReadByte() == 0)
{
_documentation_comment_tag.text = null;
}
else
{
_documentation_comment_tag.text = br.ReadString();
}
}
public void visit(documentation_comment_tag_param _documentation_comment_tag_param)
{
read_documentation_comment_tag_param(_documentation_comment_tag_param);
}
public void read_documentation_comment_tag_param(documentation_comment_tag_param _documentation_comment_tag_param)
{
read_syntax_tree_node(_documentation_comment_tag_param);
if (br.ReadByte() == 0)
{
_documentation_comment_tag_param.name = null;
}
else
{
_documentation_comment_tag_param.name = br.ReadString();
}
if (br.ReadByte() == 0)
{
_documentation_comment_tag_param.value = null;
}
else
{
_documentation_comment_tag_param.value = br.ReadString();
}
}
public void visit(documentation_comment_section _documentation_comment_section)
{
read_documentation_comment_section(_documentation_comment_section);
}
public void read_documentation_comment_section(documentation_comment_section _documentation_comment_section)
{
read_syntax_tree_node(_documentation_comment_section);
if (br.ReadByte() == 0)
{
_documentation_comment_section.tags = null;
}
else
{
_documentation_comment_section.tags = new List<documentation_comment_tag>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_documentation_comment_section.tags.Add(_read_node() as documentation_comment_tag);
}
}
if (br.ReadByte() == 0)
{
_documentation_comment_section.text = null;
}
else
{
_documentation_comment_section.text = br.ReadString();
}
}
public void visit(token_taginfo _token_taginfo)
{
read_token_taginfo(_token_taginfo);
}
public void read_token_taginfo(token_taginfo _token_taginfo)
{
read_token_info(_token_taginfo);
_token_taginfo.tag = (object)br.ReadByte();
}
public void visit(declaration_specificator _declaration_specificator)
{
read_declaration_specificator(_declaration_specificator);
}
public void read_declaration_specificator(declaration_specificator _declaration_specificator)
{
read_type_definition(_declaration_specificator);
_declaration_specificator.specificator = (DeclarationSpecificator)br.ReadByte();
if (br.ReadByte() == 0)
{
_declaration_specificator.name = null;
}
else
{
_declaration_specificator.name = br.ReadString();
}
}
public void visit(ident_with_templateparams _ident_with_templateparams)
{
read_ident_with_templateparams(_ident_with_templateparams);
}
public void read_ident_with_templateparams(ident_with_templateparams _ident_with_templateparams)
{
read_addressed_value_funcname(_ident_with_templateparams);
_ident_with_templateparams.name = _read_node() as addressed_value;
_ident_with_templateparams.template_params = _read_node() as template_param_list;
}
public void visit(template_type_name _template_type_name)
{
read_template_type_name(_template_type_name);
}
public void read_template_type_name(template_type_name _template_type_name)
{
read_ident(_template_type_name);
_template_type_name.template_args = _read_node() as ident_list;
}
public void visit(default_operator _default_operator)
{
read_default_operator(_default_operator);
}
public void read_default_operator(default_operator _default_operator)
{
read_addressed_value(_default_operator);
_default_operator.type_name = _read_node() as named_type_reference;
}
public void visit(bracket_expr _bracket_expr)
{
read_bracket_expr(_bracket_expr);
}
public void read_bracket_expr(bracket_expr _bracket_expr)
{
read_addressed_value(_bracket_expr);
_bracket_expr.expr = _read_node() as expression;
}
public void visit(attribute _attribute)
{
read_attribute(_attribute);
}
public void read_attribute(attribute _attribute)
{
read_syntax_tree_node(_attribute);
_attribute.qualifier = _read_node() as ident;
_attribute.type = _read_node() as named_type_reference;
_attribute.arguments = _read_node() as expression_list;
}
public void visit(simple_attribute_list _simple_attribute_list)
{
read_simple_attribute_list(_simple_attribute_list);
}
public void read_simple_attribute_list(simple_attribute_list _simple_attribute_list)
{
read_syntax_tree_node(_simple_attribute_list);
if (br.ReadByte() == 0)
{
_simple_attribute_list.attributes = null;
}
else
{
_simple_attribute_list.attributes = new List<attribute>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_simple_attribute_list.attributes.Add(_read_node() as attribute);
}
}
}
public void visit(attribute_list _attribute_list)
{
read_attribute_list(_attribute_list);
}
public void read_attribute_list(attribute_list _attribute_list)
{
read_syntax_tree_node(_attribute_list);
if (br.ReadByte() == 0)
{
_attribute_list.attributes = null;
}
else
{
_attribute_list.attributes = new List<simple_attribute_list>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_attribute_list.attributes.Add(_read_node() as simple_attribute_list);
}
}
}
public void visit(function_lambda_definition _function_lambda_definition)
{
read_function_lambda_definition(_function_lambda_definition);
}
public void read_function_lambda_definition(function_lambda_definition _function_lambda_definition)
{
read_expression(_function_lambda_definition);
_function_lambda_definition.ident_list = _read_node() as ident_list;
_function_lambda_definition.return_type = _read_node() as type_definition;
_function_lambda_definition.formal_parameters = _read_node() as formal_parameters;
_function_lambda_definition.proc_body = _read_node() as statement;
_function_lambda_definition.proc_definition = (object)br.ReadByte();
_function_lambda_definition.parameters = _read_node() as expression_list;
if (br.ReadByte() == 0)
{
_function_lambda_definition.lambda_name = null;
}
else
{
_function_lambda_definition.lambda_name = br.ReadString();
}
if (br.ReadByte() == 0)
{
_function_lambda_definition.defs = null;
}
else
{
_function_lambda_definition.defs = new List<declaration>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_function_lambda_definition.defs.Add(_read_node() as declaration);
}
}
_function_lambda_definition.lambda_visit_mode = (LambdaVisitMode)br.ReadByte();
_function_lambda_definition.substituting_node = _read_node() as syntax_tree_node;
_function_lambda_definition.usedkeyword = (int)br.ReadByte();
}
public void visit(function_lambda_call _function_lambda_call)
{
read_function_lambda_call(_function_lambda_call);
}
public void read_function_lambda_call(function_lambda_call _function_lambda_call)
{
read_expression(_function_lambda_call);
_function_lambda_call.f_lambda_def = _read_node() as function_lambda_definition;
_function_lambda_call.parameters = _read_node() as expression_list;
}
public void visit(semantic_check _semantic_check)
{
read_semantic_check(_semantic_check);
}
public void read_semantic_check(semantic_check _semantic_check)
{
read_statement(_semantic_check);
if (br.ReadByte() == 0)
{
_semantic_check.CheckName = null;
}
else
{
_semantic_check.CheckName = br.ReadString();
}
if (br.ReadByte() == 0)
{
_semantic_check.param = null;
}
else
{
_semantic_check.param = new List<syntax_tree_node>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_semantic_check.param.Add(_read_node() as syntax_tree_node);
}
}
_semantic_check.fictive = (int)br.ReadByte();
}
public void visit(lambda_inferred_type _lambda_inferred_type)
{
read_lambda_inferred_type(_lambda_inferred_type);
}
public void read_lambda_inferred_type(lambda_inferred_type _lambda_inferred_type)
{
read_type_definition(_lambda_inferred_type);
_lambda_inferred_type.real_type = (object)br.ReadByte();
}
public void visit(same_type_node _same_type_node)
{
read_same_type_node(_same_type_node);
}
public void read_same_type_node(same_type_node _same_type_node)
{
read_type_definition(_same_type_node);
_same_type_node.ex = _read_node() as expression;
}
public void visit(name_assign_expr _name_assign_expr)
{
read_name_assign_expr(_name_assign_expr);
}
public void read_name_assign_expr(name_assign_expr _name_assign_expr)
{
read_syntax_tree_node(_name_assign_expr);
_name_assign_expr.name = _read_node() as ident;
_name_assign_expr.expr = _read_node() as expression;
}
public void visit(name_assign_expr_list _name_assign_expr_list)
{
read_name_assign_expr_list(_name_assign_expr_list);
}
public void read_name_assign_expr_list(name_assign_expr_list _name_assign_expr_list)
{
read_syntax_tree_node(_name_assign_expr_list);
if (br.ReadByte() == 0)
{
_name_assign_expr_list.name_expr = null;
}
else
{
_name_assign_expr_list.name_expr = new List<name_assign_expr>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_name_assign_expr_list.name_expr.Add(_read_node() as name_assign_expr);
}
}
}
public void visit(unnamed_type_object _unnamed_type_object)
{
read_unnamed_type_object(_unnamed_type_object);
}
public void read_unnamed_type_object(unnamed_type_object _unnamed_type_object)
{
read_addressed_value(_unnamed_type_object);
_unnamed_type_object.ne_list = _read_node() as name_assign_expr_list;
_unnamed_type_object.is_class = br.ReadBoolean();
_unnamed_type_object.new_ex = _read_node() as new_expr;
}
public void visit(semantic_type_node _semantic_type_node)
{
read_semantic_type_node(_semantic_type_node);
}
public void read_semantic_type_node(semantic_type_node _semantic_type_node)
{
read_type_definition(_semantic_type_node);
_semantic_type_node.type = (Object)br.ReadByte();
}
public void visit(short_func_definition _short_func_definition)
{
read_short_func_definition(_short_func_definition);
}
public void read_short_func_definition(short_func_definition _short_func_definition)
{
read_procedure_definition(_short_func_definition);
_short_func_definition.procdef = _read_node() as procedure_definition;
}
public void visit(no_type_foreach _no_type_foreach)
{
read_no_type_foreach(_no_type_foreach);
}
public void read_no_type_foreach(no_type_foreach _no_type_foreach)
{
read_type_definition(_no_type_foreach);
}
public void visit(matching_expression _matching_expression)
{
read_matching_expression(_matching_expression);
}
public void read_matching_expression(matching_expression _matching_expression)
{
read_addressed_value(_matching_expression);
_matching_expression.left = _read_node() as expression;
_matching_expression.right = _read_node() as expression;
}
public void visit(closure_substituting_node _closure_substituting_node)
{
read_closure_substituting_node(_closure_substituting_node);
}
public void read_closure_substituting_node(closure_substituting_node _closure_substituting_node)
{
read_ident(_closure_substituting_node);
_closure_substituting_node.substitution = _read_node() as dot_node;
}
public void visit(sequence_type _sequence_type)
{
read_sequence_type(_sequence_type);
}
public void read_sequence_type(sequence_type _sequence_type)
{
read_type_definition(_sequence_type);
_sequence_type.elements_type = _read_node() as type_definition;
}
public void visit(modern_proc_type _modern_proc_type)
{
read_modern_proc_type(_modern_proc_type);
}
public void read_modern_proc_type(modern_proc_type _modern_proc_type)
{
read_type_definition(_modern_proc_type);
_modern_proc_type.aloneparam = _read_node() as type_definition;
_modern_proc_type.el = _read_node() as enumerator_list;
_modern_proc_type.res = _read_node() as type_definition;
}
public void visit(yield_node _yield_node)
{
read_yield_node(_yield_node);
}
public void read_yield_node(yield_node _yield_node)
{
read_statement(_yield_node);
_yield_node.ex = _read_node() as expression;
}
public void visit(template_operator_name _template_operator_name)
{
read_template_operator_name(_template_operator_name);
}
public void read_template_operator_name(template_operator_name _template_operator_name)
{
read_template_type_name(_template_operator_name);
_template_operator_name.opname = _read_node() as operator_name_ident;
}
public void visit(semantic_addr_value _semantic_addr_value)
{
read_semantic_addr_value(_semantic_addr_value);
}
public void read_semantic_addr_value(semantic_addr_value _semantic_addr_value)
{
read_addressed_value(_semantic_addr_value);
_semantic_addr_value.expr = (Object)br.ReadByte();
}
public void visit(pair_type_stlist _pair_type_stlist)
{
read_pair_type_stlist(_pair_type_stlist);
}
public void read_pair_type_stlist(pair_type_stlist _pair_type_stlist)
{
read_syntax_tree_node(_pair_type_stlist);
_pair_type_stlist.tn = _read_node() as type_definition;
_pair_type_stlist.exprs = _read_node() as statement_list;
}
public void visit(assign_tuple _assign_tuple)
{
read_assign_tuple(_assign_tuple);
}
public void read_assign_tuple(assign_tuple _assign_tuple)
{
read_statement(_assign_tuple);
_assign_tuple.vars = _read_node() as addressed_value_list;
_assign_tuple.expr = _read_node() as expression;
}
public void visit(addressed_value_list _addressed_value_list)
{
read_addressed_value_list(_addressed_value_list);
}
public void read_addressed_value_list(addressed_value_list _addressed_value_list)
{
read_syntax_tree_node(_addressed_value_list);
if (br.ReadByte() == 0)
{
_addressed_value_list.variables = null;
}
else
{
_addressed_value_list.variables = new List<addressed_value>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_addressed_value_list.variables.Add(_read_node() as addressed_value);
}
}
}
public void visit(tuple_node _tuple_node)
{
read_tuple_node(_tuple_node);
}
public void read_tuple_node(tuple_node _tuple_node)
{
read_addressed_value(_tuple_node);
_tuple_node.el = _read_node() as expression_list;
}
public void visit(uses_closure _uses_closure)
{
read_uses_closure(_uses_closure);
}
public void read_uses_closure(uses_closure _uses_closure)
{
read_uses_list(_uses_closure);
if (br.ReadByte() == 0)
{
_uses_closure.listunitsections = null;
}
else
{
_uses_closure.listunitsections = new List<uses_list>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_uses_closure.listunitsections.Add(_read_node() as uses_list);
}
}
}
public void visit(dot_question_node _dot_question_node)
{
read_dot_question_node(_dot_question_node);
}
public void read_dot_question_node(dot_question_node _dot_question_node)
{
read_addressed_value_funcname(_dot_question_node);
_dot_question_node.left = _read_node() as addressed_value;
_dot_question_node.right = _read_node() as addressed_value;
}
public void visit(slice_expr _slice_expr)
{
read_slice_expr(_slice_expr);
}
public void read_slice_expr(slice_expr _slice_expr)
{
read_dereference(_slice_expr);
_slice_expr.v = _read_node() as addressed_value;
_slice_expr.from = _read_node() as expression;
_slice_expr.to = _read_node() as expression;
_slice_expr.step = _read_node() as expression;
}
public void visit(no_type _no_type)
{
read_no_type(_no_type);
}
public void read_no_type(no_type _no_type)
{
read_type_definition(_no_type);
}
public void visit(yield_unknown_ident _yield_unknown_ident)
{
read_yield_unknown_ident(_yield_unknown_ident);
}
public void read_yield_unknown_ident(yield_unknown_ident _yield_unknown_ident)
{
read_ident(_yield_unknown_ident);
}
public void visit(yield_unknown_expression_type _yield_unknown_expression_type)
{
read_yield_unknown_expression_type(_yield_unknown_expression_type);
}
public void read_yield_unknown_expression_type(yield_unknown_expression_type _yield_unknown_expression_type)
{
read_type_definition(_yield_unknown_expression_type);
}
public void visit(yield_unknown_foreach_type _yield_unknown_foreach_type)
{
read_yield_unknown_foreach_type(_yield_unknown_foreach_type);
}
public void read_yield_unknown_foreach_type(yield_unknown_foreach_type _yield_unknown_foreach_type)
{
read_type_definition(_yield_unknown_foreach_type);
}
public void visit(yield_sequence_node _yield_sequence_node)
{
read_yield_sequence_node(_yield_sequence_node);
}
public void read_yield_sequence_node(yield_sequence_node _yield_sequence_node)
{
read_statement(_yield_sequence_node);
_yield_sequence_node.ex = _read_node() as expression;
}
public void visit(assign_var_tuple _assign_var_tuple)
{
read_assign_var_tuple(_assign_var_tuple);
}
public void read_assign_var_tuple(assign_var_tuple _assign_var_tuple)
{
read_statement(_assign_var_tuple);
_assign_var_tuple.idents = _read_node() as ident_list;
_assign_var_tuple.expr = _read_node() as expression;
}
public void visit(slice_expr_question _slice_expr_question)
{
read_slice_expr_question(_slice_expr_question);
}
public void read_slice_expr_question(slice_expr_question _slice_expr_question)
{
read_slice_expr(_slice_expr_question);
}
public void visit(semantic_check_sugared_statement_node _semantic_check_sugared_statement_node)
{
read_semantic_check_sugared_statement_node(_semantic_check_sugared_statement_node);
}
public void read_semantic_check_sugared_statement_node(semantic_check_sugared_statement_node _semantic_check_sugared_statement_node)
{
read_statement(_semantic_check_sugared_statement_node);
_semantic_check_sugared_statement_node.typ = (object)br.ReadByte();
if (br.ReadByte() == 0)
{
_semantic_check_sugared_statement_node.lst = null;
}
else
{
_semantic_check_sugared_statement_node.lst = new List<syntax_tree_node>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_semantic_check_sugared_statement_node.lst.Add(_read_node() as syntax_tree_node);
}
}
}
public void visit(sugared_expression _sugared_expression)
{
read_sugared_expression(_sugared_expression);
}
public void read_sugared_expression(sugared_expression _sugared_expression)
{
read_expression(_sugared_expression);
_sugared_expression.sugared_expr = (object)br.ReadByte();
_sugared_expression.new_expr = _read_node() as expression;
}
public void visit(sugared_addressed_value _sugared_addressed_value)
{
read_sugared_addressed_value(_sugared_addressed_value);
}
public void read_sugared_addressed_value(sugared_addressed_value _sugared_addressed_value)
{
read_addressed_value(_sugared_addressed_value);
_sugared_addressed_value.sugared_expr = (object)br.ReadByte();
_sugared_addressed_value.new_addr_value = _read_node() as addressed_value;
}
public void visit(double_question_node _double_question_node)
{
read_double_question_node(_double_question_node);
}
public void read_double_question_node(double_question_node _double_question_node)
{
read_addressed_value_funcname(_double_question_node);
_double_question_node.left = _read_node() as expression;
_double_question_node.right = _read_node() as expression;
}
public void visit(pattern_node _pattern_node)
{
read_pattern_node(_pattern_node);
}
public void read_pattern_node(pattern_node _pattern_node)
{
read_syntax_tree_node(_pattern_node);
if (br.ReadByte() == 0)
{
_pattern_node.parameters = null;
}
else
{
_pattern_node.parameters = new List<pattern_parameter>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_pattern_node.parameters.Add(_read_node() as pattern_parameter);
}
}
}
public void visit(type_pattern _type_pattern)
{
read_type_pattern(_type_pattern);
}
public void read_type_pattern(type_pattern _type_pattern)
{
read_pattern_node(_type_pattern);
_type_pattern.identifier = _read_node() as ident;
_type_pattern.type = _read_node() as type_definition;
}
public void visit(is_pattern_expr _is_pattern_expr)
{
read_is_pattern_expr(_is_pattern_expr);
}
public void read_is_pattern_expr(is_pattern_expr _is_pattern_expr)
{
read_addressed_value(_is_pattern_expr);
_is_pattern_expr.left = _read_node() as expression;
_is_pattern_expr.right = _read_node() as pattern_node;
}
public void visit(match_with _match_with)
{
read_match_with(_match_with);
}
public void read_match_with(match_with _match_with)
{
read_statement(_match_with);
_match_with.expr = _read_node() as expression;
_match_with.case_list = _read_node() as pattern_cases;
_match_with.defaultAction = _read_node() as statement;
}
public void visit(pattern_case _pattern_case)
{
read_pattern_case(_pattern_case);
}
public void read_pattern_case(pattern_case _pattern_case)
{
read_statement(_pattern_case);
_pattern_case.pattern = _read_node() as pattern_node;
_pattern_case.case_action = _read_node() as statement;
_pattern_case.condition = _read_node() as expression;
}
public void visit(pattern_cases _pattern_cases)
{
read_pattern_cases(_pattern_cases);
}
public void read_pattern_cases(pattern_cases _pattern_cases)
{
read_statement(_pattern_cases);
if (br.ReadByte() == 0)
{
_pattern_cases.elements = null;
}
else
{
_pattern_cases.elements = new List<pattern_case>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_pattern_cases.elements.Add(_read_node() as pattern_case);
}
}
}
public void visit(deconstructor_pattern _deconstructor_pattern)
{
read_deconstructor_pattern(_deconstructor_pattern);
}
public void read_deconstructor_pattern(deconstructor_pattern _deconstructor_pattern)
{
read_pattern_node(_deconstructor_pattern);
_deconstructor_pattern.type = _read_node() as type_definition;
_deconstructor_pattern.const_params_check = _read_node() as expression;
}
public void visit(pattern_parameter _pattern_parameter)
{
read_pattern_parameter(_pattern_parameter);
}
public void read_pattern_parameter(pattern_parameter _pattern_parameter)
{
read_syntax_tree_node(_pattern_parameter);
}
public void visit(desugared_deconstruction _desugared_deconstruction)
{
read_desugared_deconstruction(_desugared_deconstruction);
}
public void read_desugared_deconstruction(desugared_deconstruction _desugared_deconstruction)
{
read_statement(_desugared_deconstruction);
_desugared_deconstruction.variables = _read_node() as deconstruction_variables_definition;
_desugared_deconstruction.deconstruction_target = _read_node() as expression;
}
public void visit(var_deconstructor_parameter _var_deconstructor_parameter)
{
read_var_deconstructor_parameter(_var_deconstructor_parameter);
}
public void read_var_deconstructor_parameter(var_deconstructor_parameter _var_deconstructor_parameter)
{
read_pattern_parameter(_var_deconstructor_parameter);
_var_deconstructor_parameter.identifier = _read_node() as ident;
_var_deconstructor_parameter.type = _read_node() as type_definition;
_var_deconstructor_parameter.var_keyword_used = br.ReadBoolean();
}
public void visit(recursive_deconstructor_parameter _recursive_deconstructor_parameter)
{
read_recursive_deconstructor_parameter(_recursive_deconstructor_parameter);
}
public void read_recursive_deconstructor_parameter(recursive_deconstructor_parameter _recursive_deconstructor_parameter)
{
read_recursive_pattern_parameter(_recursive_deconstructor_parameter);
}
public void visit(deconstruction_variables_definition _deconstruction_variables_definition)
{
read_deconstruction_variables_definition(_deconstruction_variables_definition);
}
public void read_deconstruction_variables_definition(deconstruction_variables_definition _deconstruction_variables_definition)
{
read_declaration(_deconstruction_variables_definition);
if (br.ReadByte() == 0)
{
_deconstruction_variables_definition.definitions = null;
}
else
{
_deconstruction_variables_definition.definitions = new List<var_def_statement>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_deconstruction_variables_definition.definitions.Add(_read_node() as var_def_statement);
}
}
}
public void visit(var_tuple_def_statement _var_tuple_def_statement)
{
read_var_tuple_def_statement(_var_tuple_def_statement);
}
public void read_var_tuple_def_statement(var_tuple_def_statement _var_tuple_def_statement)
{
read_var_def_statement(_var_tuple_def_statement);
}
public void visit(semantic_check_sugared_var_def_statement_node _semantic_check_sugared_var_def_statement_node)
{
read_semantic_check_sugared_var_def_statement_node(_semantic_check_sugared_var_def_statement_node);
}
public void read_semantic_check_sugared_var_def_statement_node(semantic_check_sugared_var_def_statement_node _semantic_check_sugared_var_def_statement_node)
{
read_var_def_statement(_semantic_check_sugared_var_def_statement_node);
_semantic_check_sugared_var_def_statement_node.typ = (object)br.ReadByte();
if (br.ReadByte() == 0)
{
_semantic_check_sugared_var_def_statement_node.lst = null;
}
else
{
_semantic_check_sugared_var_def_statement_node.lst = new List<syntax_tree_node>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_semantic_check_sugared_var_def_statement_node.lst.Add(_read_node() as syntax_tree_node);
}
}
}
public void visit(const_pattern _const_pattern)
{
read_const_pattern(_const_pattern);
}
public void read_const_pattern(const_pattern _const_pattern)
{
read_pattern_node(_const_pattern);
_const_pattern.pattern_expressions = _read_node() as expression_list;
}
public void visit(tuple_pattern_wild_card _tuple_pattern_wild_card)
{
read_tuple_pattern_wild_card(_tuple_pattern_wild_card);
}
public void read_tuple_pattern_wild_card(tuple_pattern_wild_card _tuple_pattern_wild_card)
{
read_pattern_parameter(_tuple_pattern_wild_card);
}
public void visit(const_pattern_parameter _const_pattern_parameter)
{
read_const_pattern_parameter(_const_pattern_parameter);
}
public void read_const_pattern_parameter(const_pattern_parameter _const_pattern_parameter)
{
read_pattern_parameter(_const_pattern_parameter);
_const_pattern_parameter.const_param = _read_node() as expression;
}
public void visit(wild_card_deconstructor_parameter _wild_card_deconstructor_parameter)
{
read_wild_card_deconstructor_parameter(_wild_card_deconstructor_parameter);
}
public void read_wild_card_deconstructor_parameter(wild_card_deconstructor_parameter _wild_card_deconstructor_parameter)
{
read_pattern_parameter(_wild_card_deconstructor_parameter);
}
public void visit(collection_pattern _collection_pattern)
{
read_collection_pattern(_collection_pattern);
}
public void read_collection_pattern(collection_pattern _collection_pattern)
{
read_pattern_node(_collection_pattern);
}
public void visit(collection_pattern_gap_parameter _collection_pattern_gap_parameter)
{
read_collection_pattern_gap_parameter(_collection_pattern_gap_parameter);
}
public void read_collection_pattern_gap_parameter(collection_pattern_gap_parameter _collection_pattern_gap_parameter)
{
read_pattern_parameter(_collection_pattern_gap_parameter);
}
public void visit(collection_pattern_wild_card _collection_pattern_wild_card)
{
read_collection_pattern_wild_card(_collection_pattern_wild_card);
}
public void read_collection_pattern_wild_card(collection_pattern_wild_card _collection_pattern_wild_card)
{
read_pattern_parameter(_collection_pattern_wild_card);
}
public void visit(collection_pattern_var_parameter _collection_pattern_var_parameter)
{
read_collection_pattern_var_parameter(_collection_pattern_var_parameter);
}
public void read_collection_pattern_var_parameter(collection_pattern_var_parameter _collection_pattern_var_parameter)
{
read_pattern_parameter(_collection_pattern_var_parameter);
_collection_pattern_var_parameter.identifier = _read_node() as ident;
_collection_pattern_var_parameter.type = _read_node() as type_definition;
}
public void visit(recursive_collection_parameter _recursive_collection_parameter)
{
read_recursive_collection_parameter(_recursive_collection_parameter);
}
public void read_recursive_collection_parameter(recursive_collection_parameter _recursive_collection_parameter)
{
read_recursive_pattern_parameter(_recursive_collection_parameter);
}
public void visit(recursive_pattern_parameter _recursive_pattern_parameter)
{
read_recursive_pattern_parameter(_recursive_pattern_parameter);
}
public void read_recursive_pattern_parameter(recursive_pattern_parameter _recursive_pattern_parameter)
{
read_pattern_parameter(_recursive_pattern_parameter);
_recursive_pattern_parameter.pattern = _read_node() as pattern_node;
}
public void visit(tuple_pattern _tuple_pattern)
{
read_tuple_pattern(_tuple_pattern);
}
public void read_tuple_pattern(tuple_pattern _tuple_pattern)
{
read_pattern_node(_tuple_pattern);
}
public void visit(tuple_pattern_var_parameter _tuple_pattern_var_parameter)
{
read_tuple_pattern_var_parameter(_tuple_pattern_var_parameter);
}
public void read_tuple_pattern_var_parameter(tuple_pattern_var_parameter _tuple_pattern_var_parameter)
{
read_pattern_parameter(_tuple_pattern_var_parameter);
_tuple_pattern_var_parameter.identifier = _read_node() as ident;
_tuple_pattern_var_parameter.type = _read_node() as type_definition;
}
public void visit(recursive_tuple_parameter _recursive_tuple_parameter)
{
read_recursive_tuple_parameter(_recursive_tuple_parameter);
}
public void read_recursive_tuple_parameter(recursive_tuple_parameter _recursive_tuple_parameter)
{
read_recursive_pattern_parameter(_recursive_tuple_parameter);
}
public void visit(diapason_expr_new _diapason_expr_new)
{
read_diapason_expr_new(_diapason_expr_new);
}
public void read_diapason_expr_new(diapason_expr_new _diapason_expr_new)
{
read_addressed_value(_diapason_expr_new);
_diapason_expr_new.left = _read_node() as expression;
_diapason_expr_new.right = _read_node() as expression;
}
public void visit(if_expr_new _if_expr_new)
{
read_if_expr_new(_if_expr_new);
}
public void read_if_expr_new(if_expr_new _if_expr_new)
{
read_expression(_if_expr_new);
_if_expr_new.condition = _read_node() as expression;
_if_expr_new.if_true = _read_node() as expression;
_if_expr_new.if_false = _read_node() as expression;
}
public void visit(simple_expr_with_deref _simple_expr_with_deref)
{
read_simple_expr_with_deref(_simple_expr_with_deref);
}
public void read_simple_expr_with_deref(simple_expr_with_deref _simple_expr_with_deref)
{
read_expression(_simple_expr_with_deref);
_simple_expr_with_deref.simple_expr = _read_node() as expression;
_simple_expr_with_deref.has_deref = br.ReadBoolean();
}
public void visit(index _index)
{
read_index(_index);
}
public void read_index(index _index)
{
read_expression(_index);
_index.index_expr = _read_node() as expression;
_index.inverted = br.ReadBoolean();
}
public void visit(array_const_new _array_const_new)
{
read_array_const_new(_array_const_new);
}
public void read_array_const_new(array_const_new _array_const_new)
{
read_addressed_value(_array_const_new);
_array_const_new.elements = _read_node() as expression_list;
}
public void visit(semantic_ith_element_of _semantic_ith_element_of)
{
read_semantic_ith_element_of(_semantic_ith_element_of);
}
public void read_semantic_ith_element_of(semantic_ith_element_of _semantic_ith_element_of)
{
read_expression(_semantic_ith_element_of);
_semantic_ith_element_of.id = _read_node() as ident;
_semantic_ith_element_of.index = _read_node() as expression;
}
public void visit(bigint_const _bigint_const)
{
read_bigint_const(_bigint_const);
}
public void read_bigint_const(bigint_const _bigint_const)
{
read_const_node(_bigint_const);
_bigint_const.val = br.ReadUInt64();
}
public void visit(foreach_stmt_formatting _foreach_stmt_formatting)
{
read_foreach_stmt_formatting(_foreach_stmt_formatting);
}
public void read_foreach_stmt_formatting(foreach_stmt_formatting _foreach_stmt_formatting)
{
read_statement(_foreach_stmt_formatting);
_foreach_stmt_formatting.il = _read_node() as ident_list;
_foreach_stmt_formatting.in_what = _read_node() as expression;
_foreach_stmt_formatting.stmt = _read_node() as statement;
_foreach_stmt_formatting.index = _read_node() as ident;
}
public void visit(property_ident _property_ident)
{
read_property_ident(_property_ident);
}
public void read_property_ident(property_ident _property_ident)
{
read_ident(_property_ident);
if (br.ReadByte() == 0)
{
_property_ident.ln = null;
}
else
{
_property_ident.ln = new List<ident>();
Int32 ssyy_count = br.ReadInt32();
for(Int32 ssyy_i = 0; ssyy_i < ssyy_count; ssyy_i++)
{
_property_ident.ln.Add(_read_node() as ident);
}
}
}
public void visit(expression_with_let _expression_with_let)
{
read_expression_with_let(_expression_with_let);
}
public void read_expression_with_let(expression_with_let _expression_with_let)
{
read_addressed_value(_expression_with_let);
_expression_with_let.stat = _read_node() as statement_list;
_expression_with_let.expr = _read_node() as expression;
}
}
}