Skip to content

Commit b340a7e

Browse files
committed
Add CFL chapter
1 parent ac29ebe commit b340a7e

File tree

9 files changed

+708
-2
lines changed

9 files changed

+708
-2
lines changed

tex/Context-Free_Languages.tex

+576
Large diffs are not rendered by default.

tex/figures/cfl/pumping0.tex

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
\begin{tikzpicture}
3+
\node[draw=none, fill=none] at (0, 4) {S};
4+
\node[draw=none, fill=none] at (0.1, 1) {A};
5+
6+
\draw (-1,0) -- (0,3.8);
7+
\draw (0,3.8) -- (1,0);
8+
9+
\draw (-0.5,0) -- (0.1,0.8);
10+
\draw (0.1,0.8) -- (0.5,0);
11+
12+
\fill[Orchid] (-1,-0.5) rectangle ++(0.5,0.5);
13+
\fill[LimeGreen] (-0.5,-0.5) rectangle ++(1,0.5);
14+
\fill[Turquoise] (0.5,-0.5) rectangle ++(0.5,0.5);
15+
16+
\draw[draw=black] (-1,-0.5) rectangle ++(2,0.5);
17+
\draw[draw=black] (-0.5,-0.5) rectangle ++(1,0.5);
18+
19+
\draw [thick,densely dotted, rounded corners=1mm] (0,3.8) -- (-0.1, 2.5) -- (0.15, 1.4) -- (0.1, 1.1);
20+
21+
22+
\node[draw=none, fill=none] at (-0.75,-0.25) {$u$};
23+
\node[draw=none, fill=none] at (0,-0.25) {$w$};
24+
\node[draw=none, fill=none] at (0.75,-0.25) {$y$};
25+
\end{tikzpicture}
26+

tex/figures/cfl/pumping1.tex

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
\begin{tikzpicture}
3+
\node[draw=none, fill=none] at (0, 4) {S};
4+
\node[draw=none, fill=none] at (-0.1, 2.3) {A};
5+
\node[draw=none, fill=none] at (0.1, 1) {A};
6+
7+
\draw (-1.5,0) -- (0,3.8);
8+
\draw (0,3.8) -- (1.5,0);
9+
\draw (-1,0) -- (-0.1,2.1);
10+
\draw (-0.1,2.1) -- (1,0);
11+
\draw (-0.5,0) -- (0.1,0.8);
12+
\draw (0.1,0.8) -- (0.5,0);
13+
14+
\fill[Orchid] (-1.5,-0.5) rectangle ++(0.5,0.5);
15+
\fill[Dandelion] (-1,-0.5) rectangle ++(0.5,0.5);
16+
\fill[LimeGreen] (-0.5,-0.5) rectangle ++(1,0.5);
17+
\fill[Salmon] (0.5,-0.5) rectangle ++(0.5,0.5);
18+
\fill[Turquoise] (1,-0.5) rectangle ++(0.5,0.5);
19+
20+
\draw[draw=black] (-1.5,-0.5) rectangle ++(3,0.5);
21+
\draw[draw=black] (-1,-0.5) rectangle ++(2,0.5);
22+
\draw[draw=black] (-0.5,-0.5) rectangle ++(1,0.5);
23+
24+
\draw [thick,densely dotted, rounded corners=1mm](0,3.8) -- (0.1, 2.9) -- (-0.15, 2.7) -- (-0.1, 2.4);
25+
26+
\draw [thick,densely dotted, rounded corners=1mm](-0.1, 2.1) -- (-0.1, 1.7) -- (0.15, 1.4) -- (0.1, 1.1);
27+
28+
29+
\node[draw=none, fill=none] at (-1.25,-0.25) {$u$};
30+
\node[draw=none, fill=none] at (-0.75,-0.25) {$v$};
31+
\node[draw=none, fill=none] at (0,-0.25) {$w$};
32+
\node[draw=none, fill=none] at (0.75,-0.25) {$x$};
33+
\node[draw=none, fill=none] at (1.25,-0.25) {$y$};
34+
\end{tikzpicture}

tex/figures/cfl/pumping2.tex

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
\begin{tikzpicture}
2+
\node[draw=none, fill=none] at (0, 4) {S};
3+
\node[draw=none, fill=none] at (-0.1, 2.8) {A};
4+
\node[draw=none, fill=none] at (0.1, 1.6) {A};
5+
\node[draw=none, fill=none] at (-0, 0.8) {A};
6+
7+
\draw (-2,0) -- (0,3.8);
8+
\draw (0,3.8) -- (2,0);
9+
\draw (-1.5,0) -- (-0.1,2.6);
10+
\draw (-0.1,2.6) -- (1.5,0);
11+
\draw (-1,0) -- (0.1,1.4);
12+
\draw (0.1,1.4) -- (1,0);
13+
\draw (-0.5,0) -- (0,0.6);
14+
\draw (0,0.6) -- (0.5,0);
15+
16+
\fill[Orchid] (-2,-0.5) rectangle ++(0.5,0.5);
17+
\fill[Dandelion] (-1.5,-0.5) rectangle ++(1,0.5);
18+
\fill[LimeGreen] (-0.5,-0.5) rectangle ++(1,0.5);
19+
\fill[Salmon] (0.5,-0.5) rectangle ++(1,0.5);
20+
\fill[Turquoise] (1.5,-0.5) rectangle ++(0.5,0.5);
21+
22+
\draw[draw=black] (-2,-0.5) rectangle ++(4,0.5);
23+
\draw[draw=black] (-1.5,-0.5) rectangle ++(3,0.5);
24+
\draw[draw=black] (-1,-0.5) rectangle ++(2,0.5);
25+
\draw[draw=black] (-0.5,-0.5) rectangle ++(1,0.5);
26+
27+
\draw [thick,densely dotted, rounded corners=1mm](0,3.8) -- (0.1, 3.4) -- (-0.15, 3.2) -- (-0.1, 2.9);
28+
29+
\draw [thick,densely dotted, rounded corners=1mm](-0.1, 2.6) -- (-0.1, 2.3) -- (0.15, 1.9) -- (0.1, 1.75);
30+
31+
\draw [thick,densely dotted, rounded corners=1mm](0.1,1.4) -- (-0.05, 1.1) -- (0, 1);
32+
33+
\node[draw=none, fill=none] at (-1.75,-0.25) {$u$};
34+
\node[draw=none, fill=none] at (-1.25,-0.25) {$v$};
35+
\node[draw=none, fill=none] at (-0.75,-0.25) {$v$};
36+
\node[draw=none, fill=none] at (0,-0.25) {$w$};
37+
\node[draw=none, fill=none] at (0.75,-0.25) {$x$};
38+
\node[draw=none, fill=none] at (1.25,-0.25) {$x$};
39+
\node[draw=none, fill=none] at (1.75,-0.25) {$y$};
40+
\end{tikzpicture}

tex/figures/cfl/tree0.tex

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
\begin{tikzpicture}[sibling distance=4em,
2+
every node/.style = {shape=rectangle, rounded corners,
3+
draw, align=center}]]
4+
\node {S}
5+
child { node {a} }
6+
child { node {S}
7+
child { node {$\varepsilon$}}
8+
}
9+
child { node {b} }
10+
child { node {S}
11+
child {node {a}}
12+
child { node {S}
13+
child { node {$\varepsilon$}}
14+
}
15+
child { node {b} }
16+
child { node {S}
17+
child {node {a}}
18+
child {node {S}
19+
child {node {$\varepsilon$}}
20+
}
21+
child {node {b}}
22+
child {node {S}
23+
child {node {$\varepsilon$}}
24+
}
25+
}
26+
};
27+
\end{tikzpicture}

tex/main.tex

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
\input{GraphTheoryIntro}
5050
\input{FormalLanguageTheoryIntro}
5151
\input{RegularLanguages}
52+
\input{Context-Free_Languages}
5253

5354
\backmatter
5455
\setchapterstyle{plain}

tex/styles/math.tex

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
\usepackage{nicematrix}
33

44
% \setmathfont[range={\doubleplus}, Scale=MatchLowercase]{Asana Math}
5+
\NewDocumentCommand{\derives}{O{*}}{\xRightarrow[]{#1}}

tex/styles/theorems.tex

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161
\declaretheorem[name=Пример, numberwithin=chapter, style=myStyle]{example}
6262
\declaretheorem[name=Замечание, numbered=no, style=myStyle]{remark}
6363

64-
% \declaretheorem[name=Доказательство, numbered=no, style=myProofStyleWithFrame]{proofReplace}
65-
% \renewenvironment{proof}[1][\proofname]{\begin{proofReplace}}{\end{proofReplace}}
64+
\declaretheorem[name=Доказательство, numbered=no, style=myProofStyleWithFrame]{proofReplace}
65+
\renewenvironment{proof}[1][\proofname]{\begin{proofReplace}}{\end{proofReplace}}
6666
% \declaretheorem[name=Доказательство, numbered=no, style=myProofStyleWithFrame]{longProof}
6767

6868
\declaretheorem[name={Набросок доказательства}, numbered=no, style=myProofStyleWithFrame]{proofSketch}

tex/styles/utils.tex

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
\usepackage{xurl} % Разрешить переносить URL на любой букве
22
\usepackage[noheader]{gitver}
3+
\usepackage{subcaption}
34

45
\NewDocumentCommand{\email}{m}{\href{mailto:#1}{#1}} % Кликабельный email
56

0 commit comments

Comments
 (0)