Jump to content

Сравнение генераторов парсеров

Это список известных генераторов лексеров и генераторов синтаксических анализаторов для различных языковых классов.

Обычные языки

[ редактировать ]

Регулярные языки — это категория языков (иногда называемая типом Хомского 3 ), которой может соответствовать конечный автомат (более конкретно, детерминированный конечный автомат или недетерминированный конечный автомат ), построенный на основе регулярного выражения . В частности, обычный язык может сопоставлять такие конструкции, как «A следует за B», «Либо A, либо B», «A, за которым следует ноль или более экземпляров B», но не может сопоставлять конструкции, которые требуют согласованности между несмежными элементами, такие как как «за некоторыми экземплярами A следует такое же количество экземпляров B», а также не может выражать концепцию рекурсивного «вложения» («за каждым A в конечном итоге следует соответствующий B»). Классическим примером проблемы, которую не может решить обычная грамматика, является вопрос о том, содержит ли данная строка правильно вложенные круглые скобки. (Обычно это обрабатывается грамматикой Хомского типа 2, также называемой контекстно-свободной грамматикой .)

Имя Алгоритм Лексера Языки вывода Грамматика, код Платформа разработки Лицензия
Алекс ДФА Хаскелл Смешанный Все Бесплатно, БСД
АнноФлекс ДФА Ява Смешанный виртуальная машина Java Бесплатно, БСД
Астир Управление таблицей DFA , с ветвлением С++ Только грамматика (действовало) Все Бесплатно, Массачусетский технологический институт
ОстинИкс ДФА Ява Отдельный Все Бесплатно, БСД
С# гибкий ДФА С# Смешанный .NET CLR Бесплатно, GNU GPL
С# Лекс ДФА С# Смешанный .NET CLR ?
КукCC ДФА Ява Смешанный виртуальная машина Java Бесплатно, Апач 2.0
ДФА DFA Сжатая матрица С , С++ Отдельный Windows, Визуальная Студия БСД
Дельфин ДФА С++ Отдельный Все Собственный
Гибкий DFA Управление таблицей С , С++ Смешанный Все Бесплатно, БСД
гельекс ДФА Эйфелева Смешанный Эйфелева Бесплатно, Массачусетский технологический институт
голекс ДФА Идти Смешанный Идти Бесплатная, BSD в стиле
gplex ДФА С# Смешанный .NET CLR Бесплатная, BSD -подобная
JFlex ДФА Ява Смешанный виртуальная машина Java Бесплатно, БСД
ДжейЛекс ДФА Ява Смешанный виртуальная машина Java Бесплатная, BSD -подобная
Лекс ДФА С Смешанный ПОСИКС Частичный, проприетарный , CDDL
лексертль ДФА С++ ? Все Бесплатно, GNU LGPL
Квекс DFA Прямой код С , С++ Смешанный Все Бесплатно, GNU LGPL
Мужчина ДФА Го , C , C++ , ассемблер Смешанный Все Бесплатно, GNU GPL , Массачусетский технологический институт [1] [2]
Рефлекс Прямой код DFA , библиотеки DFA на основе таблиц и NFA . библиотеки регулярных выражений С++ Смешанный Все Бесплатно, БСД
re2c DFA Прямой код C , C++ , Го , Ржавчина Смешанный Все Бесплатно, общественное достояние

Детерминированные контекстно-свободные языки

[ редактировать ]

Контекстно-свободные языки — это категория языков (иногда называемых типом Хомского 2 ), которым можно сопоставить последовательность правил замены, каждое из которых по существу отображает каждый нетерминальный элемент в последовательность терминальных элементов и/или других нетерминальных элементов. Грамматики этого типа могут соответствовать всему, что может быть сопоставлено с помощью обычной грамматики , и, кроме того, могут обрабатывать концепцию рекурсивного «вложения» («за каждым A в конечном итоге следует соответствующее B»), например, вопрос о том, является ли данное строка содержит правильно вложенные круглые скобки. Однако правила контекстно-свободных грамматик являются чисто локальными и поэтому не могут обрабатывать вопросы, требующие нелокального анализа, такие как «Существует ли объявление для каждой переменной, которая используется в функции?». Технически, чтобы сделать это, потребуется более сложная грамматика, такая как грамматика Хомского типа 1, также называемая контекстно-зависимой грамматикой . Однако генераторы синтаксических анализаторов для контекстно-свободных грамматик часто поддерживают возможность написанного пользователем кода вводить ограниченную степень контекстно-зависимости. (Например, при обнаружении объявления переменной написанный пользователем код может сохранить имя и тип переменной во внешней структуре данных, чтобы их можно было проверить на предмет более поздних ссылок на переменные, обнаруженных анализатором.)

