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