Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3,608 changes: 3,608 additions & 0 deletions InProgress/StackGraphs_to_CFL_Reachability/IEEE.bst

Large diffs are not rendered by default.

304 changes: 304 additions & 0 deletions InProgress/StackGraphs_to_CFL_Reachability/article_body.tex

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1,510 changes: 1,510 additions & 0 deletions InProgress/StackGraphs_to_CFL_Reachability/kioj6.cls

Large diffs are not rendered by default.

Binary file not shown.
88 changes: 88 additions & 0 deletions InProgress/StackGraphs_to_CFL_Reachability/main.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
% Статья для журнала «Компьютерные инструменты в образовании».
% Основа: официальный русский шаблон с классом kioj6 от 07.04.2026.
% Сведения, отсутствующие в исходном DOCX, перечислены в README.md.

\documentclass[eqsecnum,authorsinfo]{kioj6}

\usepackage{enumitem}
\usepackage{tabularray}
\usepackage{fancyvrb}

% В актуальном классе блок издательских реквизитов на 0,02 см шире внешнего
% контейнера английской части; небольшое уменьшение устраняет выход за поле.
\makeatletter
\def\title@full@article@info@width{5.48cm}
\makeatother

\raggedbottom
\widowpenalty=10000
\clubpenalty=10000

% Редакционные поля. Год и номер выпуска уточняются редакцией; внутренняя
% нумерация проверочного макета начинается с первой страницы.
\setcounter{page}{1}
\journalsectionnoimage{empty}
\issue{--}{--}{edu}
\articletr{}{}

% УДК и DOI в исходном файле отсутствуют, поэтому не подставляются.

\title[Разрешение имён на основе сведения стековых графов]{Разрешение имён в языках программирования на основе сведения стековых графов к контекстно-свободной достижимости}
\titleen[Name Resolution Based on Stack Graphs Conversion]{Name Resolution Based on Stack Graphs Conversion to Context-Free Reachability for Programming Languages}

\author{1}[Ильин Е.~С.\affil{1}]{Ильин Егор Сергеевич}
\authorinfo{1}{выпускник кафедры математического обеспечения и применения ЭВМ, СПбГЭТУ «ЛЭТИ»}
\authoremailEnvelope{1}{[email protected]}
\affiliation{1}{Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.~И. Ульянова (Ленина), Российская Федерация, 197022, Санкт-Петербург, ул. Профессора Попова, 5}

\author{2}[Григорьев С.~В.\affil{2}]{Григорьев Семён Вячеславович}
\authorinfo{2}{канд. физ.-мат. наук, доцент кафедры системного программирования СПбГУ}
\authoremail{2}{[email protected]}
\authororcid{2}{orcid.org/0000-0002-7966-0698}
\affiliation{2}{Санкт-Петербургский государственный университет, Российская Федерация, 199034, Санкт-Петербург, Университетская наб., 7–9}

\authoren{1}[Ilin E.~S.\affil{1}]{Ilin Egor}
\authorinfoen{1}{graduate of ETU ``LETI''}
\affiliationen{1}{Saint Petersburg State Electrotechnical University “LETI”, Professora Popova ul. 5, St. Petersburg, 197022, Russian Federation}

\authoren{2}[Grigorev S.~V.\affil{2}]{Semyon Grigorev}
\authorinfoen{2}{Associate Professor at St. Petersburg State University}
\affiliationen{2}{Saint Petersburg State University, Universitetskaya nab. 7–9, St. Petersburg, 199034, Russian Federation}

\begin{document}

\russianversion
\maketitle
\pagestyle{mainstyle}