Детерминированные контекстно-свободные языки являются подмножеством контекстно-свободных языков, которые могут эффективно анализироваться детерминированными автоматами с выталкиванием вниз .

Имя парсинга Алгоритм Обозначение входной грамматики Языки вывода Грамматика, код Лексер Платформа разработки ИДЕТ Лицензия
АНТЛР 4 Адаптивная LL(*) [3] ЕБНФ C# , Java , Python , JavaScript , C++ , Swift , Go , PHP Отдельный созданный виртуальная машина Java Да Бесплатно, БСД
АНТЛР 3 ЛЛ (*) ЕБНФ ActionScript , Ada95 , C , C++ , C# , Java , JavaScript , Objective-C , Perl , Python , Ruby Смешанный созданный виртуальная машина Java Да Бесплатно, БСД
ПНГ [4] Рекурсивный спуск , возврат АБНФ Python , JavaScript , C , Java Отдельный никто Все Нет Бесплатно, БСД
Бобр [5] [6] ЛАЛР (1) ЕБНФ Ява Смешанный внешний виртуальная машина Java Нет Бесплатно, БСД
Бизон ЛАЛР (1), ЛР (1), ИЛР (1), ГЛР Якк С , С++ , Ява Смешанный внешний Все Нет Бесплатно, GNU GPL, за исключением
БтЯкк Возврат снизу вверх ? С++ Смешанный внешний Все Нет Бесплатно, общественное достояние
по акк ЛАЛР (1) Якк С Смешанный внешний Все Нет Бесплатно, общественное достояние
CL-Yacc [7] [8] ЛАЛР (1) Лисп Общий Лисп Смешанный внешний Все Нет Бесплатно, Массачусетский технологический институт
Коко/Р ЛЛ (1) ЕБНФ C , C++ , C# , F# , Java , Ada , Object Pascal , Delphi , Modula-2 , Oberon , Ruby , Swift , Unicon , Visual Basic .NET Смешанный созданный Виртуальная машина Java , .NET Framework, Windows , POSIX (зависит от языка вывода) Нет Бесплатно, GNU GPL
CppCC [9] [10] ЛЛ (к) ? С++ Смешанный созданный ПОСИКС Нет Бесплатно, GNU GPL
ЧАШКА [11] [12] ЛАЛР (1) ? Ява Смешанный внешний виртуальная машина Java Нет Бесплатная, BSD -подобная
Или [13] [14] ЛАЛР (1) ? С Смешанный созданный ПОСИКС Нет Бесплатно, GNU GPL , GNU LGPL
Сущность [15] ЛР (?) ? Схема 48 Смешанный внешний Все Нет Бесплатно, БСД
ага [16] ЛАЛР (1) ? Перл Смешанный внешний или генерируемый Все Нет Бесплатное, Художественное
ЗОЛОТО [17] ЛАЛР (1) БНФ язык ассемблера x86 , ANSI C , C# , D , Java , Pascal , Object Pascal , Python , Visual Basic 6, Visual Basic .NET , Visual C++ Отдельный созданный Окна Да Бесплатно, zlib модифицирован
Генератор парсера Hime [18] ЛАЛР (1), ГЛР диалект БНФ С# , Java , Руст Отдельный созданный .NET Framework, виртуальная машина Java Нет Бесплатно, GNU LGPL
Хьякк [19] ЛР(1), ЛАЛР(1), ЛР (0) Якк С Смешанный внешний Все Нет Бесплатно, GNU GPL
JavaCC [20] [21] ЛЛ (к) ЕБНФ Java , C++ , JavaScript (через GWT ) компилятор [22] Смешанный созданный виртуальная машина Java Да Бесплатно, БСД
JFLAP ЛЛ (1), ЛАЛР (1) ? Ява ? ? виртуальная машина Java Да ?
ДжетПАГ ЛЛ (к) ? С++ Смешанный созданный Все Нет Бесплатно, GNU GPL
JS/CC ЛАЛР (1) ЕБНФ JavaScript , JScript , ECMAScript Смешанный внутренний Все Да Бесплатно, БСД
KDevelop-PG-Qt LL (1), обратный путь , маневровая станция ? С++ Смешанный генерируемый или внешний Всё, ГДЕ Нет Бесплатно, GNU LGPL
Вызов Возврат LALR (1) ? С++ Смешанный созданный ПОСИКС Нет Бесплатно, GNU GPL
кмьякк ЛАЛР (1) ? С , Java , Перл , JavaScript Смешанный внешний Все Нет Бесплатно, GNU GPL
Лапг ЛАЛР (1) ? C , C++ , C# , Java , JavaScript Смешанный созданный виртуальная машина Java Нет Бесплатно, GNU GPL
Жаворонок LALR (1), Эрли (SPPF) ЕБНФ Питон , JavaScript Смешанный созданный Все Да Бесплатно, Массачусетский технологический институт
Лимон ЛАЛР (1) диалект БНФ [23] С Смешанный внешний Все Нет Бесплатно, общественное достояние
Читатель [24] [25] [26] ЛР (1), ГЛР ЕБНФ диалект JavaScript Отдельный созданный Node.js , JavaScript Нет Бесплатно, Массачусетский технологический институт
Лайм ЛАЛР (1) ? PHP Смешанный внешний Все Нет Бесплатно, GNU GPL
ЛИЗА ЛР (?), ЛЛ (?), ЛАЛР (?), СЛР (?) ? Ява Смешанный созданный виртуальная машина Java Да Бесплатно, общественное достояние
LLgen ЛЛ (1) ? С Смешанный внешний ПОСИКС Нет Бесплатно, БСД
LLnextgen ЛЛ (1) ? С Смешанный внешний Все Нет Бесплатно, GNU GPL
ЛЛЛПГ LL (k) + синтаксические и смысловые предикаты ANTLR-подобный С# Смешанный созданный (?) .NET Framework, моно Визуальная Студия Бесплатно, GNU LGPL
сжиженный нефтяной газ Возврат LALR (k) ? Ява Смешанный созданный виртуальная машина Java Нет Бесплатно, АПЛ
ЛРСТАР [27] ЛАЛР (1), ЛАЛР (*) ЯКК, АНТЛР, ЕБНФ С++ Отдельный созданный Окна Визуальная Студия Бесплатно, БСД
Менгиры ЛР (1) ? OCaml Смешанный созданный Все Нет Бесплатно, QPL
ML-Yacc ЛАЛР (1) ? МЛ Смешанный внешний Все Нет ?
Обезьяна ЛР (1) ? Ява Отдельный созданный виртуальная машина Java Нет Бесплатно, GNU GPL
Месть ЛАЛР (к), ЛР (к) ЯАКК , ЕБНФ С , С++ Смешанный внешний или генерируемый POSIX , Сигвин Нет Бесплатно, GNU GPL
MTP (Больше, чем анализ) ЛЛ (1) ? Ява Отдельный созданный виртуальная машина Java Нет Бесплатно, GNU GPL
МойПарсер ЛЛ (*) Уценка С++11 Отдельный внутренний Любой со стандартным компилятором C++11. Нет Бесплатно, Массачусетский технологический институт
НЛТ ГЛР C# / BNF -подобный С# Смешанный смешанный .NET- фреймворк Нет Бесплатно, Массачусетский технологический институт
окамлякк ЛАЛР (1) ? OCaml Смешанный внешний Все Нет Бесплатно, QPL
олекс ЛЛ (1) ? С++ Смешанный созданный Все Нет Бесплатно, GNU GPL
Парсек ЛЛ , возврат назад Хаскелл Хаскелл Смешанный никто Все Нет Бесплатно, БСД
ага [16] ЛАЛР (1) ? Перл Смешанный внешний Все Нет Бесплатно, GNU GPL
Объекты парсера ЛЛ (к) ? Ява Смешанный ? виртуальная машина Java Нет Бесплатно, zlib
ПКЦТС LL ? С , С++ ? ? Все Нет ?
ПЛИ ЛАЛР (1) БНФ Питон Смешанный созданный Все Нет Бесплатно, Массачусетский технологический институт
ПлайПлюс ЛАЛР (1) ЕБНФ Питон Отдельный созданный Все Нет Бесплатно, Массачусетский технологический институт
ПРЕКК ЛЛ (к) ? С Отдельный созданный ДОС , ПОСИКС Нет Бесплатно, GNU GPL
соотв. [28] ЛАЛР (1) BNF -подобный, yacc-подобный [29] Руби Смешанный ? Windows, Linux, macOS, FreeBSD, NetBSD Нет LGPL
КЛАЛР ЛАЛР (1) ? С++ Смешанный внешний Все Нет Бесплатно, GNU GPL
СобольCC ЛАЛР (1) ? C , C++ , C# , Java , OCaml , Python Отдельный созданный виртуальная машина Java Нет Бесплатно, GNU LGPL
СЛК [30] ЛЛ (к) ЛР (к) ЛАЛР (к) ЕБНФ C , C++ , C# , Java , JavaScript Отдельный внешний Все Нет СЛК [31]
СЛАЙ [32] ЛАЛР (1) БНФ Питон Смешанный созданный Все Нет Бесплатно, Массачусетский технологический институт
SP (Простой парсер) Рекурсивный спуск Питон Питон Отдельный созданный Все Нет Бесплатно, GNU LGPL
Дух Рекурсивный спуск ? С++ Смешанный внутренний Все Нет Бесплатно, Повышение
Стикс ЛАЛР (1) ? С , С++ Отдельный созданный Все Нет Бесплатно, GNU LGPL
сладкий парсер ЛАЛР (1) ? С++ Отдельный созданный Окна Нет Бесплатно, zlib
Кран ЛЛ (1) ? С++ Смешанный созданный Все Нет Бесплатно, GNU GPL
Тексттрансформер ЛЛ (к) ? С++ Смешанный созданный Окна Да Собственный
КрошечныйPG ЛЛ (1) ? С# , Визуальный Бейсик ? ? Окна Да Частично, CPOL 1.0
Генератор игрушечного парсера Рекурсивный спуск ? Питон Смешанный созданный Все Нет Бесплатно, GNU LGPL
ТП Якк ЛАЛР (1) ? Турбо Паскаль Смешанный внешний Все Да Бесплатно, GNU GPL
Сидящий на дереве [33] ЛР (1), ГЛР JavaScript DSL , JSON C , привязки ( Rust , WebAssembly , JavaScript , Python и многие другие) Отдельный сгенерированный + внешний Все Neovim , Helix , GNU Emacs , Lapce , Zed Бесплатно, Массачусетский технологический институт
Туннельная грамматическая студия Парсинг туннелей АБНФ С++ Отдельный созданный Окна Да Собственный
Ультраграмм ЛАЛР (1), ЛР (1), ГЛР БНФ C++, Java, C#, Visual Basic .NET Отдельный внешний Окна Да Бесплатно, общественное достояние
UniCC ЛАЛР (1) ЕБНФ C , C++ , Python , JavaScript , JSON , XML Смешанный созданный ПОСИКС Нет Бесплатно, БСД
УрчинCC ЛЛ (1) ? Ява ? созданный виртуальная машина Java Нет ?
Якк AT&T / Вс ЛАЛР (1) Якк С Смешанный внешний ПОСИКС Нет Бесплатно, CPL и CDDL
Як++ ЛР (1), ЛАЛР (1) Якк С++ , С# Смешанный генерируемый или внешний Все Нет Собственный
Яппы ЛЛ (1) ? Питон Смешанный созданный Все Нет Бесплатно, Массачусетский технологический институт
дааа ЛАЛР (1) ? Эрланг Отдельный созданный Все Нет Бесплатно, Апач 2.0
Визуальный БНФ ЛР (1), ЛАЛР (1) ? С# Отдельный созданный .NET- фреймворк Да Собственный
ЮПарс ЛР (1), ЛАЛР (1) ? С++ Смешанный внешний Все Нет Бесплатно, Массачусетский технологический институт
Разобрать [34] ЛР (1) БНФ в C++ типах ? ? никто Стандартный компилятор C++11 Нет Бесплатно, Массачусетский технологический институт
ГГЛЛ ЛЛ (1) График Ява Смешанный созданный Окна Да Бесплатно, Массачусетский технологический институт
Продукт парсинга Алгоритм Обозначение входной грамматики Языки вывода Грамматика, код Лексер Платформа разработки ИДЕТ Лицензия

