<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">mais</journal-id><journal-title-group><journal-title xml:lang="ru">Моделирование и анализ информационных систем</journal-title><trans-title-group xml:lang="en"><trans-title>Modeling and Analysis of Information Systems</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">1818-1015</issn><issn pub-type="epub">2313-5417</issn><publisher><publisher-name>Yaroslavl State University</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.18255/1818-1015-2014-6-131-143</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-77</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Оригинальные статьи</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>Articles</subject></subj-group></article-categories><title-group><article-title>Инструментальная поддержка встроенных языков в интегрированных средах разработки</article-title><trans-title-group xml:lang="en"><trans-title>IDE Support of String-Embedded Languages</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Григорьев</surname><given-names>Семен Вячеславович</given-names></name><name name-style="western" xml:lang="en"><surname>Grigorev</surname><given-names>S.</given-names></name></name-alternatives><bio xml:lang="ru"><p>магистр информационных технологий, 198504 Россия, г. Санкт-Петербург, г. Старый Петергоф, Университетский проспект, 28</p></bio><bio xml:lang="en"><p>магистр информационных технологий, Universitetsky prospekt, 28, Saint Petersburg, 198504, Russia</p></bio><email xlink:type="simple">rsdpisuy@gmail.com</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Вербицкая</surname><given-names>Екатерина Андреевна</given-names></name><name name-style="western" xml:lang="en"><surname>Verbitskaia</surname><given-names>E.</given-names></name></name-alternatives><bio xml:lang="ru"><p>студентка, 198504 Россия, г. Санкт-Петербург, г. Старый Петергоф, Университетский проспект, 28</p></bio><bio xml:lang="en"><p>студентка, Universitetsky prospekt, 28, Saint Petersburg, 198504, Russia</p></bio><email xlink:type="simple">kajigor@gmail.com</email><xref ref-type="aff" rid="aff-2"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Полубелова</surname><given-names>Марина Игоревна</given-names></name><name name-style="western" xml:lang="en"><surname>Polubelova</surname><given-names>M.</given-names></name></name-alternatives><bio xml:lang="ru"><p>студентка, 198504 Россия, г. Санкт-Петербург, г. Старый Петергоф, Университетский проспект, 28</p></bio><bio xml:lang="en"><p>студентка, Universitetsky prospekt, 28, Saint Petersburg, 198504, Russia</p></bio><email xlink:type="simple">polubelovam@gmail.com</email><xref ref-type="aff" rid="aff-2"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Иванов</surname><given-names>Андрей Васильевич</given-names></name><name name-style="western" xml:lang="en"><surname>Ivanov</surname><given-names>A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>бакалавр информационных технологий, 198504 Россия, г. Санкт-Петербург, г. Старый Петергоф, Университетский проспект, 28</p></bio><bio xml:lang="en"><p>бакалавр информационных технологий, Universitetsky prospekt, 28, Saint Petersburg, 198504, Russia</p></bio><email xlink:type="simple">ivanovandrew2004@gmail.com</email><xref ref-type="aff" rid="aff-2"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Мавчун</surname><given-names>Екатерина Валерьевна</given-names></name><name name-style="western" xml:lang="en"><surname>Mavchun</surname><given-names>E.</given-names></name></name-alternatives><bio xml:lang="ru"><p>студентка, 198504 Россия, г. Санкт-Петербург, г. Старый Петергоф, Университетский проспект, 28</p></bio><bio xml:lang="en"><p>студентка, Universitetsky prospekt, 28, Saint Petersburg, 198504, Russia</p></bio><email xlink:type="simple">emavchun@gmail.com</email><xref ref-type="aff" rid="aff-2"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Cанкт-Петербургский государственный университет</institution><country>Россия</country></aff><aff xml:lang="en"><institution>Saint Petersburg State University</institution><country>Russian Federation</country></aff></aff-alternatives><aff xml:lang="ru" id="aff-2"><institution>Cанкт-Петербургский государственный университет</institution><country>Russian Federation</country></aff><pub-date pub-type="collection"><year>2014</year></pub-date><pub-date pub-type="epub"><day>20</day><month>12</month><year>2014</year></pub-date><volume>21</volume><issue>6</issue><fpage>131</fpage><lpage>143</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Григорьев С.В., Вербицкая Е.А., Полубелова М.И., Иванов А.В., Мавчун Е.В., 2014</copyright-statement><copyright-year>2014</copyright-year><copyright-holder xml:lang="ru">Григорьев С.В., Вербицкая Е.А., Полубелова М.И., Иванов А.В., Мавчун Е.В.</copyright-holder><copyright-holder xml:lang="en">Grigorev S., Verbitskaia E., Polubelova M., Ivanov A., Mavchun E.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.mais-journal.ru/jour/article/view/77">https://www.mais-journal.ru/jour/article/view/77</self-uri><abstract><p>Часто при разработке сложных программных систем используется более чем один язык программирования. В таком случае принято говорить об основном (или исходном) языке и одном или нескольких встроенных языках. Из строковых выражений основного языка динамически формируются программы на отличном от него языке, которые потом интерпретируются специальными, работающими во время исполнения компонентами, такими как базы данных или веб-браузеры. Большинство языков программирования общего назначения могут играть роль как основного, так и встроенного языка. Самый яркий пример реализации такого подхода — динамический SQL, специфицированный в стандарте ISO SQL и поддерживаемый большинством СУБД. Автодополнение и подсветка синтаксиса — стандартная для интерактивных сред разработки функциональность — значительно упрощают процесс разработки с использованием встроенных языков. Существует несколько инструмен- тов, предоставляющих функциональность интегрированных сред разработки для встроенных языков, но они в основном поддерживают только один конкретный встроенный язык, и поддержка другого языка требует нетривиального ручного вмешательства. Мы продемонстрируем разрабатываемую платформу, позволяющую создавать инструменты для статического анализа динамически формируемых выражений.</p></abstract><trans-abstract xml:lang="en"><p>Complex information systems are often implemented by using more than one programming language. Sometimes this variety takes a form of one host and one or few string-embedded languages. Textual representation of clauses in a string-embedded language is built at run time by a host program and then analyzed, compiled or interpreted by a dedicated runtime component (database, web browser etc.) Most general-purpose programming languages may play the role of the host; one of the most evident examples of the string-embedded language is the dynamic SQL which was specified in ISO SQL standard and is supported by the majority of DBMS. Standard IDE functionality such as code completion or syntax highlighting can really helps the developers who use this technique. There are several tools providing this functionality, but they all process only one concrete string-embedded language and cannot be easily extended for supporting another language. We present a platform which allows to easily create tools for string-embedded language processing.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>встроенные языки</kwd><kwd>абстрактный синтаксический анализ</kwd><kwd>генератор парсеров</kwd><kwd>генератор лексических анализаторов</kwd><kwd>интегрированная среда разработки</kwd><kwd>динамический SQL</kwd></kwd-group><kwd-group xml:lang="en"><kwd>string-embedded language</kwd><kwd>abstract parsing</kwd><kwd>parser generator</kwd><kwd>lexer generator</kwd><kwd>integrated development environment</kwd><kwd>IDE</kwd><kwd>dynamic SQL</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Кириленко Я.А., Григорьев С.В., Авдюхин Д.А. Разработка синтаксических анализаторов в проектах по автоматизированному реинжинирингу информационных систем // Научно-технические ведомости СПбГПУ: информатика, телекоммуникации, управление. 2013. №174. С. 94–98. [Kirilenko Ya.A., Grigorev S.V.,Avdyukhin D.A. Razrabotka sintaksicheskikh analizatorov v proektakh po avtomatizirovannomu reinzhiniringu informatsionnykh sistem // Nauchno-tekhnicheskie vedomosti SPbGPU: informatika, telekommunikatsii, upravlenie. 2013. 174. P. 94–98 (in Russian)].</mixed-citation><mixed-citation xml:lang="en">Кириленко Я.А., Григорьев С.В., Авдюхин Д.А. Разработка синтаксических анализаторов в проектах по автоматизированному реинжинирингу информационных систем // Научно-технические ведомости СПбГПУ: информатика, телекоммуникации, управление. 2013. №174. С. 94–98. [Kirilenko Ya.A., Grigorev S.V.,Avdyukhin D.A. Razrabotka sintaksicheskikh analizatorov v proektakh po avtomatizirovannomu reinzhiniringu informatsionnykh sistem // Nauchno-tekhnicheskie vedomosti SPbGPU: informatika, telekommunikatsii, upravlenie. 2013. 174. P. 94–98 (in Russian)].</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Kyung-Goo Doh, Hyunha Kim, and David A. Schmidt. Abstract parsing: Static analysis of dynamically generated string output using lr-parsing technology // Proceedings of the 16th International Symposium on Static Analysis, SAS ’09. Springer-Verlag: Berlin; Heidelberg, 2009. P. 256—272.</mixed-citation><mixed-citation xml:lang="en">Kyung-Goo Doh, Hyunha Kim, and David A. Schmidt. Abstract parsing: Static analysis of dynamically generated string output using lr-parsing technology // Proceedings of the 16th International Symposium on Static Analysis, SAS ’09. Springer-Verlag: Berlin; Heidelberg, 2009. P. 256—272.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Aivar Annamaa, Andrey Breslav, and Varmo Vene. Using abstract lexical analysis and parsing to detect errors in string-embedded dsl statements // Marina Walden and Luigia Petre, editors, Proceedings of the 22nd Nordic Workshop on Programming Theory.</mixed-citation><mixed-citation xml:lang="en">Aivar Annamaa, Andrey Breslav, and Varmo Vene. Using abstract lexical analysis and parsing to detect errors in string-embedded dsl statements // Marina Walden and Luigia Petre, editors, Proceedings of the 22nd Nordic Workshop on Programming Theory.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Mohri Mehryar. Finite-State Transducers in Language and Speech Processing // Association for Computational Linguistics. 1997. http://www.cs.nyu.edu/mohri/pub/cl1.pdf</mixed-citation><mixed-citation xml:lang="en">Mohri Mehryar. Finite-State Transducers in Language and Speech Processing // Association for Computational Linguistics. 1997. http://www.cs.nyu.edu/mohri/pub/cl1.pdf</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Иванов А.В. Восстановление после ошибок в GLR-алгоритме: Курсовая работа. СПб-ГУ, 2013. [Ivanov A.V. Vosstanovlenie posle oshibok v GLR-algoritme: Kursovaya rabota. SPbGU, 2013 (in Russian)].</mixed-citation><mixed-citation xml:lang="en">Иванов А.В. Восстановление после ошибок в GLR-алгоритме: Курсовая работа. СПб-ГУ, 2013. [Ivanov A.V. Vosstanovlenie posle oshibok v GLR-algoritme: Kursovaya rabota. SPbGU, 2013 (in Russian)].</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Вербицкая E.A., Григорьев С.В. Абстрактный лексический анализ // СПИСОК-2013: Материалы всероссийской научной конференции по проблемам информатики. 23–26 апр. 2013 г., Санкт-Петербург. СПб.: Издательство ВВМ, 2013. C. 792. [Verbitskaya E.A., Grigorev S.V. Abstraktnyy leksicheskiy analiz // SPISOK-2013: Materialy vserossiyskoy nauchnoy konferentsii po problemam informatiki. 23–26 apr. 2013, Sankt-Peterburg. SPb.: Izdatelstvo VVM, 2013. P. 792 (in Russian)].</mixed-citation><mixed-citation xml:lang="en">Вербицкая E.A., Григорьев С.В. Абстрактный лексический анализ // СПИСОК-2013: Материалы всероссийской научной конференции по проблемам информатики. 23–26 апр. 2013 г., Санкт-Петербург. СПб.: Издательство ВВМ, 2013. C. 792. [Verbitskaya E.A., Grigorev S.V. Abstraktnyy leksicheskiy analiz // SPISOK-2013: Materialy vserossiyskoy nauchnoy konferentsii po problemam informatiki. 23–26 apr. 2013, Sankt-Peterburg. SPb.: Izdatelstvo VVM, 2013. P. 792 (in Russian)].</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Elizabeth Scott and Adrian Johnstone. Right nulled GLR parsers // ACM Trans. Program. Lang. Syst. 28, 4 (July 2006). P. 577–618.</mixed-citation><mixed-citation xml:lang="en">Elizabeth Scott and Adrian Johnstone. Right nulled GLR parsers // ACM Trans. Program. Lang. Syst. 28, 4 (July 2006). P. 577–618.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Semen Grigorev and Iakov Kirilenko. GLR-based abstract parsing // Proceedings of the 9th Central &amp; Eastern European Software Engineering Conference in Russia (CEE-SECR ’13). NY, USA. Article 5. 9 p.</mixed-citation><mixed-citation xml:lang="en">Semen Grigorev and Iakov Kirilenko. GLR-based abstract parsing // Proceedings of the 9th Central &amp; Eastern European Software Engineering Conference in Russia (CEE-SECR ’13). NY, USA. Article 5. 9 p.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Giorgios Robert Economopoulos. Generalised LR parsing algorithms. 2006.</mixed-citation><mixed-citation xml:lang="en">Giorgios Robert Economopoulos. Generalised LR parsing algorithms. 2006.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Andrey Terekhov. Good technology makes the difficult task easy // Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2013). ACM, New York, USA. P. 683–686.</mixed-citation><mixed-citation xml:lang="en">Andrey Terekhov. Good technology makes the difficult task easy // Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2013). ACM, New York, USA. P. 683–686.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Boulychev D.Yu., Koznov D.V., and Terekhov Andrey A. On Project-Specific Languages and Their Application in Reengineering // Proceedings of the 6th European Conference on Software Maintenance and Reengineering (CSMR ’02). IEEE Computer Society, Washington, DC, USA. P. 177—185.</mixed-citation><mixed-citation xml:lang="en">Boulychev D.Yu., Koznov D.V., and Terekhov Andrey A. On Project-Specific Languages and Their Application in Reengineering // Proceedings of the 6th European Conference on Software Maintenance and Reengineering (CSMR ’02). IEEE Computer Society, Washington, DC, USA. P. 177—185.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Semen Grigorev and Iakov Kirilenko. From Abstract Parsing to Abstract Translation // Preliminary Proceedings of the 8th Spring/Summer Young Researchers Colloquium on Software Engineering. 2014. P. 135–139.</mixed-citation><mixed-citation xml:lang="en">Semen Grigorev and Iakov Kirilenko. From Abstract Parsing to Abstract Translation // Preliminary Proceedings of the 8th Spring/Summer Young Researchers Colloquium on Software Engineering. 2014. P. 135–139.</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
