Рагель - Ragel

Рагель
ӘзірлеушілерАдриан Терстон[1]
Тұрақты шығарылым
6.10 / 24.03.2017; 3 жыл бұрын (2017-03-24)
Алдын ала қарау
7.0.0.12 / 2019 жылғы 14 мамыр; 18 ай бұрын (2019-05-14)
Репозиторий Мұны Wikidata-да өңдеңіз
ЖазылғанC ++
Операциялық жүйеUnix тәрізді, Windows
ТүріМемлекеттік машина құрастырушы
Лицензия«Ragel 6 астында қалады GPL v2 [жасалған код] MIT-мен қамтылған (немесе GPL v2) ».[2]
Рагель 7: MIT лицензиясы
Веб-сайтwww.colm.желі/ ашық көзі/ ragel/

Рагель Бұл ақырғы күйдегі машина құрастырушы және а талдаушы генератор. Бастапқыда Ragel үшін шығарылым қолдауға ие болды C, C ++ және Ассамблея бастапқы код,[3] оның ішінде бірнеше басқа тілдерді қолдау үшін кеңейтілді Мақсат C, Д., Барыңыз, Рубин, және Java.[4] Қосымша тілдік қолдау дамуда.[5]Бұл ұрпақ буынын қолдайды кесте немесе басқару ағыны басқарылатын мемлекеттік машиналар тұрақты тіркестер[6] және / немесе мемлекеттік диаграммалар, сонымен қатар құрастыра алады лексикалық анализаторлар ең ұзақ сәйкестік әдісі арқылы. Рагель нақты мақсатты көздейді мәтінді талдау және кірісті тексеру.[7]

Шолу

Рагель ұрпақтың дамуына қолдау көрсетеді кесте немесе басқару ағыны басқарылатын мемлекеттік машиналар бастап тұрақты тіркестер және / немесе мемлекеттік кестелер және де сала алады лексикалық анализаторлар ең ұзақ сәйкестік әдісі арқылы. Ragel-дің бірегей ерекшелігі - пайдаланушының әрекеттері тұрақты өрнектерге интеграцияланған операторларды қолдана отырып, ерікті мемлекеттік машиналық ауысулармен байланысты болуы мүмкін. Ragel сонымен бірге арқылы құрылатын машинаның визуализациясын қолдайды графвиз.

Visualisierung Ragel.png

Граф графикалық күйде машинаны ұсынады, ол пайдаланушы кірісін байттардың сериясы ретінде қабылдайды ASCII таңбалар мен басқару кодтары. 48..57 тұрақты өрнекке балама [0-9] (яғни кез-келген цифр), сондықтан тек цифрдан басталатын тізбектерді тануға болады. Егер 10 (жолды беру) кездессе, біз аяқтадық. 46 - ондық нүкте ('.'), 43 және 45 оң және теріс белгілер ('+', '-'), ал 69/101 'е' үлкен / кіші әріптер (санды ғылыми форматта көрсету үшін). Осылайша ол келесілерді дұрыс таниды:

24505546.78.12e578.3e1269.0e-33e + 3

бірақ жоқ:

.3-53.e22e5.1

Синтаксис

Рагельдің енгізуі тек a сипаттайтын мағынада тұрақты өрнек болып табылады тұрақты тіл; ол әдетте қысқаша тұрақты өрнекте жазылмайды, бірақ сияқты бірнеше бөлікке бөлініп жазылады Кеңейтілген Backus – Наур формасы. Мысалы, регес синтаксисіндегі POSIX таңбалар кластарын қолдаудың орнына, Рагель оларды ендірілген өндіріс ережелері ретінде қолданады. Кәдімгі талдаушы генераторлар сияқты, Ragel синтаксиспен жазылатын шығармалардың кодын өңдеуге мүмкіндік береді.[4] Ресми веб-сайттан жоғарыда келтірілген мысал келтірілген код:

әрекетdgt{ printf («DGT:% c», fc); }әрекетжелтоқсан{ printf («DEC:.»); }әрекетэксп{ printf («EXP:% c», fc); }әрекетexp_sign{ printf («SGN:% c», fc); }әрекетнөмір{ / * NUMBER * / }# Сөзбе-сөз өзгермелі нүкте.нөмір=([0-9]+$dgt('.'@желтоқсан[0-9]+$dgt)?([eE]([+-]$exp_sign)?[0-9]+$эксп)?)%нөмір;негізгі:=(нөмір'')*;

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Доктор Адриан Д.Турстон кезінде complang.org Соңғы рет өзгертілді: 2013 жылғы 14 шілде
  2. ^ «Ragel State Machine Compiler». www.colm.net. Алынған 2019-11-19.
  3. ^ Адриан Д.Турстон. «Компьютерлік тілдерді бірыңғай тұрақты өрнектен құрастырылған автоматты талдау. Мұрағатталды 2012-09-07 Wayback Machine «Жылы: Автоматиканы енгізу және қолдану бойынша 11-ші Халықаралық конференция (CIAA 2006), Информатикадағы дәрістер, 4094 том, б. 285-286, Тайвань, Тайвань, тамыз 2006 ж.
  4. ^ а б «Ragel пайдаланушы нұсқаулығы» (PDF). Наурыз 2017.
  5. ^ «Қосымша мақсатты тілдер Ragel 7-ге оралу». 18 мамыр 2018 ж.
  6. ^ Лицун Чен, Крис Дж. Митчелл, Эндрю Мартин (2009) Сенімді есептеу: Екінші халықаралық конференция, 2009 ж., Оксфорд, Ұлыбритания, 6–8 сәуір, 2009 ж. б. 111
  7. ^ Омар Бадреддин (2010) «Күңгірт: модельге бағытталған бағдарламалау тілі. « Software Engineering, 2010 ACM / IEEE 32-ші Халықаралық конференциясы. Том. 2018-04-21 121 2. IEEE, 2010 ж.

Сыртқы сілтемелер