Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 6
0
 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;
 }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
 public SourceContext Merge(SourceContext right)
 {
     return new SourceContext(this, right);
 }
Exemplo n.º 9
0
 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);
 }
Exemplo n.º 10
0
 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;
 }
Exemplo n.º 11
0
 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);
 }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public dot_node(addressed_value _left,addressed_value _right,SourceContext sc)
		{
			this._left=_left;
			this._right=_right;
			source_context = sc;
		}
Exemplo n.º 14
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public hex_constant(Int64 _val,SourceContext sc)
		{
			this._val=_val;
			source_context = sc;
		}
Exemplo n.º 15
0
		///<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;
		}
Exemplo n.º 16
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public un_expr(expression _subnode,Operators _operation_type,SourceContext sc)
		{
			this._subnode=_subnode;
			this._operation_type=_operation_type;
			source_context = sc;
		}
Exemplo n.º 17
0
		///<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;
		}
Exemplo n.º 18
0
		///<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;
		}
Exemplo n.º 19
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public get_address(addressed_value _address_of,SourceContext sc)
		{
			this._address_of=_address_of;
			source_context = sc;
		}
Exemplo n.º 20
0
 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));
 }
Exemplo n.º 21
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public goto_statement(ident _label,SourceContext sc)
		{
			this._label=_label;
			source_context = sc;
		}
Exemplo n.º 22
0
		///<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;
		}
Exemplo n.º 23
0
		///<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;
		}
Exemplo n.º 24
0
 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));
 }
Exemplo n.º 25
0
		///<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;
		}
Exemplo n.º 26
0
        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));
        }
Exemplo n.º 27
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public method_call(expression_list _parameters,SourceContext sc)
		{
			this._parameters=_parameters;
			source_context = sc;
		}
Exemplo n.º 28
0
 public SourceContext Merge(SourceContext right)
 {
     return(new SourceContext(this, right));
 }
Exemplo n.º 29
0
		///<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;
		}
Exemplo n.º 30
0
 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)));
 }
Exemplo n.º 31
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public pascal_set_constant(expression_list _values,SourceContext sc)
		{
			this._values=_values;
			source_context = sc;
		}
Exemplo n.º 32
0
 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);
 }
Exemplo n.º 33
0
		///<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;
		}
Exemplo n.º 34
0
 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;
 }
Exemplo n.º 35
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public read_accessor_name(ident _accessor_name,SourceContext sc)
		{
			this._accessor_name=_accessor_name;
			source_context = sc;
		}
Exemplo n.º 36
0
 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;
 }
Exemplo n.º 37
0
		///<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;
		}
Exemplo n.º 38
0
 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));
 }
Exemplo n.º 39
0
		///<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;
		}
Exemplo n.º 40
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public array_const(expression_list _elements,SourceContext sc)
		{
			this._elements=_elements;
			source_context = sc;
		}
Exemplo n.º 41
0
		///<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;
		}