\begin{abstract}
Работа посвящена абстрактному разрешению имён, то есть связыванию ссылок на символы с их определениями, с использованием графовых моделей. Рассматривается способ сведения модели стековых графов к задаче достижимости с контекстно-свободными ограничениями (КС-достижимости). Областями применения являются инструменты анализа кода и навигации по кодовым базам, интегрированные среды разработки, компиляторы. В статье представлено теоретическое сведение модели стековых графов к КС-достижимости, рассмотрены его ограничения. Произведена проверка предложенного решения на практике, выполнено экспериментальное сравнение со стековыми графами. Также освещены направления дальнейших исследований и доработки сведения и разработанного программного средства.

\keywordsru{стековые графы, контекстно-свободная достижимость, абстрактное разрешение имён, алгоритмы на графах}
\end{abstract}

\input{article_body}

% Номера источников определяются порядком первого упоминания в статье.
% База references-clones.bib создаётся официальным сценарием из references.bib.
\bibliographystyle{ugost2008}
\bibliography{references-clones}

\printauthorsinfo

\begin{translatedpart}
\maketranslatedtitle

\begin{abstract}
The problem of abstract name resolution (binding symbol references to corresponding symbol definitions) in graph models is covered in the article. The method for stack graphs model conversion to the problem of context-free reachability (CFL-reachability) is considered. The areas of applicability encompass code analysis and navigation tools, integrated development environments, compilers. The article presents conversion of stack graphs model to CFL-reachability and considers conversion's limitations. A practical check of the proposed solution and an experimental comparison with stack graphs are conducted. Additionally, further areas of research and improvement of the presented method and the designed program are highlighted.

\keywordsen{stack graphs, context-free reachability, abstract name resolution, graph algorithms}
\end{abstract}

\begin{otherlanguage*}{english}
\bibliographystyleeng{IEEE}
\bibliographyeng{references-en-prefixed,references-clones}
\end{otherlanguage*}
\end{translatedpart}

\end{document}
296 changes: 296 additions & 0 deletions InProgress/StackGraphs_to_CFL_Reachability/references-clones.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,296 @@
@INPROCEEDINGS{EN-Zwaan2023,
AUTHOR = {Zwaan, Aron and van Antwerpen, Hendrik},
PUBLISHER = {Schloss Dagstuhl -- Leibniz-Zentrum für Informatik},
ADDRESS = {Dagstuhl, Germany},
BOOKTITLE = {Eelco Visser Commemorative Symposium ({EVCS} 2023)},
DOI = {10.4230/OASIcs.EVCS.2023.32},
PAGES = {32:1--32:13},
SERIES = {Open Access Series in Informatics (OASIcs)},
TITLE = {Scope Graphs: The Story so Far},
VOLUME = {109},
YEAR = {2023},
}

@ARTICLE{EN-vanAntwerpen2018,
AUTHOR = {van Antwerpen, Hendrik and Bach Poulsen, Casper and Rouvoet, Arjen and Visser, Eelco},
PUBLISHER = {Association for Computing Machinery},
ADDRESS = {New York, NY, USA},
ARTICLENO = {114},
DOI = {10.1145/3276484},
JOURNAL = {Proceedings of the ACM on Programming Languages},
MONTH = nov,
NUMBER = {OOPSLA},
PAGES = {1--30},
TITLE = {Scopes as Types},
VOLUME = {2},
YEAR = {2018},
}

@INPROCEEDINGS{EN-Neron2015,
AUTHOR = {Néron, Pierre and Tolmach, Andrew P. and Visser, Eelco and Wachsmuth, Guido},
EDITOR = {Vitek, Jan},
PUBLISHER = {Springer},
ADDRESS = {Berlin, Heidelberg},
BOOKTITLE = {Programming Languages and Systems: 24th European Symposium on Programming, {ESOP} 2015, Held as Part of {ETAPS} 2015, London, UK, April 11--18, 2015, Proceedings},
DOI = {10.1007/978-3-662-46669-8_9},
PAGES = {205--231},
SERIES = {Lecture Notes in Computer Science},
TITLE = {A Theory of Name Resolution},
VOLUME = {9032},
YEAR = {2015},
}

@INPROCEEDINGS{EN-MuravevGrigorev2025,
AUTHOR = {Muravev, Ilia and Grigorev, Semyon},
PUBLISHER = {Association for Computing Machinery},
ADDRESS = {New York, NY, USA},
BOOKTITLE = {Proceedings of the 14th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis ({SOAP} '25)},
DOI = {10.1145/3735544.3735585},
ISBN = {979-8-4007-1922-6},
PAGES = {28--35},
TITLE = {Universal High-Performance {CFL}-Reachability via Matrix Multiplication},
YEAR = {2025},
}

@ONLINE{EN-Hellings2015,
AUTHOR = {Hellings, Jelle},
DOI = {10.48550/arXiv.1502.02242},
EPRINT = {1502.02242},
EPRINTTYPE = {arXiv},
NOTE = {Version 2, revised 31 January 2016},
TITLE = {Querying for Paths in Graphs using Context-Free Path Queries},
URL = {https://arxiv.org/abs/1502.02242},
URLDATE = {29.08.2026},
YEAR = {2015},
}

@INPROCEEDINGS{EN-RepsHorwitzSagiv1995,
AUTHOR = {Reps, Thomas and Horwitz, Susan and Sagiv, Mooly},
PUBLISHER = {ACM Press},
ADDRESS = {New York, NY, USA},
BOOKTITLE = {Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages ({POPL} '95)},
DOI = {10.1145/199448.199462},
ISBN = {0-89791-692-1},
PAGES = {49--61},
TITLE = {Precise Interprocedural Dataflow Analysis via Graph Reachability},
YEAR = {1995},
}

@SOFTWARE{EN-ShatteredPixelDungeon,
AUTHOR = {Debenham, Evan},
HOWPUBLISHED = {GitHub repository},
TITLE = {Shattered Pixel Dungeon},
URL = {https://github.com/00-Evan/shattered-pixel-dungeon},
URLDATE = {29.08.2026},
}

@SOFTWARE{EN-JaywayJsonPath,
AUTHOR = {{json-path}},
HOWPUBLISHED = {GitHub repository},
TITLE = {Jayway {JsonPath}},
URL = {https://github.com/json-path/JsonPath},
URLDATE = {29.08.2026},
}

@SOFTWARE{EN-CoreJustStackGraphExporter,
AUTHOR = {{CoreJust}},
HOWPUBLISHED = {GitHub repository},
TITLE = {Stack Graph Exporter},
URL = {https://github.com/CoreJust/StackGraphExporter},
URLDATE = {29.08.2026},
}

@INPROCEEDINGS{EN-Creager2023,
AUTHOR = {Creager, Douglas A. and van Antwerpen, Hendrik},
PUBLISHER = {Schloss Dagstuhl -- Leibniz-Zentrum für Informatik},
ADDRESS = {Dagstuhl, Germany},
BOOKTITLE = {Eelco Visser Commemorative Symposium ({EVCS} 2023)},
DOI = {10.4230/OASIcs.EVCS.2023.8},
PAGES = {8:1--8:12},
SERIES = {Open Access Series in Informatics (OASIcs)},
TITLE = {Stack Graphs: Name Resolution at Scale},
VOLUME = {109},
YEAR = {2023},
}

@SOFTWARE{EN-JiaoZiVideoPlayer,
AUTHOR = {{lipangit}},
HOWPUBLISHED = {Archived GitHub repository},
NOTE = {The repository was archived by its owner; the project moved to JZVideo},
TITLE = {JiaoZiVideoPlayer},
URL = {https://github.com/lipangit/JiaoZiVideoPlayer},
URLDATE = {29.08.2026},
}

@SOFTWARE{EN-LibGDX,
AUTHOR = {{libGDX}},
HOWPUBLISHED = {GitHub repository},
TITLE = {{libGDX}},
URL = {https://github.com/libgdx/libgdx},
URLDATE = {29.08.2026},
}

@INPROCEEDINGS{EN-HeLuXue2024,
AUTHOR = {He, Dongjie and Lu, Jingbo and Xue, Jingling},
EDITOR = {Aldrich, Jonathan and Salvaneschi, Guido},
PUBLISHER = {Schloss Dagstuhl -- Leibniz-Zentrum für Informatik},
ADDRESS = {Dagstuhl, Germany},
BOOKTITLE = {38th European Conference on Object-Oriented Programming ({ECOOP} 2024)},
DOI = {10.4230/LIPIcs.ECOOP.2024.18},
ISBN = {978-3-95977-341-6},
ISSN = {1868-8969},
PAGES = {18:1--18:29},
SERIES = {Leibniz International Proceedings in Informatics (LIPIcs)},
TITLE = {A {CFL}-Reachability Formulation of Callsite-Sensitive Pointer Analysis with Built-In On-The-Fly Call Graph Construction},
VOLUME = {313},
YEAR = {2024},
}

@INPROCEEDINGS{Neron2015,
AUTHOR = {Néron, Pierre and Tolmach, Andrew P. and Visser, Eelco and Wachsmuth, Guido},
EDITOR = {Vitek, Jan},
PUBLISHER = {Springer},
ADDRESS = {Berlin, Heidelberg},
BOOKTITLE = {Programming Languages and Systems: 24th European Symposium on Programming, {ESOP} 2015, Held as Part of {ETAPS} 2015, London, UK, April 11--18, 2015, Proceedings},
DOI = {10.1007/978-3-662-46669-8_9},
PAGES = {205--231},
SERIES = {Lecture Notes in Computer Science},
TITLE = {A Theory of Name Resolution},
VOLUME = {9032},
YEAR = {2015},
}

@ARTICLE{vanAntwerpen2018,
AUTHOR = {van Antwerpen, Hendrik and Bach Poulsen, Casper and Rouvoet, Arjen and Visser, Eelco},
PUBLISHER = {Association for Computing Machinery},
ADDRESS = {New York, NY, USA},
ARTICLENO = {114},
DOI = {10.1145/3276484},
JOURNAL = {Proceedings of the ACM on Programming Languages},
MONTH = nov,
NUMBER = {OOPSLA},
PAGES = {1--30},
TITLE = {Scopes as Types},
VOLUME = {2},
YEAR = {2018},
}

@INPROCEEDINGS{Zwaan2023,
AUTHOR = {Zwaan, Aron and van Antwerpen, Hendrik},
PUBLISHER = {Schloss Dagstuhl -- Leibniz-Zentrum für Informatik},
ADDRESS = {Dagstuhl, Germany},
BOOKTITLE = {Eelco Visser Commemorative Symposium ({EVCS} 2023)},
DOI = {10.4230/OASIcs.EVCS.2023.32},
PAGES = {32:1--32:13},
SERIES = {Open Access Series in Informatics (OASIcs)},
TITLE = {Scope Graphs: The Story so Far},
VOLUME = {109},
YEAR = {2023},
}

@INPROCEEDINGS{Creager2023,
AUTHOR = {Creager, Douglas A. and van Antwerpen, Hendrik},
PUBLISHER = {Schloss Dagstuhl -- Leibniz-Zentrum für Informatik},
ADDRESS = {Dagstuhl, Germany},
BOOKTITLE = {Eelco Visser Commemorative Symposium ({EVCS} 2023)},
DOI = {10.4230/OASIcs.EVCS.2023.8},
PAGES = {8:1--8:12},
SERIES = {Open Access Series in Informatics (OASIcs)},
TITLE = {Stack Graphs: Name Resolution at Scale},
VOLUME = {109},
YEAR = {2023},
}

@INPROCEEDINGS{RepsHorwitzSagiv1995,
AUTHOR = {Reps, Thomas and Horwitz, Susan and Sagiv, Mooly},
PUBLISHER = {ACM Press},
ADDRESS = {New York, NY, USA},
BOOKTITLE = {Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages ({POPL} '95)},
DOI = {10.1145/199448.199462},
ISBN = {0-89791-692-1},
PAGES = {49--61},
TITLE = {Precise Interprocedural Dataflow Analysis via Graph Reachability},
YEAR = {1995},
}

@ONLINE{Hellings2015,
AUTHOR = {Hellings, Jelle},
DOI = {10.48550/arXiv.1502.02242},
EPRINT = {1502.02242},
EPRINTTYPE = {arXiv},
NOTE = {Version 2, revised 31 January 2016},
TITLE = {Querying for Paths in Graphs using Context-Free Path Queries},
URL = {https://arxiv.org/abs/1502.02242},
URLDATE = {29.08.2026},
YEAR = {2015},
}

@INPROCEEDINGS{HeLuXue2024,
AUTHOR = {He, Dongjie and Lu, Jingbo and Xue, Jingling},
EDITOR = {Aldrich, Jonathan and Salvaneschi, Guido},
PUBLISHER = {Schloss Dagstuhl -- Leibniz-Zentrum für Informatik},
ADDRESS = {Dagstuhl, Germany},
BOOKTITLE = {38th European Conference on Object-Oriented Programming ({ECOOP} 2024)},
DOI = {10.4230/LIPIcs.ECOOP.2024.18},
ISBN = {978-3-95977-341-6},
ISSN = {1868-8969},
PAGES = {18:1--18:29},
SERIES = {Leibniz International Proceedings in Informatics (LIPIcs)},
TITLE = {A {CFL}-Reachability Formulation of Callsite-Sensitive Pointer Analysis with Built-In On-The-Fly Call Graph Construction},
VOLUME = {313},
YEAR = {2024},
}

@INPROCEEDINGS{MuravevGrigorev2025,
AUTHOR = {Muravev, Ilia and Grigorev, Semyon},
PUBLISHER = {Association for Computing Machinery},
ADDRESS = {New York, NY, USA},
BOOKTITLE = {Proceedings of the 14th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis ({SOAP} '25)},
DOI = {10.1145/3735544.3735585},
ISBN = {979-8-4007-1922-6},
PAGES = {28--35},
TITLE = {Universal High-Performance {CFL}-Reachability via Matrix Multiplication},
YEAR = {2025},
}

@SOFTWARE{CoreJustStackGraphExporter,
AUTHOR = {{CoreJust}},
HOWPUBLISHED = {GitHub repository},
TITLE = {Stack Graph Exporter},
URL = {https://github.com/CoreJust/StackGraphExporter},
URLDATE = {29.08.2026},
}

@SOFTWARE{LibGDX,
AUTHOR = {{libGDX}},
HOWPUBLISHED = {GitHub repository},
TITLE = {{libGDX}},
URL = {https://github.com/libgdx/libgdx},
URLDATE = {29.08.2026},
}

@SOFTWARE{ShatteredPixelDungeon,
AUTHOR = {Debenham, Evan},
HOWPUBLISHED = {GitHub repository},
TITLE = {Shattered Pixel Dungeon},
URL = {https://github.com/00-Evan/shattered-pixel-dungeon},
URLDATE = {29.08.2026},
}

@SOFTWARE{JaywayJsonPath,
AUTHOR = {{json-path}},
HOWPUBLISHED = {GitHub repository},
TITLE = {Jayway {JsonPath}},
URL = {https://github.com/json-path/JsonPath},
URLDATE = {29.08.2026},
}

@SOFTWARE{JiaoZiVideoPlayer,
AUTHOR = {{lipangit}},
HOWPUBLISHED = {Archived GitHub repository},
NOTE = {The repository was archived by its owner; the project moved to JZVideo},
TITLE = {JiaoZiVideoPlayer},
URL = {https://github.com/lipangit/JiaoZiVideoPlayer},
URLDATE = {29.08.2026},
}

Empty file.
Loading