Анализ грамматик выражений, детерминированные логические грамматики

[ редактировать ]

В этой таблице генераторы синтаксического анализа сравниваются с синтаксическими грамматиками выражений , детерминированными логическими грамматиками .

Имя парсинга Алгоритм Языки вывода Грамматика, код Платформа разработки Лицензия
ОстинИкс Пакрат (модифицированный) Ява Отдельный Все Бесплатно, БСД
зубры Пакрат C , OCaml , Java Смешанный Все Бесплатно, GNU GPL
БНФлайт Рекурсивный спуск С++ Смешанный Все Бесплатно, Массачусетский технологический институт
Навес Пакрат Java , JavaScript , Python , Руби Отдельный Все Бесплатно, GNU GPL
CL-привязка Пакрат Общий Лисп Смешанный Все Бесплатно, Массачусетский технологический институт
Drat! Пакрат Д Смешанный Все Бесплатно, GNU GPL
Фрисби Пакрат Хаскелл Смешанный Все Бесплатно, БСД
грамматика::привязка Пакрат Ткл Смешанный Все Бесплатно, БСД
Грако Packrat + Cut + Левая рекурсия Python , C++ (бета) Отдельный Все Бесплатно, БСД
ЖелезоМета Пакрат С# Смешанный Окна Бесплатно, БСД
Вмешаться Двухфазное нисходящее отслеживание без сканирования + поддержка во время выполнения Ява Отдельный Все Бесплатно, GNU GPL
ларс::Парсер Packrat (поддержка левой рекурсии и грамматической неоднозначности) С++ Идентичный Все Бесплатно, БСД
LPeg Разборная машина Два Смешанный Все Бесплатно, Массачусетский технологический институт
тащить Разборная машина С++17 Смешанный Все Бесплатно, Массачусетский технологический институт
Мышь Рекурсивный спуск (модифицированная, ограниченная мемоизация и левая рекурсия) Ява Отдельный виртуальная машина Java Бесплатно, Апач 2.0
Нарвал Пакрат С Смешанный POSIX , Windows Бесплатно, БСД
Нирли Эрли JavaScript Смешанный Все Бесплатно, Массачусетский технологический институт
Немерле.Пег Рекурсивный спуск + Пратт Немерль Отдельный Все Бесплатно, БСД
неотома Пакрат Эрланг Отдельный Все Бесплатно, Массачусетский технологический институт
НПЭГ Рекурсивный спуск С# Смешанный Все Бесплатно, Массачусетский технологический институт
Омета Пакрат (модифицированный, частичная мемоизация) JavaScript , Писк , Python Смешанный Все Бесплатно, Массачусетский технологический институт
ПакCC Packrat (модифицированная поддержка левой рекурсии) С Смешанный Все Бесплатно, Массачусетский технологический институт
Пакрат Пакрат Схема Смешанный Все Бесплатно, Массачусетский технологический институт
Паппи Пакрат Хаскелл Смешанный Все Бесплатно, БСД
пропаренный Рекурсивный спуск Ява , Скала Смешанный виртуальная машина Java Бесплатно, Апач 2.0
Лямбда ПЭГ Рекурсивный спуск Ява Смешанный виртуальная машина Java Бесплатно, Апач 2.0
нажимать Рекурсивный спуск С++ Смешанный Все Бесплатно, общественное достояние
Пастернак Пакрат С++ Смешанный Окна Бесплатно, GNU GPL
Узоры Разборная машина Быстрый Идентичный Все Бесплатно, Массачусетский технологический институт
колышек Рекурсивный спуск С Смешанный Все Бесплатно, Массачусетский технологический институт
PEG.js Пакрат (частичная мемоизация) JavaScript Смешанный Все Бесплатно, Массачусетский технологический институт
Пегги [35] Пакрат (частичная мемоизация) JavaScript Смешанный Все Бесплатно, Массачусетский технологический институт
Пегас Рекурсивный спуск, Пакрат (выборочно) С# Смешанный Окна Бесплатно, Массачусетский технологический институт
пегк Рекурсивный спуск С Смешанный Все Бесплатно, общественное достояние
вредитель Рекурсивный спуск Ржавчина Отдельный Все Бесплатно, Массачусетский технологический институт , Apache 2.0
PetitParser Пакрат Smalltalk , Java , Дарт Смешанный Все Бесплатно, Массачусетский технологический институт
ПЭГТЛ [36] Рекурсивный спуск С++11 , С++17 Смешанный Все Бесплатно, Повышение
Механизм синтаксического анализа грамматики (PGE) Гибридный рекурсивный спуск/приоритет операторов [37] Байт-код попугая Смешанный Виртуальная машина Попугая Бесплатная, Художественная 2.0
PyPy rlib Пакрат Питон Смешанный Все Бесплатно, Массачусетский технологический институт
Крысы! Пакрат Ява Смешанный виртуальная машина Java Бесплатно, GNU LGPL
Дух2 Рекурсивный спуск С++ Смешанный Все Бесплатно, Повышение
Верхушка дерева Рекурсивный спуск Руби Смешанный Все Бесплатно, Массачусетский технологический институт
Площадка Рекурсивный спуск С++ Смешанный Все Бесплатно, MIT или общественное достояние
Откровение Разборная машина C , Java , JavaScript , Python , Racket , Ruby Отдельный Все Бесплатно, Массачусетский технологический институт
PHP PEG PEG-парсер? PHP Смешанный Все Бесплатно, БСД

