27 lines
872 B
C#
27 lines
872 B
C#
using PascalABCCompiler.SyntaxTree;
|
||||
|
||||
namespace Languages.SPython.Frontend.Converters
|
||||
{
|
||||
internal class MapDesugarVisitor : BaseChangeVisitor
|
||||
{
|
||||
public MapDesugarVisitor() { }
|
||||
|
||||
public override void visit(method_call mc)
|
||||
{
|
||||
base.visit(mc);
|
||||
|
||||
if (mc.dereferencing_value is ident map && map.name == "map" &&
|
||||
mc.parameters.Count == 2 && mc.parameters[0] is addressed_value av &&
|
||||
mc.parameters[1] is expression range)
|
||||
{
|
||||
ident ident = new ident("!map_iterable_element", mc.source_context);
|
||||
expression expr = new method_call(av, new expression_list(ident), mc.source_context);
|
||||
|
||||
generator_object go = new generator_object(expr, ident, range, null, mc.source_context);
|
||||
|
||||
Replace(mc, go);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|