public SyntaxError(string Message, string fileName, PascalABCCompiler.SyntaxTree.SourceContext _source_context, PascalABCCompiler.SyntaxTree.syntax_tree_node _bad_node) : base(Message, fileName) { source_context = _source_context; if (source_context != null && source_context.FileName != null) { base.fileName = source_context.FileName; } if (source_context == null && _bad_node != null) // искать source_context у Parentов { var bn = _bad_node; do { bn = bn.Parent; if (bn != null && bn.source_context != null) { source_context = bn.source_context; if (source_context.FileName != null) { base.fileName = source_context.FileName; } break; } } while (bn != null); } bad_node = _bad_node; }
public override SourceContext GetTokenSourceContext(Parser parser) { int LineNum = parser.TokenLineNumber + LineCorrection; SourceContext sc = new SourceContext(LineNum, parser.TokenLinePosition, LineNum + GetLinesCount(parser.TokenText), parser.TokenLinePosition + parser.TokenLength - 1, parser.TokenCharPosition, parser.TokenCharPosition + parser.TokenLength); if (scm != null) sc = scm.GetSourceContext(sc); return sc; }
public void AddErrorFromResource(string res, PascalABCCompiler.SyntaxTree.SourceContext loc, params string[] pars) { res = StringResources.Get(res); if (pars != null && pars.Length > 0) { res = string.Format(res, pars); } errors.Add(new SyntaxError(res, CurrentFileName, loc, null)); }
public syntax_tree_node Find(SyntaxTree.compilation_unit unit, SourceContext findContext) { _findContext = findContext; _findResult = null; //unit.visit(this); ProcessNode(unit); return _findResult; }
public void AddWarningFromResource(string res, PascalABCCompiler.SyntaxTree.SourceContext loc, params string[] pars) { res = StringResources.Get(res); if (pars != null && pars.Length > 0) { res = string.Format(res, pars); } warnings.Add(new CommonWarning(res, CurrentFileName, loc.begin_position.line_num, loc.begin_position.column_num)); }
public SyntaxError(string Message, string fileName, PascalABCCompiler.SyntaxTree.SourceContext _source_context, PascalABCCompiler.SyntaxTree.syntax_tree_node _bad_node) : base(Message, fileName) { source_context = _source_context; if (source_context != null && source_context.FileName != null) { base.fileName = source_context.FileName; } bad_node = _bad_node; }
public SourceContext(SourceContext sc) { if (sc == null) { throw new ArgumentNullException(nameof(sc)); } if (sc._begin_position != null) { _begin_position = new file_position(sc._begin_position.line_num, sc._begin_position.column_num); } if (sc._end_position != null) { _end_position = new file_position(sc._end_position.line_num, sc.end_position.column_num); } _begin_symbol_position = sc._begin_symbol_position; _end_symbol_position = sc._end_symbol_position; _file_name = sc._file_name; }
public SourceContext Merge(SourceContext right) { return new SourceContext(this, right); }
public LexLocation SCToLexLoc(SourceContext sc) // переопределить неявное преобразование типов? { return new LexLocation(sc.begin_position.line_num, sc.begin_position.column_num - 1, sc.end_position.line_num, sc.end_position.column_num, sc.FileName); }
public static procedure_definition BuildShortFuncDefinition(formal_parameters fp, procedure_attributes_list att, method_name name, type_definition result, expression ex, SourceContext headsc) { var ff = new function_header(fp, att, name, null, result, headsc); procedure_definition pd = BuildShortProcFuncDefinition(ff, new assign("Result", ex, ex.source_context)); return pd; }
public bool Eq(SourceContext sc) { return(begin_position.line_num == sc.begin_position.line_num && begin_position.column_num == sc.begin_position.column_num && end_position.line_num == sc.end_position.line_num && end_position.column_num == sc.end_position.column_num); }
public static procedure_definition BuildShortFuncDefinition(formal_parameters fp, procedure_attributes_list att, method_name name, type_definition result, expression ex, SourceContext headsc) { var ff = new function_header(fp, att, name, null, result, headsc); procedure_definition pd = BuildShortProcFuncDefinition(ff, new assign("Result", ex, ex.source_context)); return(pd); }
///<summary> ///Конструктор с параметрами. ///</summary> public dot_node(addressed_value _left,addressed_value _right,SourceContext sc) { this._left=_left; this._right=_right; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public hex_constant(Int64 _val,SourceContext sc) { this._val=_val; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public method_name(List<ident> _ln,ident _class_name,ident _meth_name,ident _explicit_interface_name,SourceContext sc) { this._ln=_ln; this._class_name=_class_name; this._meth_name=_meth_name; this._explicit_interface_name=_explicit_interface_name; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public un_expr(expression _subnode,Operators _operation_type,SourceContext sc) { this._subnode=_subnode; this._operation_type=_operation_type; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public case_node(expression _param,case_variants _conditions,statement _else_statement,SourceContext sc) { this._param=_param; this._conditions=_conditions; this._else_statement=_else_statement; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public case_variant(expression_list _conditions,statement _exec_if_true,SourceContext sc) { this._conditions=_conditions; this._exec_if_true=_exec_if_true; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public get_address(addressed_value _address_of,SourceContext sc) { this._address_of=_address_of; source_context = sc; }
public bool In(SourceContext sc) { //return Position >= sc.Position && (Length + Position <= sc.Length + sc.Position); return !((begin_position.line_num < sc.begin_position.line_num) || (end_position.line_num > sc.end_position.line_num) || (begin_position.line_num == sc.begin_position.line_num && begin_position.column_num < sc.begin_position.column_num) || (end_position.line_num == sc.end_position.line_num && end_position.column_num > sc.end_position.column_num)); }
///<summary> ///Конструктор с параметрами. ///</summary> public goto_statement(ident _label,SourceContext sc) { this._label=_label; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public unit_module(string _file_name,List<compiler_directive> _compiler_directives,LanguageId _Language,unit_name _unit_name,interface_node _interface_part,implementation_node _implementation_part,statement_list _initialization_part,statement_list _finalization_part,attribute_list _attributes,SourceContext sc) { this._file_name=_file_name; this._compiler_directives=_compiler_directives; this._Language=_Language; this._unit_name=_unit_name; this._interface_part=_interface_part; this._implementation_part=_implementation_part; this._initialization_part=_initialization_part; this._finalization_part=_finalization_part; this._attributes=_attributes; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public labeled_statement(ident _label_name,statement _to_statement,SourceContext sc) { this._label_name=_label_name; this._to_statement=_to_statement; source_context = sc; }
public bool Less(SourceContext sc) { return(begin_position.line_num < sc.begin_position.line_num || (begin_position.line_num == sc.begin_position.line_num && begin_position.column_num < sc.begin_position.column_num)); }
///<summary> ///Конструктор с параметрами. ///</summary> public with_statement(statement _what_do,expression_list _do_with,SourceContext sc) { this._what_do=_what_do; this._do_with=_do_with; source_context = sc; }
public static procedure_definition BuildShortProcDefinition(formal_parameters fp, procedure_attributes_list att, method_name name, statement st, SourceContext headsc) { var ff = new procedure_header(fp, att, name, null, headsc); return(BuildShortProcFuncDefinition(ff, st)); }
///<summary> ///Конструктор с параметрами. ///</summary> public method_call(expression_list _parameters,SourceContext sc) { this._parameters=_parameters; source_context = sc; }
public SourceContext Merge(SourceContext right) { return(new SourceContext(this, right)); }
///<summary> ///Конструктор с параметрами. ///</summary> public method_call(addressed_value _dereferencing_value,expression_list _parameters,SourceContext sc) { this._dereferencing_value=_dereferencing_value; this._parameters=_parameters; source_context = sc; }
public bool Between(SourceContext sc1, SourceContext sc2) { return ((begin_position.line_num > sc1.begin_position.line_num || (begin_position.line_num == sc1.begin_position.line_num && begin_position.column_num > sc1.begin_position.column_num)) && (end_position.line_num < sc2.begin_position.line_num || (end_position.line_num == sc2.begin_position.line_num && end_position.column_num < sc2.begin_position.column_num))); }
///<summary> ///Конструктор с параметрами. ///</summary> public pascal_set_constant(expression_list _values,SourceContext sc) { this._values=_values; source_context = sc; }
public static procedure_definition BuildShortProcDefinition(formal_parameters fp, procedure_attributes_list att, method_name name, statement st, SourceContext headsc) { var ff = new procedure_header(fp, att, name, null, headsc); return BuildShortProcFuncDefinition(ff, st); }
///<summary> ///Конструктор с параметрами. ///</summary> public program_module(program_name _program_name,uses_list _used_units,block _program_block,using_list _using_namespaces,SourceContext sc) { this._program_name=_program_name; this._used_units=_used_units; this._program_block=_program_block; this._using_namespaces=_using_namespaces; source_context = sc; }
public SourceContext(SourceContext left, SourceContext right) { if (left != null) _begin_position = new file_position(left.begin_position.line_num, left.begin_position.column_num); if (right != null) _end_position = new file_position(right.end_position.line_num, right.end_position.column_num); if (left == null) _begin_position = _end_position; if (right == null) _end_position = _begin_position; this._begin_symbol_position = left._begin_symbol_position; this._end_symbol_position = right._end_symbol_position; this.FileName = left.FileName == right.FileName ? left.FileName : null; }
///<summary> ///Конструктор с параметрами. ///</summary> public read_accessor_name(ident _accessor_name,SourceContext sc) { this._accessor_name=_accessor_name; source_context = sc; }
public bool Eq(SourceContext sc) { return begin_position.line_num == sc.begin_position.line_num && begin_position.column_num == sc.begin_position.column_num && end_position.line_num == sc.end_position.line_num && end_position.column_num == sc.end_position.column_num; }
///<summary> ///Конструктор с параметрами. ///</summary> public property_accessors(read_accessor_name _read_accessor,write_accessor_name _write_accessor,SourceContext sc) { this._read_accessor=_read_accessor; this._write_accessor=_write_accessor; source_context = sc; }
public bool Between(SourceContext sc1, SourceContext sc2) { return (begin_position.line_num > sc1.begin_position.line_num || (begin_position.line_num == sc1.begin_position.line_num && begin_position.column_num > sc1.begin_position.column_num)) && (end_position.line_num < sc2.begin_position.line_num || (end_position.line_num == sc2.begin_position.line_num && end_position.column_num < sc2.begin_position.column_num)); }
///<summary> ///Конструктор с параметрами. ///</summary> public simple_property(ident _property_name,type_definition _property_type,expression _index_expression,property_accessors _accessors,property_array_default _array_default,property_parameter_list _parameter_list,definition_attribute _attr,SourceContext sc) { this._property_name=_property_name; this._property_type=_property_type; this._index_expression=_index_expression; this._accessors=_accessors; this._array_default=_array_default; this._parameter_list=_parameter_list; this._attr=_attr; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public array_const(expression_list _elements,SourceContext sc) { this._elements=_elements; source_context = sc; }
///<summary> ///Конструктор с параметрами. ///</summary> public program_module(string _file_name,List<compiler_directive> _compiler_directives,LanguageId _Language,program_name _program_name,uses_list _used_units,block _program_block,using_list _using_namespaces,SourceContext sc) { this._file_name=_file_name; this._compiler_directives=_compiler_directives; this._Language=_Language; this._program_name=_program_name; this._used_units=_used_units; this._program_block=_program_block; this._using_namespaces=_using_namespaces; source_context = sc; }