XL (язык программирования)

XL
Класс языка мультипарадигменный: императивный
Появился в 2000
Автор Кристоф Де Динечин[вд]
Разработчик Кристоф Де Динечин[вд]
Выпуск 0.1 (2010)
Тестовая версия 2-27-2010
Система типов строгая
Испытал влияние Ada, C++
Лицензия GPLv2
Сайт xlr.sf.net
ОС Unix-подобная операционная система

XL — основа расширяемого языка eXtensible Language. Это язык программирования, разработанный для поддержки концептуального программирования.

Описание

XL предоставляет программно расширяемый синтаксис и семантику. Плагины компилятора могут быть использованы для добавления новых возможностей в язык. Базовый набор плагинов реализован согласно стандартным императивным языкам. Программисты могут написать собственные плагины для реализации специфических задач, таких как работа с другими системами счисления, что позже может быть просто встроено в язык.

Язык

В XL определено три уровня абстракции:

  • XL0 определяет как исходный текст должен преобразовываться в структурное дерево.
  • XL1 определяет основу языка с возможностями сравнимыми с C++.
  • XL2 определяет стандартную библиотеку, включающую основные типы данных и операторы.

XL не имеет ни примитивных типов, ни зарезервированных слов. Все используемые операторы и типы данных, такие как целые числа или оператор сложения, объявлены в стандартной библиотеке (XL2). XL1 является переносимым для выполнения в разных средах и платформах, однако если конкретный процессор не поддерживает умножения чисел с плавающей точкой, то описание соответствующего оператора в стандартной библиотеке может быть пропущено и использование такого умножения может закончиться ошибкой во время компиляции.

Пример программы Hello World в XL выглядит следующим образом:

 use XL.TEXT_IO
 WriteLn "Hello World"

Альтернативным написанием в стиле, более пригодном для широко масштабируемых программ, в виде:

 import IO = XL.TEXT_IO
 IO.WriteLn "Hello World"

Пример программы, вычисляющей факториал чисел от 1 до 20:

0! is 1
N! is N * (N-1)!
for I in 1..20 loop
    print I!

Синтаксис

Синтаксис определён на уровне XL0. Этап компиляции XL0 может быть сконфигурирован используя специальный описательный файл, в котором определено как представляется текст и назначен приоритет операций. Базовый синтаксический файл определяет общие математические нотации, например «+» для сложения, которые обычно приняты в порядке операций.

Структурное дерево содержит 7 типов узлов: 4 конечных узла типов (целое, вещественное, текст и символ) и 3 внутренних узла типов (инфиксный, префикс и блок).

  • целый (integer) узел представляет собой целый литерал, такой как 2. Знак # может быть использован для указания основания числа отличного от 10, например 2#1001 — число 1001 в двоичной системе счисления. Для удобочитаемости можно использовать знак «_» нижнее подчёркивание: 1_000_000.
  • вещественный (real) узел представляет собой не слитные числа, как например 2.5. Нотации основы и разделителей могут быть использованы как и для целых узлов, например 16#F.FFF#E-10.
  • текстовый (text) узел представляет текстовое содержимое. Они обычно заключаются в одинарные или двойные кавычки, например "Слава КПСС!" или 'Ё'. В то же время с помощью синтаксического файла можно добавить другие разделители, включая разделители для многострочного текстового содержимого.
  • символьный (symbol) узел представляет имена или операторы. Имена — это последовательность букв или цифр начинающееся с буквы. Например: Пётр1. В уровне XL0 учитывается регистр букв, но XL1 игнорирует регистр и символы нижнего подчёркивания, так что ИванСусанин иван_сусанин являются равнозначными именами.
  • инфиксные (infix) узлы представляются двумя узлами, связанными инфиксным символом. Например: A+1 или 2 and 3.
  • префиксные (prefix) узлы представляются двумя последовательными узлами. Например: Write "Слава КПСС!". Их так же используют для постфиксной записи: 3! или Open?.
  • блочные (block) узлы представляются как узел заключённый в группированные символы, как например (A), [Index]. Отступ непосредственно представлен блочным узлом.

Со стандартным синтаксическим файлом, ниже следующее является правильным XL0, независимым от любой семантики.

A = B + "Hello"

После обработки это будет выглядеть как:

infix("=",
      symbol("A"),
      infix("+",
            symbol("B"), text("Hello")))

Ссылки

Read other articles:

Schoutenia Schoutenia ovata Klasifikasi ilmiah Kerajaan: Plantae Upakerajaan: Trachaeophyta Divisi: Magnoliophyta Kelas: Magnoliopsida Subkelas: Dilleniidae Ordo: Malvales Famili: Malvaceae Subfamili: Dombeyoideae Genus: SchouteniaKorth. Spesies[1] Schoutenia accrescens (Mast.) Merr. Schoutenia cornerii Roekm. Schoutenia curtisii Roekm. Schoutenia furfuracea Kochummen Schoutenia glomerata King Schoutenia godefroyana Baill. Schoutenia kostermansii Roekm. Schoutenia kunstleri King Scho...

 

 

Genus of fishes Botia Botia striata Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Actinopterygii Order: Cypriniformes Family: Botiidae Genus: BotiaJ. E. Gray, 1831 Type species Botia almorhaeGray 1831 Species See text Synonyms Hymenphysa Botia (Indian loaches) is a genus of freshwater fish in the loach family (Botiidae). It was a large genus with about 20 species. In 2004 Maurice Kottelat proposed in his paper (along with the description of Botia kubota...

 

 

Komando Armada IILambang Koarmada IIAktif30 Maret 1985Negara IndonesiaTipe unitArmadaBagian dariKomando Armada RIMarkasSurabaya, Jawa TimurMotoGhora Wira Madya JalaBaret BIRU LAUT Situs webkoarmada2.tnial.mil.idTokohPanglimaLaksamana Madya TNI Ariantyo Condrowibowo, M.Tr.Opsla.Kepala StafLaksamana Pertama TNI Isswarto, M.Tr.Opsla, CHRMP.InspekturLaksamana Pertama TNI Eriyawan, S.E.Kepala Kelompok Staf AhliLaksamana Pertama TNI Widyanto Pudyo Purnomo, S.H., M.H. Komando Armada II (di...

الدائرة الانتخابية الثالثة، هي إحدى الدوائر الانتخابية التابعة لانتخابات مجلس الأمة الكويتي.[1] عدد الناخبين في هذه الدائرة 63 الف ناخب في 2009 . تضم المناطق التالية قرطبة كيفان الروضة العديلية الجابرية السرة الخالدية اليرموك أبرق خيطان خيطان الجديدة السلام الصديق حطين �...

 

 

Lux

Lux meter untuk mengukur illuminances di tempat kerja The lux (simbol lx) adalah satuan turunan SI dari pencahayaan dan daya pancar cahaya, mengukur fluks cahaya per satuan luas.[1] Ini sama dengan satu lumen per meter persegi. Dalam fotometri, ini digunakan sebagai ukuran intensitas, seperti yang dirasakan oleh mata manusia, cahaya yang mengenai atau melewati permukaan. Hal ini analog dengan radiometrik satuan watt per meter persegi, tetapi dengan daya pada masing-masing panjang gelo...

 

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (ديسمبر 2020) تشارلز دانيال-فنسنت (بالفرنسية: Daniel Vincent)‏    معلومات شخصية الميلاد 31 مارس 1874 [1]  الوفاة 3 مايو 1946 (72 سنة) [1]  باريس  مواطنة فرنسا  عضو في ...

Questa voce o sezione sull'argomento scrittori è ritenuta da controllare. Motivo: Nella voce sono presenti molte affermazioni forti non supportate da adeguate fonti, necessita un accurato controllo o una drastica pulizia. Partecipa alla discussione e/o correggi la voce. Segui i suggerimenti del progetto di riferimento. Questa voce o sezione sull'argomento scrittori italiani non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo c...

 

 

Untuk negara, lihat Laos. Lengkuas Lengkuas (Alpinia galanga) Klasifikasi ilmiah Kerajaan: Plantae (tanpa takson): Tracheophyta (tanpa takson): Angiospermae (tanpa takson): Monokotil (tanpa takson): Commelinids Ordo: Zingiberales Famili: Zingiberaceae Subfamili: Alpinioideae Tribus: Alpinieae Genus: Alpinia Spesies: A. galanga Nama binomial Alpinia galanga(L.) Willd. Sinonim Sumber:[1][2] A. galanga (L.) Swartz A. pyramidata Bl. Amomum medium Lour. Languas galanga (L.) Me...

 

 

American politician Lorenzo DanfordMember of the U.S. House of Representativesfrom Ohio's 16th districtIn officeMarch 4, 1873 – March 3, 1879Preceded byJohn BinghamSucceeded byWilliam McKinleyIn officeMarch 4, 1895 – June 19, 1899Preceded byAlbert J. PearsonSucceeded byJoseph J. Gill Personal detailsBorn(1829-10-18)October 18, 1829Belmont County, OhioDiedJune 19, 1899(1899-06-19) (aged 69)St. Clairsville, OhioResting placeMethodist Cemetery, St. Clairsvi...

Pour les articles homonymes, voir Scotland et Écosse (homonymie). Cet article concerne l'Écosse dans son ensemble et sa forme politique actuelle. Pour l'ancien État souverain, voir Royaume d'Écosse. Écosse Scotland (en)Scotland (sco)Alba (gd) Armoiries de l'Écosse. Drapeau de l'Écosse. Localisation de l'Écosse (vert foncé) au sein du Royaume-Uni (vert clair), en Europe. Administration Pays Royaume-Uni Statut politique Nation constitutive du Royaume-Uni Capitale É...

 

 

Movement that advocates Texas to be an independent sovereign state Texit redirects here. For the proposed legislation, see Texas Independence Referendum Act. Flag of Texas Texas secession movements, also known as the Texas independence movement or Texit,[1][2] refers to both the secession of Texas during the American Civil War as well as activities of modern organizations supporting such efforts to secede from the United States and become an independent sovereign state. The U....

 

 

 Bene protetto dall'UNESCOInsieme archeologico di Mérida Patrimonio dell'umanità TipoCulturale Criterio(iii) (iv) PericoloNon in pericolo Riconosciuto dal1993 Scheda UNESCO(EN) Archaeological Ensemble of Mérida(FR) Ensemble archéologique de Mérida Manuale L'insieme archeologico di Mérida, l'Augusta Emerita romana fondata come colonia romana nell'anno 25 a.C., per ordine dell'imperatore Ottaviano Augusto, è uno dei principali insiemi archeologici di Spagna ubicato nella ci...

土库曼斯坦总统土库曼斯坦国徽土库曼斯坦总统旗現任谢尔达尔·别尔德穆哈梅多夫自2022年3月19日官邸阿什哈巴德总统府(Oguzkhan Presidential Palace)機關所在地阿什哈巴德任命者直接选举任期7年,可连选连任首任萨帕尔穆拉特·尼亚佐夫设立1991年10月27日 土库曼斯坦土库曼斯坦政府与政治 国家政府 土库曼斯坦宪法 国旗 国徽 国歌 立法機關(英语:National Council of Turkmenistan) ...

 

 

1922 treaty forming the legal foundation and government structure of the Soviet Union This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Treaty on the Creation of the Union of Soviet Socialist R...

 

 

Братская ГЭС Вид на ГЭС с левого берега Страна  Россия Местоположение  Иркутская область, г. Братск Река Ангара Каскад Ангарский Собственник En+ Group Статус действующая Год начала строительства 1954 Годы ввода агрегатов 1961—1966 Основные характеристики Годовая выработка ...

MRT station in Kuala Lumpur, Malaysia This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Taman Midah MRT station – news · newspapers · books · scholar · JSTOR (January 2016) (Learn how and when to remove this message)  KG24   CC23  Taman Midah | MRT stationstation viewGeneral informationOthe...

 

 

Walter Roque Información personalNacimiento 8 de mayo de 1937 Montevideo (Uruguay) Fallecimiento 30 de diciembre de 2014 (77 años)Caracas (Venezuela) Nacionalidad UruguayaInformación profesionalOcupación Futbolista y entrenador Carrera deportivaDeporte Fútbol Representante de Uruguay Perfil de jugadorPosición centrocampista y extremo izquierdo Equipos Rampla Juniors Football Club, Club Atlético Atlanta y Selección de fútbol de Uruguay [editar datos en Wikidata] Walter Cata ...

 

 

Fireboat This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Duwamish fireboat – news · newspapers · books · scholar · JSTOR (March 2008) (Learn how and when to remove this message) Duwamish fireboat at the Hiram M. Chittenden Locks, Seattle History United States NameDuwamish BuilderRichmond Beach Shipbuild...

艾格维沃Aigues-Vives 法國市镇 徽章艾格维沃的位置 艾格维沃显示法国的地图艾格维沃显示加尔省的地图坐标:43°44′22″N 4°10′50″E / 43.7394°N 4.1806°E / 43.7394; 4.1806国家 法國大区 奧克西塔尼大區省 加尔省面积1 • 市镇12 平方公里(5 平方英里)人口(2021年)[1] • 市镇3,331人 • 密度278人/平方公里(719人/�...

 

 

Southeast Asia Part of a series on the History of Southeast Asia Prehistory of Southeast Asia Paleolithic Callao Illu Kilu Liang Bua Niah Tabon Tam Pa Ling Trinil Mesolithic Kuk Swamp Neolithic Austronesian expansion Austronesian agriculture Lal-lo and Gattaran Lapita culture Iron Age Sa Huỳnh Ban Chiang Bujang Maitum Indianised and Buddhist kingdoms Hinduism in Southeast Asia Buddhism in Southeast Asia Java and Sumatra Srivijaya Majapahit Indochina Angkor Champa Đại Việt Lan Xang Pag...