Словацкий язык
- 1 year ago
- 0
- 0
Для улучшения этой статьи
желательно
:
|
XL — основа расширяемого языка eXtensible Language. Это язык программирования , разработанный для поддержки концептуального программирования .
XL предоставляет программно расширяемый синтаксис и семантику . Плагины компилятора могут быть использованы для добавления новых возможностей в язык. Базовый набор плагинов реализован согласно стандартным императивным языкам. Программисты могут написать собственные плагины для реализации специфических задач, таких как работа с другими системами счисления , что позже может быть просто встроено в язык.
В XL определено три уровня абстракции:
XL не имеет ни примитивных типов , ни зарезервированных слов. Все используемые операторы и типы данных, такие как целые числа или оператор сложения, объявлены в стандартной библиотеке (XL2). XL1 является переносимым для выполнения в разных средах и платформах, однако если конкретный процессор не поддерживает умножения чисел с плавающей точкой, то описание соответствующего оператора в стандартной библиотеке может быть пропущено и использование такого умножения может закончиться ошибкой во время компиляции.
Пример программы Hello World в XL выглядит следующим образом:
use XL.TEXT_IO WriteLn "Hello World"
Альтернативным написанием в стиле, более пригодном для широко масштабируемых программ, в виде:
import IO = XL.TEXT_IO IO.WriteLn "Hello World"
Синтаксис определён на уровне XL0. Этап компиляции XL0 может быть сконфигурирован используя синтаксис описательного файла , в котором определено как представляется текст и назначен приоритет операций. Базовый синтаксический файл определяет общие математические нотации, например «+» для сложения, которые обычно приняты в порядке операций.
Структурное дерево содержит 7 типов узлов: 4 конечных узла типов (целое, вещественное, текст и символ) и 3 внутренних узла типов (инфиксный, префикс и блок).
2
. Знак
#
может быть использован для указания основания числа отличного от 10, например
2#1001
— число 1001 в двоичной системе счисления. Для удобочитаемости можно использовать знак «_» нижнее подчёркивание:
1_000_000
.
2.5
. Нотации основы и разделителей могут быть использованы как и для целых узлов, например
16#F.FFF#E-10
.
"Слава КПСС!"
или
'Ё'
. В то же время с помощью синтаксического файла можно добавить другие разделители, включая разделители для многострочного текстового содержимого.
Пётр1
. В уровне XL0 учитывается регистр букв, но XL1 игнорирует регистр и символы нижнего подчёркивания, так что
ИванСусанин
иван_сусанин
являются равнозначными именами.
A+1
или
2 and 3
.
Write "Слава КПСС!"
. Их так же используют для постфиксной записи:
3!
или
Open?
.
(A)
,
[Index]
. Отступ непосредственно представлен блочным узлом.
Со стандартным синтаксическим файлом, ниже следующее является правильным XL0, независимым от любой семантики.
A = B + "Hello"
После обработки это будет выглядеть как:
infix("=", symbol("A"), infix("+", symbol("B"), text("Hello")))