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