pascalabcnet/VisualPlugins/SyntaxTreeVisualisator/Visitors/get_node_info.cs
2023-12-08 19:37:39 +03:00

1002 lines
21 KiB
C#

using PascalABCCompiler.SyntaxTree;
using System.Collections;
using System;
namespace VisualPascalABCPlugins
{
class string_ref
{
public string s;
}
class get_node_info : AbstractVisitor
{
private string_ref sr;
public get_node_info(string_ref sr)
{
this.sr=sr;
}
public string text
{
get
{
return sr.s;
}
set
{
sr.s=value;
}
}
public static string node(syntax_tree_node tn)
{
string_ref sr=new string_ref();
get_node_info gni=new get_node_info(sr);
tn.visit(gni);
return sr.s;
}
private void get_count(ICollection ic)
{
text="Count: "+ic.Count.ToString();
}
public override void visit(syntax_tree_node _tree_node)
{
}
public override void visit(statement_list _statement_list)
{
//text="Count: "+_statement_list.subnodes.Count;
get_count(_statement_list.subnodes);
}
public override void visit(expression _expression)
{
}
public override void visit(assign _assign)
{
text = "operator_type: " + _assign.operator_type.ToString();
}
public override void visit(bin_expr _bin_expr)
{
text = "operator_type: " + _bin_expr.operation_type.ToString();
}
public override void visit(un_expr _un_expr)
{
text = "operator_type: " + _un_expr.operation_type.ToString();
}
public override void visit(const_node _const_node)
{
}
public override void visit(bool_const _bool_const)
{
text="Value: "+_bool_const.val.ToString();
}
public override void visit(int32_const _int_const)
{
text="Value: "+_int_const.val.ToString();
}
public override void visit(int64_const _int_const)
{
text = "Value: " + _int_const.val.ToString();
}
public override void visit(uint64_const _int_const)
{
text = "Value: " + _int_const.val.ToString();
}
public override void visit(double_const _double_const)
{
text="Value: "+_double_const.val.ToString();
}
public override void visit(statement _statement)
{
}
public override void visit(subprogram_body _subprogram_body)
{
}
public override void visit(ident _ident)
{
text="Name: "+_ident.name;
}
public override void visit(template_type_name node)
{
text = "Name: " + node.name;
}
public override void visit(addressed_value _addressed_value)
{
}
public override void visit(type_definition _type_definition)
{
}
public override void visit(named_type_reference _named_type_reference)
{
//text="Type name: "+_named_type_reference.type_name;
}
public override void visit(variable_definitions _variable_definitions)
{
//text="Count: "+_variable_definitions.var_definitions.Count.ToString();
get_count(_variable_definitions.var_definitions);
}
public override void visit(ident_list _ident_list)
{
//text="Count: "+_ident_list.idents.Count.ToString();
get_count(_ident_list.idents);
}
public override void visit(var_def_statement _var_def_statement)
{
if (_var_def_statement.is_event)
text = "event";
if (_var_def_statement.var_attr != definition_attribute.None)
text += _var_def_statement.var_attr.ToString();
}
public override void visit(declaration _subprogram_definition)
{
}
public override void visit(declarations _subprogram_definitions)
{
get_count(_subprogram_definitions.defs);
}
public override void visit(program_tree _program_tree)
{
//text="Count: "+_program_tree.compilation_units.Count.ToString();
get_count(_program_tree.compilation_units);
}
public override void visit(program_name _program_name)
{
text="program name: "+_program_name.prog_name.name;
}
public override void visit(string_const _string_const)
{
text="Value: "+_string_const.Value;
}
public override void visit(expression_list _expression_list)
{
get_count(_expression_list.expressions);
}
public override void visit(dereference _dereference)
{
}
public override void visit(roof_dereference _roof_dereference)
{
}
public override void visit(indexer _indexer)
{
}
public override void visit(for_node _for_node)
{
text="Cycle type: "+_for_node.cycle_type.ToString();
}
public override void visit(repeat_node _repeat_node)
{
}
public override void visit(while_node _while_node)
{
text = "Cycle type: " + _while_node.CycleType.ToString();
}
public override void visit(if_node _if_node)
{
}
public override void visit(ref_type _ref_type)
{
}
public override void visit(diapason _diapason)
{
}
public override void visit(indexers_types _indexers_types)
{
get_count(_indexers_types.indexers);
}
public override void visit(array_type _array_type)
{
}
public override void visit(label_definitions _label_definitions)
{
}
public override void visit(procedure_attribute _procedure_attribute)
{
text="Attribute: "+_procedure_attribute.attribute_type.ToString();
}
public override void visit(procedure_attributes_list _procedure_attributes_list)
{
get_count(_procedure_attributes_list.proc_attributes);
}
public override void visit(procedure_header _procedure_header)
{
if (_procedure_header.of_object) text+="of object";
if (_procedure_header.class_keyword) text+="class proc";
if (_procedure_header.IsAsync) text += "isAsync";
}
public override void visit(function_header _function_header)
{
if (_function_header.of_object) text += "of object";
if (_function_header.class_keyword) text += "class proc";
}
public override void visit(procedure_definition _procedure_definition)
{
}
public override void visit(type_declaration _type_declaration)
{
}
public override void visit(type_declarations _type_declarations)
{
get_count(_type_declarations.types_decl);
}
public override void visit(simple_const_definition _simple_const_definition)
{
}
public override void visit(typed_const_definition _typed_const_definition)
{
}
public override void visit(const_definition _const_definition)
{
}
public override void visit(consts_definitions_list _consts_definitions_list)
{
get_count(_consts_definitions_list.const_defs);
}
public override void visit(unit_name _unit_name)
{
string keyword="";
switch (_unit_name.HeaderKeyword)
{
case UnitHeaderKeyword.Unit:
keyword = "Unit";
break;
case UnitHeaderKeyword.Library:
keyword = "Library";
break;
}
text = keyword + " name: " + _unit_name.idunit_name.name;
}
public override void visit(unit_or_namespace node)
{
}
public override void visit(uses_unit_in _uses_unit_in)
{
}
public override void visit(uses_list _uses_list)
{
get_count(_uses_list.units);
}
public override void visit(program_body _program_body)
{
}
public override void visit(compilation_unit _compilation_unit)
{
}
public override void visit(unit_module _unit_module)
{
text = System.IO.Path.GetFileName(_unit_module.file_name);
}
public override void visit(program_module _program_module)
{
text=System.IO.Path.GetFileName(_program_module.file_name);
}
public override void visit(typed_parameters _typed_parametres)
{
text=_typed_parametres.param_kind.ToString();
}
public override void visit(formal_parameters _formal_parametres)
{
get_count(_formal_parametres.params_list);
}
public override void visit(hex_constant _hex_constant)
{
text="Value: "+_hex_constant.val;
}
public override void visit(get_address _get_address)
{
}
public override void visit(case_variant _case_variant)
{
}
public override void visit(case_node _case_node)
{
}
public override void visit(method_name _method_name)
{
}
public override void visit(dot_node _dot_node)
{
}
public override void visit(empty_statement _empty_statement)
{
text="empty statement";
}
public override void visit(goto_statement _goto_statement)
{
}
public override void visit(labeled_statement _labeled_statement)
{
}
public override void visit(with_statement _with_statement)
{
}
public override void visit(method_call _method_call)
{
}
public override void visit(pascal_set_constant _pascal_set_constant)
{
}
public override void visit(array_const _array_const)
{
}
public override void visit(write_accessor_name _write_accessor_name)
{
}
public override void visit(read_accessor_name _read_accessor_name)
{
}
public override void visit(property_accessors _property_accessors)
{
}
public override void visit(simple_property node)
{
if (node.attr != definition_attribute.None)
text = node.attr.ToString();
}
public override void visit(index_property _index_property)
{
}
public override void visit(class_members _class_members)
{
get_count(_class_members.members);
}
public override void visit(access_modifer_node _access_modifer_node)
{
text=_access_modifer_node.access_level.ToString();
}
public override void visit(class_body_list _class_body)
{
get_count(_class_body.class_def_blocks);
}
public override void visit(class_definition _class_definition)
{
if(_class_definition.attribute!= class_attribute.None)
text += _class_definition.attribute.ToString()+" ";
text += _class_definition.keyword.ToString();
}
public override void visit(default_indexer_property_node _default_indexer_property_node)
{
}
public override void visit(known_type_definition _known_type_definition)
{
text=_known_type_definition.tp.ToString();
}
public override void visit(set_type_definition _set_type_definition)
{
}
public override void visit(record_const_definition _record_const_definition)
{
}
public override void visit(record_const _record_const)
{
get_count(_record_const.rec_consts);
}
public override void visit(record_type _record_type)
{
//get_count(_record_type.rec_vars);
}
public override void visit(record_type_parts _record_type_parts)
{
//get_count(_record_type.rec_vars);
}
public override void visit(enum_type_definition _enum_type_definition)
{
}
public override void visit(char_const _char_const)
{
text="Value: "+_char_const.cconst;
}
public override void visit(raise_statement _raise_statement)
{
}
public override void visit(sharp_char_const _sharp_char_const)
{
text="Char num: "+_sharp_char_const.char_num.ToString();
}
public override void visit(literal_const_line _sharp_const_line)
{
get_count(_sharp_const_line.literals);
}
public override void visit(string_num_definition _string_num_definition)
{
}
public override void visit(variant _variant)
{
}
public override void visit(variant_list _variant_list)
{
}
public override void visit(variant_type _variant_type)
{
}
public override void visit(variant_types _variant_types)
{
}
public override void visit(variant_record_type _variant_record_type)
{
}
public override void visit(procedure_call _procedure_call)
{
}
public override void visit(class_predefinition _class_predefinition)
{
}
public override void visit(nil_const _nil_const)
{
}
public override void visit(file_type_definition _file_type_definition)
{
}
public override void visit(constructor _constructor)
{
if (_constructor.of_object) text += "of object";
if (_constructor.class_keyword) text += "class proc";
}
public override void visit(destructor _destructor)
{
if (_destructor.of_object) text += "of object";
if (_destructor.class_keyword) text += "class proc";
}
public override void visit(inherited_method_call _inherited_method_call)
{
}
public override void visit(typecast_node _node)
{
text = _node.cast_op.ToString();
}
public override void visit(interface_node _interface_node)
{
}
public override void visit(implementation_node _implementation_node)
{
}
public override void visit(diap_expr _diap_expr)
{
}
public override void visit(block _block)
{
}
public override void visit(proc_block _proc_block)
{
}
public override void visit(array_of_named_type_definition _array_of_named_type_definition)
{
}
public override void visit(array_of_const_type_definition _array_of_const_type_defenition)
{
text="array of const";
}
public override void visit(literal _literal)
{
}
public override void visit(case_variants _case_variants)
{
get_count(_case_variants.variants);
}
public override void visit(diapason_expr _diapason_expr)
{
}
public override void visit(var_def_list_for_record _var_def_list)
{
//text="Count: "+_statement_list.subnodes.Count;
get_count(_var_def_list.vars);
}
public override void visit(property_array_default _property_array_default)
{
}
public override void visit(property_interface _property_interface)
{
}
public override void visit(property_parameter _property_parameter)
{
}
public override void visit(property_parameter_list _property_parameter_list)
{
get_count(_property_parameter_list.parameters);
}
public override void visit(inherited_ident _inherited_ident)
{
text="inherited ident: "+_inherited_ident.name;
}
public override void visit(format_expr _format_expr)
{
}
public override void visit(initfinal_part _initfinal_part)
{
}
public override void visit(token_info _token_info)
{
text = string.Format("text: '{0}'",_token_info.text);
}
public override void visit(raise_stmt _raise_stmt)
{
}
public override void visit(op_type_node _op_type_node)
{
}
public override void visit(file_type _file_type)
{
}
public override void visit(known_type_ident _known_type_ident)
{
text="Name: "+_known_type_ident.name+" type: "+_known_type_ident.type.ToString();
}
public override void visit(exception_ident _exception_ident)
{
}
public override void visit(exception_handler _exception_handler)
{
}
public override void visit(exception_handler_list _exception_handler_list)
{
get_count(_exception_handler_list.handlers);
}
public override void visit(exception_block _exception_block)
{
}
public override void visit(try_handler _try_handler)
{
}
public override void visit(try_handler_except _try_handler_except)
{
}
public override void visit(try_handler_finally _try_handler_finally)
{
}
public override void visit(try_stmt _try_stmt)
{
}
public override void visit(inherited_message _inherited_message)
{
}
public override void visit(external_directive _external_directive)
{
}
public override void visit(using_list _using_list)
{
get_count(_using_list.namespaces);
}
public override void visit(jump_stmt node)
{
text = node.JumpType.ToString();
}
public override void visit(loop_stmt _loop_stmt)
{
}
public override void visit(foreach_stmt _foreach_stmt)
{
}
public override void visit(addressed_value_funcname _addressed_value_funcname)
{
}
public override void visit(named_type_reference_list _named_type_reference_list)
{
get_count(_named_type_reference_list.types);
}
public override void visit(template_param_list _template_param_list)
{
get_count(_template_param_list.params_list);
}
public override void visit(template_type_reference _template_type_reference)
{
}
public override void visit(new_expr _new_expr)
{
if (_new_expr.new_array)
text = "new_array";
}
public override void visit(where_type_specificator_list node)
{
get_count(node.defs);
}
public override void visit(where_definition node)
{
}
public override void visit(where_definition_list node)
{
get_count(node.defs);
}
public override void visit(sizeof_operator node)
{
}
public override void visit(typeof_operator node)
{
}
public override void visit(compiler_directive node)
{
}
public override void visit(compiler_directive_list node)
{
}
public override void visit(compiler_directive_if node)
{
text = string.Format("{0}={1}", node.Name, node.Directive);
}
public override void visit(operator_name_ident node)
{
text = node.operator_type.ToString();
}
public override void visit(var_statement node)
{
}
public override void visit(question_colon_expression node)
{
}
public override void visit(expression_as_statement node)
{
}
public override void visit(c_scalar_type node)
{
text = node.scalar_name.ToString() + " sign:" + node.sign.ToString();
}
public override void visit(c_module node)
{
//text = "LanguageId:" + node.Language.ToString();
}
public override void visit(declarations_as_statement node)
{
}
public override void visit(array_size node)
{
}
public override void visit(enumerator node)
{
}
public override void visit(enumerator_list node)
{
}
public override void visit(c_for_cycle node)
{
}
public override void visit(switch_stmt node)
{
text = node.Part.ToString();
}
public override void visit(type_definition_attr node)
{
if (node.attr != definition_attribute.None)
text = node.attr.ToString();
}
public override void visit(type_definition_attr_list node)
{
if(node.attributes.Count>0)
get_count(node.attributes);
}
public override void visit(lock_stmt node)
{
}
public override void visit(documentation_comment_list node)
{
}
public override void visit(documentation_comment_section node)
{
if (node.text != null)
text = node.text;
}
public override void visit(documentation_comment_tag node)
{
text = string.Format("name={0} text={1}", node.name, node.text);
}
public override void visit(documentation_comment_tag_param node)
{
text = string.Format("name={0} value={1}", node.name, node.value);
}
public override void visit(token_taginfo node)
{
}
public override void visit(declaration_specificator node)
{
text = String.Format("{0} ({1})", node.specificator, node.name);
}
public override void visit(ident_with_templateparams node)
{
}
public override void visit(default_operator node)
{
}
public override void visit(bracket_expr _bracket_expr)
{
_bracket_expr.expr.visit(this);
}
public override void visit(attribute _attribute)
{
}
public override void visit(attribute_list _attribute_list)
{
}
public override void visit(simple_attribute_list _simple_attribute_list)
{
}
public override void visit(function_lambda_definition _function_lambda_definition)
{
}
public override void visit(function_lambda_call _function_lambda_call)
{
//
}
public override void visit(semantic_check _semantic_check)
{
throw new NotImplementedException();
}
public override void visit(lambda_inferred_type lit) //lroman//
{
}
public override void visit(same_type_node stn) //SS 22/06/13//
{
}
public override void visit(name_assign_expr _name_assign_expr) // SSM 27.06.13
{
}
public override void visit(name_assign_expr_list _name_assign_expr_list) // SSM 27.06.13
{
}
public override void visit(unnamed_type_object _unnamed_type_object) // SSM 27.06.13
{
}
public override void visit(semantic_type_node stn) // SSM
{
}
}
}