pascalabcnet/LanguageIntegrator/ILanguage.cs
Александр Земляк b8bda89f0f
Исправление div (//) и mod (%) для SPython (#3384)
* Fix div and mod in SPython

* Fix generic type names search in SPython symbol table

* Small fixes

* Add few checks in Intellisense

* Add comments about units compilation order
2026-02-02 21:14:27 +03:00

83 lines
3.1 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.Parsers;
using PascalABCCompiler.SyntaxTreeConverters;
using PascalABCCompiler.TreeConverter;
namespace Languages.Facade
{
/// <summary>
/// Интерфейс языка программирования, поддерживаемого платформой
/// </summary>
public interface ILanguage
{
/// <summary>
/// Название языка
/// </summary>
string Name { get; }
/// <summary>
/// Версия языка
/// </summary>
string Version { get; }
/// <summary>
/// Авторское право
/// </summary>
string Copyright { get; }
ILanguageInformation LanguageInformation { get; }
ILanguageIntellisenseSupport LanguageIntellisenseSupport { get; }
/// <summary>
/// Основной парсер языка
/// </summary>
IParser Parser { get; }
/// <summary>
/// Парсер документирующих комментариев языка
/// </summary>
IDocParser DocParser { get; }
/// <summary>
/// Постпреобразования синтаксического дерева (синтаксический сахар и др.)
/// </summary>
List<ISyntaxTreeConverter> SyntaxTreeConverters { get; }
/// <summary>
/// Преобразователь из синтаксического дерева в семантическое
/// </summary>
syntax_tree_visitor SyntaxTreeToSemanticTreeConverter { get; }
/// <summary>
/// Расширения файлов, относящиеся к языку
/// </summary>
string[] FilesExtensions { get; }
/// <summary>
/// Чувствительность к регистру
/// </summary>
bool CaseSensitive { get; }
/// <summary>
/// Названия системных модулей (стандартной библиотеки и др.)
/// Компилируются в порядке добавления в список
/// </summary>
string[] SystemUnitNames { get; }
/// <summary>
/// Задание семантических констант, частично задающих семантические правила языка (поля класса SemanticRules)
/// </summary>
void SetSemanticConstants();
/// <summary>
/// Обновление SyntaxTreeToSemanticTreeConverter (нужно при обновлении компилятора)
/// </summary>
// TODO: Возможно, стоит переделать логику обновления, чтобы не приходилось создавать новый объект каждый раз EVA
void SetSyntaxTreeToSemanticTreeConverter();
}
}