pascalabcnet/SyntaxVisitors/BaseSyntaxTreeConverter.cs
AlexanderZemlyak aae723b982
Create default syntax tree converter class (#3216)
Для удобства разработчиков простых языков, которым не требуются дополнительные обходы синтаксического дерева.
2025-04-03 12:00:04 +03:00

34 lines
1.3 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 PascalABCCompiler.SyntaxTree;
namespace PascalABCCompiler.SyntaxTreeConverters
{
public abstract class BaseSyntaxTreeConverter : ISyntaxTreeConverter
{
public abstract string Name { get; }
public syntax_tree_node Convert(syntax_tree_node root)
{
// Прошивание ссылками на Parent nodes. Должно идти первым
// FillParentNodeVisitor расположен в SyntaxTree/tree как базовый визитор, отвечающий за построение дерева
//FillParentNodeVisitor.New.ProcessNode(root); // почему-то перепрошивает не всё. А следующий вызов - всё
root.FillParentsInAllChilds();
return ApplyConcreteConversions(root);
}
protected abstract syntax_tree_node ApplyConcreteConversions(syntax_tree_node root);
}
public class DefaultSyntaxTreeConverter : BaseSyntaxTreeConverter
{
public override string Name => "Default";
protected override syntax_tree_node ApplyConcreteConversions(syntax_tree_node root) => root;
}
}