ttt
This commit is contained in:
parent
a45982f64d
commit
dac8a1a369
|
|
@ -2,7 +2,7 @@
|
|||
// This CSharp output file generated by Gardens Point LEX
|
||||
// Version: 1.1.3.301
|
||||
// Machine: SSM
|
||||
// DateTime: 20.08.2015 13:05:17
|
||||
// DateTime: 25.08.2015 22:41:39
|
||||
// UserName: ?????????
|
||||
// GPLEX input file <ABCPascal.lex>
|
||||
// GPLEX frame file <embedded resource>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// GPPG version 1.3.6
|
||||
// Machine: SSM
|
||||
// DateTime: 20.08.2015 13:05:18
|
||||
// DateTime: 25.08.2015 22:41:40
|
||||
// UserName: ?????????
|
||||
// Input file <ABCPascal.y>
|
||||
|
||||
|
|
|
|||
|
|
@ -78,5 +78,6 @@ script=
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18992,7 +18992,7 @@ namespace PascalABCCompiler.SyntaxTree
|
|||
///<summary>
|
||||
///Конструктор с параметрами.
|
||||
///</summary>
|
||||
public template_type_reference(named_type_reference _name,template_param_list _params_list)
|
||||
public template_type_reference(named_type_reference _name, template_param_list _params_list)
|
||||
{
|
||||
this._name=_name;
|
||||
this._params_list=_params_list;
|
||||
|
|
|
|||
|
|
@ -184,6 +184,15 @@ namespace PascalABCCompiler.SyntaxTree
|
|||
|
||||
public partial class bin_expr
|
||||
{
|
||||
public static bin_expr Greater(expression left, expression right)
|
||||
{
|
||||
return new bin_expr(left, right, Operators.Greater);
|
||||
}
|
||||
public static bin_expr Less(expression left, expression right)
|
||||
{
|
||||
return new bin_expr(left, right, Operators.Less);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0} {2} {1}", left, right, OperatorServices.ToString(operation_type, LanguageId.PascalABCNET));
|
||||
|
|
|
|||
|
|
@ -381,6 +381,11 @@ namespace TreeConverter.LambdaExpressions.Closure
|
|||
}
|
||||
}
|
||||
|
||||
public override void visit(unnamed_type_object uto) // SSM 26/08/15 - Роман подсказал
|
||||
{
|
||||
ProcessNode(uto.ne_list);
|
||||
}
|
||||
|
||||
public override void visit(foreach_stmt _foreach_stmt)
|
||||
{
|
||||
var loopIdentName = _foreach_stmt.identifier.name.ToLower();
|
||||
|
|
|
|||
|
|
@ -37,5 +37,7 @@ namespace SyntaxVisitors
|
|||
d.defs.Remove(vd); // может ли остаться список declarations пустым?
|
||||
}
|
||||
|
||||
// еще - не заходить в лямбды
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,10 +150,11 @@ namespace SyntaxVisitors
|
|||
if (!hasYields) // т.е. мы разобрали функцию и уже выходим. Это значит, что пока yield будет обрабатываться только в функциях. Так это и надо.
|
||||
return;
|
||||
|
||||
var dld = new DeleteLocalDefs(mids.vars); // mids.vars - все захваченные переменные
|
||||
pd.visit(dld); // Удалить в локальных и блочных описаниях этой процедуры все захваченные переменные
|
||||
var dld = new DeleteAllLocalDefs(); // mids.vars - все захваченные переменные
|
||||
pd.visit(dld); // Удалить в локальных и блочных описаниях этой процедуры все переменные и вынести их в отдельный список var_def_statement
|
||||
|
||||
mids.vars.Except(dld.LocalDeletedDefsNames); // параметры остались. Их тоже надо исключать - они и так будут обработаны
|
||||
// В результате работы в mids.vars что-то осталось. Это не локальные переменные и с ними непонятно что делать
|
||||
dld.AfterProcTraverse();
|
||||
|
||||
LoweringVisitor.Accept(pd);
|
||||
|
||||
|
|
@ -162,7 +163,7 @@ namespace SyntaxVisitors
|
|||
(pd.proc_body as block).program_code = cfa.res;
|
||||
|
||||
// Конструируем определение класса
|
||||
var cct = GenClassesForYield(pd, dld.BlockDeletedIds.Union(dld.LocalDeletedIds));
|
||||
var cct = GenClassesForYield(pd, dld.LocalDeletedDefs); // все удаленные описания переменных делаем описанием класса
|
||||
|
||||
UpperNodeAs<declarations>().InsertBefore(pd, cct);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
function Gen(a,b: integer): sequence of integer;
|
||||
function Gen(n: integer): sequence of integer;
|
||||
var j,k: real;
|
||||
begin
|
||||
var i := 1;
|
||||
j := 2;
|
||||
while i<5 do
|
||||
j := 5;
|
||||
while i<j do
|
||||
begin
|
||||
yield i*i;
|
||||
i += 1;
|
||||
|
|
@ -11,6 +11,6 @@ begin
|
|||
end;
|
||||
|
||||
begin
|
||||
foreach var x in Gen(1,2) do
|
||||
foreach var x in Gen(5) do
|
||||
Print(x);
|
||||
end.
|
||||
Loading…
Reference in a new issue