JetPAG - JetPAG
Разработчики) | Тарек Х. Шарафи |
---|---|
Стабильный выпуск | 0.6.1 / 7 февраля 2007 г. |
Предварительный выпуск | 0.6.3 / 2007 |
Написано в | C ++ |
Операционная система | Независимая платформа |
Тип | Генератор парсеров |
Лицензия | Стандартная общественная лицензия GNU |
Интернет сайт | Домашняя страница JetPAG |
JetPAG (Jet пАрсер Ауто-граммenerator) является Открытый исходный код LL (k) парсер и лексический анализатор генератор, под лицензией Стандартная общественная лицензия GNU. Это личная работа Тарека Х. Шарафи, и в настоящее время она находится на финальной стадии бета-разработки.
История
Тарек запустил JetPAG как небольшую программу, написанную исключительно для практических целей. Вскоре, когда он начал расширяться, были быстро добавлены многие цели, и стало очевидно, что JetPAG достоин быть законченным проектом. Реальная разработка JetPAG началась в конце 2005 года, нацеленная на полную структуру для мощного рекурсивный спуск лексический анализатор и генератор парсеров с упором на простоту использования, читаемость кода и высокую производительность сгенерированного кода. После длительного периода внутренней разработки и тестирования первый пакет разработки JetPAG был выпущен через SourceForge 18 ноября 2006 г. Разработка JetPAG продолжается на бета-этап, текущая версия - 0.6.1. Разработка была отложена с середины 2007 г. до начала 2009 г., но затем возобновилась.
Обзор
Jetpag включает в себя несколько модулей: интерфейс, анализаторы и генераторы кода.
Внешний интерфейс принимает метаязыки грамматики в качестве входных данных.
Анализаторы в основном выполняют две операции через обход дерева. Первый расчет сильных смотреть вперед наборы для элементов в грамматике, а второй строит пути просмотра вперед из наборов просмотра вперед. Пути просмотра вперед группируют, разлагают на множители и выполняют множество улучшений и оптимизации для опережающих множеств с помощью специального анализа. Из путей опережения наборы опережающих просмотров преобразуются во вложенную древовидную форму, что обеспечивает большую общую эффективность и улучшение большинство случаев.
Генераторы кода генерируют исходный код для распознавателей, совместимых с входными грамматиками на их основе, а также с информацией, полученной от анализаторов. В настоящее время JetPAG генерирует исходный код только на C ++.
Природа метаязыка и структуры JetPAG позволяет легко и просто интегрировать сгенерированные распознаватели в более крупные приложения. JetPAG также включает некоторые средства в предоставленную среду, чтобы помочь разработчикам с небольшими утилитами и сэкономить время разработки от многих минимальных задач распознавания языка.
Грамматики JetPAG
Грамматики JetPAG написаны на метаязык на основе EBNF форма и обычные выражения, с обширными дополнениями и настройками. Мета-язык грамматик JetPAG был разработан таким образом, чтобы максимально гибко обрабатывать как простые грамматики, так и большие, сложные. Парсеры и лексические анализаторы определяются и генерируются аналогично для простоты и удобства использования. Это простой пример грамматики для простого калькулятора:
грамматика Calc: синтаксический анализатор CalcP: выражение: мультипликативный ('+' мультипликативный | '-' мультипликативный) *; мультипликативный: фактор ('*' фактор | '/' фактор) *; фактор: INT | '(' выражение ')'; сканер CalcS: INT: '0' - '9' +; PLUS: '+'; MINUS: '-'; STAR: '*'; SLASH: '/'; LP: '( '; RP:') ';