Общие контекстно-свободные, конъюнктивные или логические языки

[ редактировать ]

В этой таблице сравниваются языки-генераторы синтаксического анализа с общей контекстно-свободной грамматикой , конъюнктивной грамматикой или логической грамматикой .

Имя парсинга Алгоритм Обозначение входной грамматики Языки вывода Грамматика, код Лексер Платформа разработки ИДЕТ Лицензия
АКЦЕНТ Эрли Якк вариант С Смешанный внешний Все Нет Бесплатно, GNU GPL
АПАГЕД ГЛР , ЛАЛР (1), ЛЛ (к) ? Д Смешанный созданный Все Нет Бесплатное, Художественное
Бизон ЛАЛР (1), ЛР (1), ИЛР (1), ГЛР Якк С , С++ , Java , XML Смешанный, кроме XML внешний Все Нет Бесплатно, GNU GPL
Набор инструментов для реинжиниринга программного обеспечения DMS ГЛР ? Он говорил Смешанный созданный Окна Нет Собственный
ДПарсер GLR без сканера ? С Смешанный без сканера ПОСИКС Нет Бесплатно, БСД
Дипген Расширяемый во время выполнения GLR ? OCaml Смешанный созданный Все Нет Бесплатно, CeCILL -B
Е3 Эрли ? OCaml Смешанный внешний или без сканера Все Нет ?
Элкхаунд ГЛР ? С++ , OCaml Смешанный внешний Все Нет Бесплатно, БСД
ГДК ЛАЛР (1), ГЛР ? C , Lex , Haskell , HTML , Java , Object Pascal , Yacc Смешанный созданный ПОСИКС Нет Бесплатно, Массачусетский технологический институт
Счастливый ЛАЛР , ГЛР ? Хаскелл Смешанный внешний Все Нет Бесплатно, БСД
Генератор парсера Hime ГЛР ? С# , Java , Руст Отдельный созданный .NET Framework, виртуальная машина Java Нет Бесплатно, GNU LGPL
Библиотека IronText ЛАЛР (1), ГЛР С# С# Смешанный генерируемый или внешний .NET- фреймворк Нет Бесплатно, Апач 2.0
Джисон ЛАЛР (1), ЛР (0), Зеркальный (1) Якк JavaScript , C# , PHP Смешанный созданный Все Нет Бесплатно, Массачусетский технологический институт
Синтаксис ЛАЛР (1), ЛР (0), СЛР (1) ЦЛР (1) ЛЛ (1) JSON / Якк JavaScript , Python , PHP , Ruby , C++ , C# , Rust , Java Смешанный созданный Все Нет Бесплатно, Массачусетский технологический институт
Вмешаться Без сканера, двухфазный Вмешаться Ява Отдельный без сканера Все Нет Бесплатно, GNU GPL
МодельCC Эрли Аннотированная модель класса Ява Сгенерировано созданный Все Нет Бесплатно, БСД
П3 Эрли – комбинаторы BNF-подобный OCaml Смешанный внешний или без сканера Все Нет ?
П4 Эрли – комбинаторы, бесконечные КФГ. BNF-подобный OCaml Смешанный внешний или без сканера Все Нет ?
Логический парсер без сканирования GLR без сканирования ( булева грамматика ) ? Хаскелл , Ява Отдельный без сканера виртуальная машина Java Нет Бесплатно, БСД
СДС /СГЛР GLR без сканера СДС С , Ява Отдельный без сканера Все Да Бесплатно, БСД
СмаСС ГЛР (1), ЛАЛР (1), ЛР (1) ? Смолток Смешанный внутренний Все Да Бесплатно, Массачусетский технологический институт
ИСКРА Эрли ? Питон Смешанный внешний Все Нет Бесплатно, Массачусетский технологический институт
Том ГЛР ? С Сгенерировано никто Все Нет Бесплатно, «Никаких ограничений лицензирования и авторских прав»
Ультраграмм ЛАЛР , ЛР , ГЛР ? C++ , C# , Java , Visual Basic .NET Отдельный созданный Окна Да Собственный
Червоточина Обрезка , LR , GLR , GLR без сканера ? С , Питон Смешанный без сканера Окна Нет Бесплатно, Массачусетский технологический институт
Китовый теленок Общая табличная форма, SLL (k), Линейная нормальная форма ( сопряженные грамматики ), LR , Бинарная нормальная форма ( булева грамматика ) ? С++ Отдельный внешний Все Нет Собственный
ага Эрли Якк -подобный С Смешанный внешний Все Нет Бесплатно, GNU LGPL

