Общеупотребимый способ описания синтаксиса языков программирования — расширенные контекстно-свободные грамматики. Примером могут служить спецификации языков C, C + +, Java и т.д. С одной стороны, эта форма проста для понимания людей, с другой, достаточно формальна и допускает автоматизированное создание синтаксических анализаторов.
Существуют различные инструменты, такие как ANTLR [1], Bison [5], позволяющие для грамматики языка создать синтаксический анализатор для текстов, созданных на этом языке. Проблема заключается в том, что эти инструменты сначала преобразуют грамматику к форме Бэкуса-Наура и только затем строят синтаксический анализатор.
Существуют работы, описывающие синтаксический анализ с помощью расширенных контекстно-свободных грамматик (Extended Context-Free Grammar, ECFG) [6], [14], но практические средства, основанные на данных работах, не были созданы. Кроме того, подходы, описанные в данных исследованиях, поддерживают лишь подклассы контекстно-свободных языков.
Алгоритмы обобщённого синтаксического анализа, например Generalised LL [22], способны использовать контекстно-свободные грамматики, описывающие произвольные контекстно-свободные языки. Но они так же не допускают использования ECFG без предварительного преобразования к форме Бэкуса-Наура.
Одно из возможных применений обобщённого синтаксического анализа — поиск генов и иных последовательностей в биологическом материале. Из материала извлекаются геномы содержащихся в нём организмов — последовательности над алфавитом {A; C; G T}. Но для того чтобы снизить расходы на хранение этих последовательностей, по ним строится конечный автомат. В геноме существуют различные последовательности, позволяющие классифицировать организм, которые имеют некоторые общие свойства, которые можно описать контекстно-свободной грамматикой [18], поэтому для их поиска можно применять синтаксический анализ. Синтаксический анализ конечных автоматов называют синтаксическим анализом регулярных множеств. Одной из целей данной работы является применение полученного GLL алгоритма в синтаксическом анализе регулярных множеств, в частности — метагеномных сборок.
На кафедре Системного Программирования СПбГУ, в рамках исследовательского проекта YaccConstructor [32], разрабатывается подход для поиска структур, заданных с помощью контекстно-свободной грамматики в метагеномных сборках, основанный на алгоритме Generalised LL. Предполагается, что синтаксический анализ для расширенных контекстно-свободных грамматик без преобразований даст значительный прирост производительности существующего подхода.
В рамках данной работы была разработана и реализована модификация алгоритма GLL, работающая с расширенными контекстно-свободными грамматиками. Показано, что полученный алгоритм повышает производительность поиска структур, заданных с помощью контекстно-свободной грамматики в метагеномных сборках. Более детально, были получены следующие результаты.
• В качестве подходящего представления ECFG выбраны рекурсивные конечные автоматы.
• Спроектирована структура данных для представления леса разбора для ECFG на основе сжатого леса разбора (SPPF).
• Разработан алгоритм на основе Generalised LL, строящий лес разбора для ECFG.
• Алгоритм реализован в рамках проекта YaccConstructor. Исходный код доступен в репозитории YaccConstructor [31], автор работал под учётной записью “gorohovart”.
• Проведено экспериментальное сравнение реализованного алгоритма с существующим в проекте YaccConstructor, показавшее двухкратный прирост на использованных данных.
• Результаты работы успешно представлены на международной конференции “Tools and Methods of Program Analysis” (Москва, 2017г.) в докладе “Extended Context-Free Grammars Parsing with Generalized LL”.
[1] ANTLR Project website. — http://www.antlr.org/.
[2] Afroozeh Ali, Izmaylova Anastasia. Faster, Practical GLL Parsing // International Conference on Compiler Construction / Springer. — 2015. —P. 89-108.
[3] Aho Alfred V, Hopcroft John E. The design and analysis of computer algorithms.—Pearson Education India, 1974.
[4] Alblas Henk, Schaap-Kruseman Joos. An attributed ELL (1)-parser generator // International Workshop on Compiler Construction / Springer. — 1990. — P. 208-209.
[5] Bison Project website. — https://www.gnu.org/software/bison/.
[6] Breveglieri Luca, Crespi Reghizzi Stefano, Morzenti Angelo. Shift- Reduce Parsers for Transition Networks // Language and Automata Theory and Applications: 8th International Conference, LATA 2014, Madrid, Spain, March 10-14, 2014. Proceedings / Ed. by Adrian-Horia Dediu, Carlos Martin-Vide, Jose-Luis Sierra-Rodriguez, Bianca Truthe. — Cham : Springer International Publishing, 2014. — P. 222-235. —ISBN: 978-3-319-04921-2. — Access mode: http://dx. doi.org/10.1007/978-3-319-04921-2_18.
[7] Breveglieri Luca, Reghizzi Stefano Crespi, Morzenti Angelo. Shift- reduce parsers for transition networks // International Conference on Language and Automata Theory and Applications / Springer. — 2014. —P. 222-235.
[8] Bruggemann-Klein Anne, Wood Derick. On predictive parsing and extended context-free grammars // International Conference on Implementation and Application of Automata / Springer. — 2002. — P. 239-247.
[9] Bruggemann-Klein Anne, Wood Derick. The parsing of extended context-free grammars. — 2002.
[10] Heckmann Reinhold. An efficient ELL (1)-parser generator // Acta Informatica. — 1986.—Vol. 23, no. 2.—P. 127-148.
[11] Heilbrunner Stephan. On the definition of ELR (k) and ELL (k) grammars // Acta Informatica. — 1979. — Vol. 11, no. 2. — P. 169-176.
[12] Hemerik Kees. Towards a Taxonomy for ECFG and RRPG Parsing // International Conference on Language and Automata Theory and Applications / Springer. — 2009.—P. 410-421.
[13] An n log n algorithm for minimizing states in a finite automaton : Rep. / DTIC Document ; Executor: John Hopcroft : 1971.
[14] Lee Gyung-Ok, Kim Do-Hyung. Characterization of extended LR (k) grammars // Information processing letters. — 1997. — Vol. 64, no. 2. —P. 75-82.
[15] Morimoto Shin-ichi, Sassa Masataka. Yet another generation of LALR parsers for regular right part grammars // Acta informatica. — 2001. — Vol. 37, no. 9. —P. 671-697.
...