pascalabcnet/SyntaxVisitors/SugarVisitors/ToExprVisitor.cs
Александр Земляк 1f4b44c2c0
Исправление ошибок при перекомпиляции pcu файлов (#3398)
* Move yield string constants to StringConstants class

* Add GeneratedNamesManager class to store all generated names during unit compilation

* Make GeneratedNamesManager class non static

* Add Utils project to installer files

* Add GeneratedNamesManager usage in CapturedVariablesSubstitutionsManager

* Move GeneratedNamesManager initialization in CompilationUnit constructor

* More GeneratedNamesManager usage

* QuestionPointDesugarVisitor fix
2026-03-08 18:30:33 +03:00

49 lines
1.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System.Collections.Generic;
using PascalABCCompiler.SyntaxTree;
namespace SyntaxVisitors.SugarVisitors
{
/// <summary>
/// А здесь не только замена кортежа - здесь оптимизация (a,b) := (1,2) и var (a,b) := (1,2)
/// </summary>
public class ToExprVisitor : BaseChangeVisitor
{
public static ToExprVisitor New
{
get { return new ToExprVisitor(); }
}
//private int num = 0;
//public string UniqueName()
//{
// num++;
// return "#let_expr_vis"+num.ToString();
//}
public override void visit(to_expr to_ex)
{
var pairMethod =
new method_call(
new dot_node(
new ident("PABCSystem", to_ex.source_context),
new ident("Pair", to_ex.source_context),
to_ex.source_context),
new expression_list(
new List<expression>()
{
to_ex.key,
to_ex.value
},
to_ex.source_context),
to_ex.source_context);
Replace(to_ex, pairMethod);
ProcessNode(to_ex.key);
ProcessNode(to_ex.value);
}
}
}