Контекстно-зависимые грамматики

[ редактировать ]

В этой таблице сравниваются генераторы парсеров с контекстно-зависимыми грамматиками .

Имя Алгоритм парсинга Обозначение входной грамматики Булева грамматика Платформа разработки Лицензия
bnf2xml Рекурсивный спуск (вывод текстового фильтра в формате xml) простой БНФ [ нужны разъяснения ] грамматика (соответствие ввода), вывод — xml ? Бета, а не полноценный парсер EBNF Бесплатно, GNU GPL

См. также

[ редактировать ]

Примечания

[ редактировать ]


  1. ^ «Компилятор конечного автомата Ragel» .
  2. ^ http://www.colm.net/open-source/ragel/ [ нужна проверка ]
  3. ^ «Адаптивный анализ LL(*): возможности динамического анализа» (PDF) . Теренс Парр . Проверено 3 апреля 2016 г.
  4. ^ «Обзор различных инструментов синтаксического анализатора» . www.ijraset.com . Проверено 16 сентября 2023 г.
  5. ^ Бойленд, Джон; Спивак, Дэниел (17 сентября 2010 г.). «Инструментальная бумага: генератор рекурсивного синтаксического анализатора ScalaBison» . Электронные заметки по теоретической информатике . Материалы девятого семинара по инструментам и приложениям языковых описаний (LDTA 2009). 253 (7): 65–74. дои : 10.1016/j.entcs.2010.08.032 . ISSN   1571-0661 .
  6. ^ «Бобер — генератор парсера LALR» . beaver.sourceforge.net . Проверено 16 сентября 2023 г.
  7. ^ Ньютон, Джим Э.; Демайль, аким; Верна, Дидье (9 мая 2016 г.). «Проверка типов гетерогенных последовательностей в Common Lisp» (PDF) . Материалы 9-го Европейского симпозиума по Lisp на Европейском симпозиуме по Lisp . ЭЛС2016. Краков, Польша: Европейская ассоциация научной деятельности по Lisp: 13–20. ISBN  978-2-9557474-0-7 .
  8. ^ «CL-Yacc — генератор синтаксического анализатора LALR(1) для Common Lisp» . www.irif.fr. ​Проверено 16 сентября 2023 г.
  9. ^ Хосейнпур, Сахере; Алави Милани, Мир Мохаммад Реза; Пехливан, Хусейн (июль 2018 г.). «Пошаговая методология решения математических выражений» . Симметрия . 10 (7): 285. Бибкод : 2018Symm...10..285H . дои : 10.3390/sym10070285 . ISSN   2073-8994 .
  10. ^ «Домашняя страница CppCC» . cppcc.sourceforge.net . Проверено 16 сентября 2023 г.
  11. ^ «Кубок Явы» . страницы.cs.wisc.edu . Проверено 16 сентября 2023 г.
  12. ^ "ЧАШКА" . www2.cs.tum.edu . Проверено 16 сентября 2023 г.
  13. ^ Тиманн, Питер; Нойбауэр, Матиас (31 декабря 2004 г.). «Параметризованный анализ LR» . Электронные заметки по теоретической информатике . Материалы четвертого семинара по описаниям языков, инструментам и приложениям (LDTA 2004). 110 : 115–132. дои : 10.1016/j.entcs.2004.06.007 . ISSN   1571-0661 .
  14. ^ Грей, Роберт В.; Леви, Стивен П.; Хеуринг, Винсент П.; Слоан, Энтони М.; Уэйт, Уильям М. (1992). «Эли: полная, гибкая система построения компилятора» . Коммуникации АКМ . 35 (2): 121–130. дои : 10.1145/129630.129637 . ISSN   0001-0782 . S2CID   5121773 .
  15. ^ Оуэнс, Скотт; Флэтт, М.; Шиверс, О.; Макмаллан, Бенджамин (1 октября 2004 г.). «Лексеры и генераторы синтаксических анализаторов в схеме» (PDF) . Схема 2004: Материалы пятого семинара по схемам и функциональному программированию .
  16. ^ Перейти обратно: а б Арейас, Хьюго; Симоэнс, Альберто; Энрикес, П.; Круз, Даниэла Карнейро да (1 сентября 2010 г.). «Генерация парсера в Perl: обзор и доступные инструменты» (PDF) . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  17. ^ Волкман, Виктор (19 июля 2007 г.). «Пусть ваш парсер пойдет за ЗОЛОТОМ» . Разработчик.com . Проверено 4 ноября 2023 г.
  18. ^ «Разбор в C#: все инструменты и библиотеки, которые вы можете использовать (часть 2) — DZone» . dzone.com . Проверено 4 ноября 2023 г.
  19. ^ Ортин, Франциско; Кирога, Хосе; Родригес-Прието, Оскар; Гарсия, Мигель (3 марта 2022 г.). «Эмпирическая оценка инструментов генерации парсеров Lex/Yacc и ANTLR» . ПЛОС ОДИН . 17 (3): e0264326. Бибкод : 2022PLoSO..1764326O . дои : 10.1371/journal.pone.0264326 . ISSN   1932-6203 . ПМЦ   8893623 . ПМИД   35239695 .
  20. ^ Энселинг, Оливер (29 декабря 2000 г.). «Создавайте свои собственные языки с помощью JavaCC» . Инфомир . Проверено 4 ноября 2023 г.
  21. ^ «ЯваСС» . JavaCC . Проверено 4 ноября 2023 г.
  22. ^ «Создание парсеров для Интернета с помощью JavaCC и GWT (Часть первая)» . Крис Эйнсли. 14 апреля 2014 года . Проверено 4 мая 2014 г.
  23. ^ «Генератор Lemon Parser» . sqlite.org . Проверено 30 ноября 2023 г.
  24. ^ «Система парсера Lezer» .
  25. ^ «Создание редактора кода ShopifyQL» . Shopify . Проверено 6 декабря 2023 г.
  26. ^ «Спонсорство системы парсера Lezer | Tines» . www.tines.com . 11 марта 2022 г. Проверено 6 декабря 2023 г.
  27. ^ «Генератор анализатора LR(*) для C++» .
  28. ^ «Ракк» . i.loveruby.net . Проверено 26 ноября 2021 г.
  29. ^ «Справочник по файлам грамматики Racc» . i.loveruby.net . Проверено 26 ноября 2021 г.
  30. ^ «Генератор анализатора SLK поддерживает C, C++, Java, JavaScript и C#, дополнительный обратный поиск, бесплатно» .
  31. ^ http://www.slkpg.tech/license.txt [ текстовый файл с пустым URL-адресом ]
  32. ^ «ХАЙ (Хитрый Лекс Якк)» .
  33. ^ «Tree-Sitter — инкрементальная система синтаксического анализа инструментов программирования» .
  34. ^ «Parse — безопасный генератор синтаксического анализатора типа времени компиляции (LR) для C++» . Гитхаб . 30 декабря 2021 г.
  35. ^ Поддерживаемая вилка PEG.js.
  36. ^ taocpp/PEGTL , Искусство C++, 14 марта 2024 г. , получено 16 марта 2024 г.
  37. ^ «Попугай: Грамматический движок» . Фонд попугаев. 2011. Правила PGE предоставляют всю мощь анализа рекурсивного спуска и анализа приоритета операторов.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e604957322bc9ab938bad741d2d057a4__1717682820
URL1:https://arc.ask3.ru/arc/aa/e6/a4/e604957322bc9ab938bad741d2d057a4.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of parser generators - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)