From dd2f889c864968bc226d9d82c11022949fa5fd83 Mon Sep 17 00:00:00 2001 From: miks1965 Date: Sat, 21 Jan 2017 09:58:56 +0300 Subject: [PATCH] =?UTF-8?q?syntax=5Ftree=5Fvisitor=5Fsemcheck=5Fhelper.cs?= =?UTF-8?q?=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PascalABCNET.axml | 4 +- .../TreeConversion/syntax_tree_visitor.cs | 11 ++-- .../syntax_tree_visitor_semcheck_helper.cs | 61 ------------------ bin/Lib/PABCRtl.dll | Bin 546816 -> 546816 bytes 4 files changed, 8 insertions(+), 68 deletions(-) delete mode 100644 TreeConverter/TreeConversion/syntax_tree_visitor_semcheck_helper.cs diff --git a/PascalABCNET.axml b/PascalABCNET.axml index 698d5766e..80b604808 100644 --- a/PascalABCNET.axml +++ b/PascalABCNET.axml @@ -413,12 +413,12 @@ - + \treeconverter\treeconversion\syntax_tree_visitor.cs public override void visit(SyntaxTree.enum_type_definition _enum_type_definition) public override void visit ( SyntaxTree . enum_type_definition _enum_type_definition ) - public class syntax_tree_visitor : SyntaxTree . AbstractVisitor + public partial class syntax_tree_visitor : SyntaxTree . WalkingVisitorNew namespace PascalABCCompiler . TreeConverter diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 4a365994c..aba1a6d39 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -19227,8 +19227,9 @@ namespace PascalABCCompiler.TreeConverter public override void visit(SyntaxTree.slice_expr sl) { - //AddError(get_location(sl), "SUGARED_NODE_{0}_IN_SYNTAX_TREE_VISITOR", sl.GetType().Name); + AddError(get_location(sl), "SUGARED_NODE_{0}_IN_SYNTAX_TREE_VISITOR", sl.GetType().Name); + /* // Преобразуется в вызов a.SystemSlice(situation,from,to,step) // Тип a должен быть array of T, List или string semcheck(sl); @@ -19237,13 +19238,13 @@ namespace PascalABCCompiler.TreeConverter var el = construct_expression_list_for_slice_expr(sl); var mc = new method_call(new dot_node(sl.v, new ident("SystemSlice", sl.v.source_context), sl.v.source_context), el, sl.source_context); - visit(mc); + visit(mc);*/ } public override void visit(SyntaxTree.slice_expr_question sl) { - //AddError(get_location(sl), "SUGARED_NODE_{0}_IN_SYNTAX_TREE_VISITOR", sl.GetType().Name); - + AddError(get_location(sl), "SUGARED_NODE_{0}_IN_SYNTAX_TREE_VISITOR", sl.GetType().Name); + /* // Преобразуется в вызов a.SystemSlice(situation,from,to,step) // Тип a должен быть array of T, List или string semcheck(sl); @@ -19251,7 +19252,7 @@ namespace PascalABCCompiler.TreeConverter var el = construct_expression_list_for_slice_expr(sl); var mc = new method_call(new dot_node(sl.v, new ident("SystemSliceQuestion", sl.v.source_context), sl.v.source_context), el, sl.source_context); - visit(mc); + visit(mc);*/ } // frninja 04/03/16 - для yield diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor_semcheck_helper.cs b/TreeConverter/TreeConversion/syntax_tree_visitor_semcheck_helper.cs deleted file mode 100644 index 10d39bcb3..000000000 --- a/TreeConverter/TreeConversion/syntax_tree_visitor_semcheck_helper.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using PascalABCCompiler.SyntaxTree; -using PascalABCCompiler.TreeRealization; - -namespace PascalABCCompiler.TreeConverter -{ - public partial class syntax_tree_visitor - { - void semcheck_slice_expr_helper(SyntaxTree.slice_expr sl) - { - var semvar = convert_strong(sl.v); - if (semvar is typed_expression) - semvar = convert_typed_expression_to_function_call(semvar as typed_expression); - - var t = ConvertSemanticTypeNodeToNETType(semvar.type); - - var IsSlicedType = 0; // проверим, является ли semvar.type динамическим массивом, списком List или строкой - // semvar.type должен быть array of T, List или string - if (t == null) - IsSlicedType = 0; // можно ничего не присваивать :) - else if (t.IsArray) - IsSlicedType = 1; - else if (t == typeof(System.String)) - IsSlicedType = 2; - else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(System.Collections.Generic.List<>)) - IsSlicedType = 3; - - if (IsSlicedType == 0) - AddError(get_location(sl.v), "BAD_SLICE_OBJECT"); - - var semfrom = convert_strong(sl.from); - var b = convertion_data_and_alghoritms.can_convert_type(semfrom, SystemLibrary.SystemLibrary.integer_type); - if (!b) - AddError(get_location(sl.from), "INTEGER_VALUE_EXPECTED"); - - var semto = convert_strong(sl.to); - b = convertion_data_and_alghoritms.can_convert_type(semto, SystemLibrary.SystemLibrary.integer_type); - if (!b) - AddError(get_location(sl.to), "INTEGER_VALUE_EXPECTED"); - - if (sl.step != null) - { - var semstep = convert_strong(sl.step); - b = convertion_data_and_alghoritms.can_convert_type(semstep, SystemLibrary.SystemLibrary.integer_type); - if (!b) - AddError(get_location(sl.step), "INTEGER_VALUE_EXPECTED"); - } - } - public void semcheck(SyntaxTree.slice_expr sl) - { - semcheck_slice_expr_helper(sl); - } - public void semcheck(SyntaxTree.slice_expr_question sl) - { - semcheck_slice_expr_helper(sl); - } - } -} diff --git a/bin/Lib/PABCRtl.dll b/bin/Lib/PABCRtl.dll index e42bc21dd171aecdb70860d475dd2009c6a6f59b..13c4989f65d1c52bd656bb586798f02bc82cb450 100644 GIT binary patch delta 233 zcmV^dvqDbQHd07!_A=M$ccYO1Efh*_HKSSaXHRd4&xPjuI>n}Yo|;N z+`54m=Bzkb=)fCxvC3Gwsen&i4!u;H0Fnsv&}fp418l!-zDs2PCDn~^KE+hGnVBW= z)7bp^q`DUG8X5r^hjZ`)hjZ`*hjZ`+w{!3Yb*K|*M_?QP2 jyaFVJmkw138W4w4u!qqUXGWwsu&NI=M(VdXRS3ue3_5MF delta 233 zcmV3s^QE6j`f|hER5>syXZMHR}>)?U?)~u{bMYt_3XmRd!SFP;JCF))fWb7 zan}H;uR$uHNlgJxhjZ`)hjZ`*hjZ`+w{!3Yb*K=FHWbxgOM6YZHL-M-?}