Skip to content

Commit 3fc50e5

Browse files
committed
Выделен раздел про комбинаторы парсеров в главе про синтаксический анализ.
1 parent cc9558e commit 3fc50e5

4 files changed

Lines changed: 24 additions & 14 deletions

File tree

book_structure.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106

107107
### Глава 7. Классические алгоритмы синтаксического анализа для строк — `tex/part_02_Foundations/chapter_07_ClassicalParsing/main.tex` — ⚠️
108108

109-
> Алгоритмы CYK, Валианта, построение множеств first/follow, нисходящий синтаксический анализ (рекурсивный спуск, LL(k), GLL), восходящий синтаксический анализ (LR(0), SLR(1), CLR(1), GLR), сравнение классов LL и LR.
109+
> Алгоритмы CYK, Валианта, построение множеств first/follow, нисходящий синтаксический анализ (рекурсивный спуск, LL(k), GLL), восходящий синтаксический анализ (LR(0), SLR(1), CLR(1), GLR), сравнение классов LL и LR, комбинаторы парсеров.
110110
111111
- ⚠️ Вводная часть главы: история вопроса, обзор, ссылки на Грюна и другие классические работы
112112
- ⚠️ Раздел "Алгоритм CYK" — `01_CYK.tex`
@@ -122,6 +122,7 @@
122122
- ⚠️ Подраздел "CLR(1) алгоритм"
123123
- ⚠️ Подраздел "Обобщённый LR алгоритм"
124124
- ⚠️ Раздел "Сравнение классов LL и LR" — `06_LLvsLR.tex`
125+
- ❌ Раздел "Комбинаторы парсеров" — `07_Combinators.tex`
125126

126127
### Глава 8. Многокомпонентные контекстно-свободные языки — `tex/part_02_Foundations/chapter_08_MCFG/main.tex` — ⚠️
127128

@@ -251,11 +252,10 @@
251252
- Планируемое содержание: Описание, Адаптация GLR: множественный shift по всем исходящим рёбрам (конфликт типа shift-shift), Модификации GLR (RNGLR, BRNGLR), Псевдокод
252253
- ⚠️ Подраздел "Примеры"
253254
- ⚠️ Подраздел "Свойства алгоритма"
254-
- Интегрированы материалы из статьи `papers_src/CFPQ_GLR/paper`: основной алгоритм из `algorithm.tex`, доказательства завершимости и корректности из `algorithm.tex`, пример и рисунки из `appendix.tex`. Рисунки и dot-исходники перенесены в `tex/part_03_GraphAnalysis/chapter_12_CFPQ/figures/07_GLR_Based/`.
255+
- Интегрированы материалы из статьи `papers_src/CFPQ_GLR/paper`: основной алгоритм из `algorithm.tex`, доказательства завершаемости и корректности из `algorithm.tex`, пример и рисунки из `appendix.tex`. Рисунки и dot-исходники перенесены в `tex/part_03_GraphAnalysis/chapter_12_CFPQ/figures/07_GLR_Based/`.
255256
- ⚠️ Раздел "Комбинаторы парсеров для поиска путей с КС ограничениям" — `08_Combinators.tex`
256-
- ⚠️ Вводная часть раздела: история вопроса, обзор, мотивация
257-
- ⚠️ Подраздел "Описание алгоритма"
258-
- Планируемое содержание: Описание, Псевдокод
257+
- ❌ Вводная часть раздела: история вопроса, обзор, мотивация
258+
- ❌ Подраздел "Описание алгоритма"
259259
- ❌ Подраздел "Примеры"
260260
- ❌ Подраздел "Свойства алгоритма"
261261

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
\section{Комбинаторы парсеров}
2+
\label{sec:Combinators}
3+
\tikzsetfigurename{ClassicalParsing_Combinators_}
4+
5+
\mytodo{Наполнить раздел.}
6+
Что такое комбинаторы парсеров, с чем их едят, плюсы, минусы.
7+
Про семантику, безопасность, левую рекурсию и т.д.
8+
Набор примитивных парсеров и функций, которые умеют из существующих парсеров строить более сложные (собственно, комбинаторы парсеров).
9+
Можно упомянуть разные типы (аппликативные и т.д.), но без деталей. Дать ссылки на работы.
10+
11+
Разобрать символ, разобрать последовательность, разобрать альтернативу. В принципе, этого достаточно, но это не очень удобно.
12+
13+
Проблемы с левой рекурсией.
14+
Существуют решения. Одно из~них~--- Meerkat.
15+
Подробно про него?

tex/part_02_Foundations/chapter_07_ClassicalParsing/main.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ \chapter{Классические алгоритмы синтаксическо
1414
\input{part_02_Foundations/chapter_07_ClassicalParsing/04_TopDown}
1515
\input{part_02_Foundations/chapter_07_ClassicalParsing/05_BottomUp}
1616
\input{part_02_Foundations/chapter_07_ClassicalParsing/06_LLvsLR}
17+
\input{part_02_Foundations/chapter_07_ClassicalParsing/07_Combinators}
Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
\section{Комбинаторы парсеров для поиска путей с КС ограничениям}
22
\tikzsetfigurename{CFPQ_Combinators_}
33

4-
Что это, с чем едят, плюсы, минусы. Про семантику, безопасность, левую рекурсию и т.д.
5-
Набор примитивных парсеров и функций, которые умеют из существующих арсеров строить более сложные (собственно, комбинаторы парсеров).
4+
Основные сведения о комбинаторах парсеров вынесены в раздел~\ref{sec:Combinators}.
65

7-
Разобрать символ, разобрать последовательность, разобрать альтернативу. впринципе, этого достаточно, но это не очень удобно.
86

9-
Проблемы с левой рекурсией.
10-
Существуют решения. Одно из них~--- Meerkat.
11-
Подробно про него?
127

13-
Вообще говоря, идея использовать комбинаторы для навигации по графам достаточно очевидно и не нова.
8+
\mytodo{Интегрировать материалы из Scala\_ICFP и Combinators\_for\_single\_source\_CFPQ. основное брать из Scala\_ICFP. Combinators\_for\_single\_source\_CFPQ --- вспомогательная.}
9+
Вообще говоря, идея использовать комбинаторы для навигации по графам достаточно очевидна и не нова.
1410
немного про Trails~\cite{Kroni:2013:PGA:2489837.2489844}.
15-
1611
Комбинаторы для запросов к графам на основе Meerkat~\cite{Verbitskaia:2018:PCC:3241653.3241655}
17-
1812
Обобщённые запросы, типобезопасность и всё такое.
1913
Примеры запросов.

0 commit comments

Comments
 (0)