Skip to content

Instantly share code, notes, and snippets.

@jonasc
Created February 28, 2015 10:40
Show Gist options
  • Save jonasc/763fa844817fdfd0e7da to your computer and use it in GitHub Desktop.
Save jonasc/763fa844817fdfd0e7da to your computer and use it in GitHub Desktop.
\begin{tikzpicture}[
>=triangle 60,
start chain=going below,
node distance=5mm and 70mm,
every join/.style={norm},
]
\tikzset{
base/.style={on chain, on grid, align=center},
term/.style={base, minimum height=1.75em},
proc/.style={term, draw, rectangle, text width=13em, minimum height=2em},
coord/.style={coordinate, on chain, on grid, node distance=6mm and 35mm},
norm/.style={->, draw},
term2/.style={term, color=gray},
proc2/.style={proc, color=gray},
norm2/.style={norm, color=gray},
}
\node [term] (l1) {Quelltext (\WHILE)};
\node [proc, join] {\hyperref[sec:lexer]{Lexikalische Analyse}};
\node [term, join] {Tokenstrom};
\node [proc, join] {\hyperref[sec:parser]{Syntaktische Analyse}};
\node [term, join] {abstrakter Syntaxbaum (AST)};
\node [proc, join] {\hyperref[sec:ast-optimierung]{Optimierung des AST}};
\node [term, join] {abstrakter Syntaxbaum (AST)};
\node [proc, join] (l8) {\hyperref[sec:zwischencode]{Zwischencodegenerierung}};
\node [term, right=of l1] (r1) {Zwischencode};
\node [proc, join] (r2) {\hyperref[sec:optimierung]{Zwischencodeoptimierung}};
\node [term, join] (r3) {Zwischencode};
\node [proc, join] (r4) {\hyperref[sec:assembler]{Codeerzeugung}};
\node [term, join] (r5) {Assemblercode (\caps{Nasm})};
\node [proc2, join=by norm2] (r6) {Assemblierer \& Linker};
\node [term2, join=by norm2] (r7) {ausführbares Programm};
\node [coord, below=of l8] (c1) {};
\node [coord, right=of c1] (c2) {};
\node [coord, above=of r1] (c3) {};
\draw (l8.south) |- (c2.north) |- (c3.north);
\draw [style={->}] (c3.north) -- (r1.north);
\tikzset{dotted/.style={draw, line width=.5pt,
dash pattern=on 4pt off 4pt,
inner sep=4mm, rectangle}};
\node (first dotted box) [dotted, fit = (l1) (l8)] {};
\node (second dotted box) [dotted, fit = (r4) (r7)] {};
\node at (first dotted box.south) [below, inner sep=3mm] {\textit{Front\hyp{}End}};
\node at (second dotted box.south) [below, inner sep=3mm] {\textit{Back\hyp{}End}};
\end{tikzpicture}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment