FillParentNodesVisitor
This commit is contained in:
parent
81bc22856e
commit
7dae60aba0
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "2";
|
||||
public const string Build = "0";
|
||||
public const string Revision = "1319";
|
||||
public const string Revision = "1323";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=0
|
||||
%REVISION%=1319
|
||||
%REVISION%=1323
|
||||
%MINOR%=2
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1207,6 +1207,17 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="var pdCloned = ObjectCopier.Clone(pd);" NL="0,8837891" NG="0,5507813">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<Text>var pdCloned = ObjectCopier.Clone(pd);</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">private void CreateErrorCheckerHelper ( procedure_definition pd )</i>
|
||||
<i Type="ClassOrNamespace">public class ProcessYieldCapturedVarsVisitor : BaseChangeVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace SyntaxVisitors</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="a.Sort((row1, row2) -> 1)" NL="0" NG="0">
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.2.0.1319'
|
||||
!define VERSION '3.2.0.1323'
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace PascalABCCompiler.SyntaxTreeConverters
|
|||
public string Name { get; } = "Standard";
|
||||
public syntax_tree_node Convert(syntax_tree_node root)
|
||||
{
|
||||
//FillParentNodeVisitor.New.ProcessNode(root); // прошивание ссылками на Parent nodes
|
||||
FillParentNodeVisitor.New.ProcessNode(root); // прошивание ссылками на Parent nodes
|
||||
// Пока нельзя вызывать - если это делать, то ObjectCopier.Clone провоцирует катастрофически долгое время работы!!!
|
||||
return root;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ namespace PascalABCCompiler.SyntaxTree
|
|||
public override void Enter(syntax_tree_node st)
|
||||
{
|
||||
base.Enter(st);
|
||||
//st.Parent = UpperNode();
|
||||
st.Parent = UpperNode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using PascalABCCompiler.SyntaxTree;
|
||||
|
||||
namespace SyntaxVisitors
|
||||
{
|
||||
|
|
@ -25,18 +26,18 @@ namespace SyntaxVisitors
|
|||
/// <param className="source">The object instance to copy.</param>
|
||||
/// <returns>The copied object.</returns>
|
||||
public static T Clone<T>(T source)
|
||||
where T: syntax_tree_node
|
||||
{
|
||||
if (!typeof(T).IsSerializable)
|
||||
{
|
||||
throw new ArgumentException("The type must be serializable.", "source");
|
||||
}
|
||||
|
||||
// Don't serialize a null object, simply return the default for that object
|
||||
if (Object.ReferenceEquals(source, null))
|
||||
{
|
||||
return default(T);
|
||||
}
|
||||
|
||||
/*if (!typeof(T).IsSerializable)
|
||||
{
|
||||
throw new ArgumentException("The type must be serializable.", "source");
|
||||
}
|
||||
|
||||
IFormatter formatter = new BinaryFormatter();
|
||||
Stream stream = new MemoryStream();
|
||||
using (stream)
|
||||
|
|
@ -44,7 +45,8 @@ namespace SyntaxVisitors
|
|||
formatter.Serialize(stream, source);
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
return (T)formatter.Deserialize(stream);
|
||||
}
|
||||
}*/
|
||||
return (T)source.Clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -213,7 +213,10 @@ namespace SyntaxVisitors
|
|||
if (decls != null)
|
||||
{
|
||||
// frninja 12/05/16 - забыли копировать return
|
||||
function_header nfh = ObjectCopier.Clone(fh);
|
||||
//function_header nfh = ObjectCopier.Clone(fh);
|
||||
|
||||
function_header nfh = fh.TypedClone();
|
||||
|
||||
//function_header nfh = new function_header();
|
||||
//nfh.name = new method_name(fh.name.meth_name.name);
|
||||
|
||||
|
|
@ -415,6 +418,7 @@ namespace SyntaxVisitors
|
|||
if (pd.proc_header.where_defs != null)
|
||||
{
|
||||
return ObjectCopier.Clone(pd.proc_header.where_defs);
|
||||
//return pd.proc_header.where_defs.TypedClone();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -426,6 +430,7 @@ namespace SyntaxVisitors
|
|||
if (pdPredefs.Count() > 0)
|
||||
{
|
||||
return ObjectCopier.Clone(pdPredefs.First().proc_header.where_defs);
|
||||
//return pdPredefs.First().proc_header.where_defs.TypedClone();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -587,7 +592,8 @@ namespace SyntaxVisitors
|
|||
private void CreateErrorCheckerHelper(procedure_definition pd)
|
||||
{
|
||||
// Клонируем исходный метод для проверок ошибок бэкендом
|
||||
var pdCloned = ObjectCopier.Clone(pd);
|
||||
//var pdCloned = ObjectCopier.Clone(pd);
|
||||
var pdCloned = (procedure_definition)pd.Clone();
|
||||
|
||||
pdCloned.has_yield = false;
|
||||
|
||||
|
|
@ -613,7 +619,8 @@ namespace SyntaxVisitors
|
|||
|
||||
// Клонируем исходный метод для вставки оберток-хелперов для локальных переменных и дальнейшей обработки на семантике
|
||||
var pdCloned = ObjectCopier.Clone(pd);
|
||||
//var pdCloned = pd;
|
||||
//pd.
|
||||
//var pdCloned = (procedure_definition)pd.Clone();
|
||||
|
||||
pdCloned.has_yield = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -3755,17 +3755,20 @@ end;
|
|||
|
||||
function SeqRandom(n: integer; a: integer; b: integer): sequence of integer;
|
||||
begin
|
||||
Result := Range(1,n).Select(i->Random(a,b))
|
||||
for var i:=1 to n do
|
||||
yield Random(a,b)
|
||||
end;
|
||||
|
||||
function SeqRandomInteger(n: integer; a: integer; b: integer): sequence of integer;
|
||||
begin
|
||||
Result := Range(1,n).Select(i->Random(a,b))
|
||||
for var i:=1 to n do
|
||||
yield Random(a,b)
|
||||
end;
|
||||
|
||||
function SeqRandomReal(n: integer; a: real; b: real): sequence of real;
|
||||
begin
|
||||
Result := Range(1,n).Select(i->Random()*(b-a)+a)
|
||||
for var i:=1 to n do
|
||||
yield Random()*(b-a)+a
|
||||
end;
|
||||
|
||||
function Arr<T>(params a: array of T): array of T;
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3755,17 +3755,20 @@ end;
|
|||
|
||||
function SeqRandom(n: integer; a: integer; b: integer): sequence of integer;
|
||||
begin
|
||||
Result := Range(1,n).Select(i->Random(a,b))
|
||||
for var i:=1 to n do
|
||||
yield Random(a,b)
|
||||
end;
|
||||
|
||||
function SeqRandomInteger(n: integer; a: integer; b: integer): sequence of integer;
|
||||
begin
|
||||
Result := Range(1,n).Select(i->Random(a,b))
|
||||
for var i:=1 to n do
|
||||
yield Random(a,b)
|
||||
end;
|
||||
|
||||
function SeqRandomReal(n: integer; a: real; b: real): sequence of real;
|
||||
begin
|
||||
Result := Range(1,n).Select(i->Random()*(b-a)+a)
|
||||
for var i:=1 to n do
|
||||
yield Random()*(b-a)+a
|
||||
end;
|
||||
|
||||
function Arr<T>(params a: array of T): array of T;
|
||||
|
|
|
|||
|
|
@ -7,3 +7,4 @@ TUPLE_TYPE_ERROR=Bad element in Tuple type
|
|||
INTEGER_VALUE_EXPECTED=Integer value expected
|
||||
BAD_SLICE_OBJECT=Slices are allowed for strings, dynamic arrays and lists only
|
||||
ONLY_IN_SHORT_FUNC_DEFS_RETURN_TYPE_CANBE_OMITTED=Only in short function definitions you can omit the return type
|
||||
ONE_TKIDENTIFIER=Type here must be identifier
|
||||
|
|
|
|||
|
|
@ -7,3 +7,4 @@ TUPLE_TYPE_ERROR=Ошибочная конструкция при построе
|
|||
INTEGER_VALUE_EXPECTED=Ожидалось значение целого типа
|
||||
BAD_SLICE_OBJECT=Срезы допустимы только для строк, динамических массивов и списков
|
||||
ONLY_IN_SHORT_FUNC_DEFS_RETURN_TYPE_CANBE_OMITTED=Только в коротких определениях функций можно не указывать тип возвращаемого значения
|
||||
ONE_TKIDENTIFIER=В качестве типа ожидался идентификатор
|
||||
|
|
|
|||
|
|
@ -18,19 +18,19 @@ string
|
|||
boolean
|
||||
|
||||
[f]
|
||||
for |:= to do
|
||||
for var |:= to do
|
||||
|
||||
[fb]
|
||||
for |:= to do
|
||||
for var |:= to do
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
[fore]
|
||||
foreach |: in do
|
||||
foreach var |: in do
|
||||
|
||||
[foreb]
|
||||
foreach |: in do
|
||||
foreach var |: in do
|
||||
begin
|
||||
|
||||
end;
|
||||
|
|
@ -91,7 +91,7 @@ begin
|
|||
end;
|
||||
|
||||
[ar]
|
||||
array[1..|] of ;
|
||||
array of |;
|
||||
|
||||
[try]
|
||||
try
|
||||
|
|
|
|||
Loading…
Reference in a new issue