Новые файлы Async
This commit is contained in:
parent
a193b9c3ed
commit
4a3239a7d1
|
|
@ -157,7 +157,9 @@ namespace SyntaxVisitors.Async
|
||||||
ph2.source_context = defs.source_context;
|
ph2.source_context = defs.source_context;
|
||||||
|
|
||||||
cm2.members[2] = ph;
|
cm2.members[2] = ph;
|
||||||
|
ph.Parent = cm2;
|
||||||
cm2.members[3] = ph2;
|
cm2.members[3] = ph2;
|
||||||
|
ph2.Parent = cm2;
|
||||||
|
|
||||||
var pd1 = Decls.list[1] as procedure_definition;
|
var pd1 = Decls.list[1] as procedure_definition;
|
||||||
pd1.proc_header.name.class_name = name;
|
pd1.proc_header.name.class_name = name;
|
||||||
|
|
@ -385,6 +387,11 @@ namespace SyntaxVisitors.Async
|
||||||
if (defsCount > 0)
|
if (defsCount > 0)
|
||||||
{
|
{
|
||||||
block.defs = temp_def;
|
block.defs = temp_def;
|
||||||
|
if (temp_def != null)
|
||||||
|
foreach (var dl in temp_def.list)
|
||||||
|
{
|
||||||
|
dl.Parent = block.defs;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var stl = new statement_list((pd.proc_body as block).program_code, st, a, parsList, a2);
|
var stl = new statement_list((pd.proc_body as block).program_code, st, a, parsList, a2);
|
||||||
|
|
||||||
|
|
@ -408,6 +415,13 @@ namespace SyntaxVisitors.Async
|
||||||
pd.proc_body = new block(stl);
|
pd.proc_body = new block(stl);
|
||||||
var tt = pd.proc_body as block;
|
var tt = pd.proc_body as block;
|
||||||
tt.defs = block.defs;
|
tt.defs = block.defs;
|
||||||
|
if (block.defs != null)
|
||||||
|
{
|
||||||
|
foreach (var item in block.defs.list)
|
||||||
|
{
|
||||||
|
item.Parent = tt.defs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ namespace SyntaxVisitors
|
||||||
|
|
||||||
await.aw.ex = mc;
|
await.aw.ex = mc;
|
||||||
b.program_code.list.Add(await);
|
b.program_code.list.Add(await);
|
||||||
|
await.Parent = b.program_code;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
proc_def = pd;
|
proc_def = pd;
|
||||||
|
|
@ -190,7 +191,9 @@ namespace SyntaxVisitors
|
||||||
var pc = new procedure_call(new dot_node(new dot_node(new ident("@aw_main", d.source_context),
|
var pc = new procedure_call(new dot_node(new dot_node(new ident("@aw_main", d.source_context),
|
||||||
new ident("GetAwaiter")), new ident("GetResult"), d.source_context), d.source_context);
|
new ident("GetAwaiter")), new ident("GetResult"), d.source_context), d.source_context);
|
||||||
pm.program_block.program_code.list.Add(vst);
|
pm.program_block.program_code.list.Add(vst);
|
||||||
|
vst.Parent = pm.program_block.program_code;
|
||||||
pm.program_block.program_code.list.Add(pc);
|
pm.program_block.program_code.list.Add(pc);
|
||||||
|
pc.Parent = pm.program_block.program_code;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,6 @@ namespace SyntaxVisitors.Async
|
||||||
{
|
{
|
||||||
return "@aw@_" + NewAwaiterCounter++;
|
return "@aw@_" + NewAwaiterCounter++;
|
||||||
}
|
}
|
||||||
public string NewTempTask()
|
|
||||||
{
|
|
||||||
return "@tt@_" + TempTaskCounter++;
|
|
||||||
}
|
|
||||||
// для каждого await добавляем awaiter
|
// для каждого await добавляем awaiter
|
||||||
public void AddAwaiter(bool IsFirstTime, expression ex, int c)
|
public void AddAwaiter(bool IsFirstTime, expression ex, int c)
|
||||||
{
|
{
|
||||||
|
|
@ -64,7 +60,6 @@ namespace SyntaxVisitors.Async
|
||||||
var tdef = tdecl.types_decl[0];
|
var tdef = tdecl.types_decl[0];
|
||||||
var cd = tdef.type_def as class_definition;
|
var cd = tdef.type_def as class_definition;
|
||||||
var bd = cd.body;
|
var bd = cd.body;
|
||||||
var tn = NewTempTask();
|
|
||||||
var vds = new var_def_statement(new ident(a_name, bd.source_context), new named_type_reference(new ident("string", bd.source_context)), bd.source_context);
|
var vds = new var_def_statement(new ident(a_name, bd.source_context), new named_type_reference(new ident("string", bd.source_context)), bd.source_context);
|
||||||
var class_name = proc_def.proc_header.name.class_name;
|
var class_name = proc_def.proc_header.name.class_name;
|
||||||
if (IsFirstTime)
|
if (IsFirstTime)
|
||||||
|
|
@ -82,7 +77,7 @@ namespace SyntaxVisitors.Async
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var cm2 = bd.class_def_blocks[0];
|
var cm2 = bd.class_def_blocks[0];
|
||||||
cm2.members.Add(vds);
|
cm2.Add(vds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Меняем тип AsyncBuilder
|
// Меняем тип AsyncBuilder
|
||||||
|
|
@ -350,7 +345,7 @@ namespace SyntaxVisitors.Async
|
||||||
if (pp.var_def.vars_type.ToString().Contains("Task"))
|
if (pp.var_def.vars_type.ToString().Contains("Task"))
|
||||||
{
|
{
|
||||||
pp.var_def.inital_value = new default_operator(new named_type_reference
|
pp.var_def.inital_value = new default_operator(new named_type_reference
|
||||||
(new ident(pp.var_def.vars_type.ToString())));
|
(pp.var_def.vars_type.ToString()));
|
||||||
pp.var_def.vars_type = null;
|
pp.var_def.vars_type = null;
|
||||||
foreach (var item in pp.var_def.vars.list)
|
foreach (var item in pp.var_def.vars.list)
|
||||||
{
|
{
|
||||||
|
|
@ -449,6 +444,7 @@ namespace SyntaxVisitors.Async
|
||||||
new ident("SetResult", ts.source_context)),
|
new ident("SetResult", ts.source_context)),
|
||||||
new expression_list(new ident("@aw_res", ts.source_context), ts.source_context), ts.source_context), ts.source_context);
|
new expression_list(new ident("@aw_res", ts.source_context), ts.source_context), ts.source_context), ts.source_context);
|
||||||
bl.program_code.list[2] = r_pc;
|
bl.program_code.list[2] = r_pc;
|
||||||
|
r_pc.Parent = bl.program_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
////// if (state == 1)
|
////// if (state == 1)
|
||||||
|
|
@ -576,6 +572,7 @@ namespace SyntaxVisitors.Async
|
||||||
if (asstat.from.ToString().Contains("GetResult"))
|
if (asstat.from.ToString().Contains("GetResult"))
|
||||||
{
|
{
|
||||||
asstat.from = mc2;
|
asstat.from = mc2;
|
||||||
|
mc2.Parent = asstat;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -648,6 +645,7 @@ namespace SyntaxVisitors.Async
|
||||||
if (asstat.from.ToString().Contains("GetResult"))
|
if (asstat.from.ToString().Contains("GetResult"))
|
||||||
{
|
{
|
||||||
asstat.from = mc2;
|
asstat.from = mc2;
|
||||||
|
mc2.Parent = asstat;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -782,8 +780,9 @@ namespace SyntaxVisitors.Async
|
||||||
foreach (var w in vt.var_def.vars.list)
|
foreach (var w in vt.var_def.vars.list)
|
||||||
{
|
{
|
||||||
vd.vars.Add(w, w.source_context);
|
vd.vars.Add(w, w.source_context);
|
||||||
|
|
||||||
}
|
}
|
||||||
cm.members.Add(vd);
|
cm.Add(vd);
|
||||||
}
|
}
|
||||||
foreach (var v in VarsHelper.VarsList)
|
foreach (var v in VarsHelper.VarsList)
|
||||||
{
|
{
|
||||||
|
|
@ -797,10 +796,10 @@ namespace SyntaxVisitors.Async
|
||||||
vv.source_context = v.source_context;
|
vv.source_context = v.source_context;
|
||||||
vv.var_def = new var_def_statement(v.var_def.vars,
|
vv.var_def = new var_def_statement(v.var_def.vars,
|
||||||
new named_type_reference(new ident("string", v.source_context), v.source_context), v.source_context);
|
new named_type_reference(new ident("string", v.source_context), v.source_context), v.source_context);
|
||||||
cm.members.Add(vv.var_def);
|
cm.Add(vv.var_def);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
cm.members.Add(v.var_def);
|
cm.Add(v.var_def);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue