From 111f7a775d536ddbeb4aabea84b0dd9b6d7ec0be Mon Sep 17 00:00:00 2001 From: Michael Leuschel <leuschel@uni-duesseldorf.de> Date: Fri, 5 Jun 2020 12:01:32 +0200 Subject: [PATCH] add execution trace --- info4/kapitel-3/PDA_nach_kfG.ipynb | 361 +++++++++++++++++++++++++++-- 1 file changed, 347 insertions(+), 14 deletions(-) diff --git a/info4/kapitel-3/PDA_nach_kfG.ipynb b/info4/kapitel-3/PDA_nach_kfG.ipynb index a93094d..a5f9cfc 100644 --- a/info4/kapitel-3/PDA_nach_kfG.ipynb +++ b/info4/kapitel-3/PDA_nach_kfG.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -18,7 +18,7 @@ "Loaded machine: PDA_to_CFG" ] }, - "execution_count": 9, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -28,7 +28,8 @@ "MACHINE PDA_to_CFG\n", "/* Translating a PDA to a CFG */\n", "SETS\n", - " STATES = {z0,z1, symbol};\n", + " STATES = {z0,z1, symbol}; \n", + " /* symbol: virtueller Zustand um S und andere Symbole in der Grammatik darzustellen */\n", " SYMBOLS={a,b, A, BOT, lambda, S} /* BOT = # = bottom of stack*/\n", "DEFINITIONS\n", " CFG_Alphabet == (STATES*(SYMBOLS-{lambda})*STATES);\n", @@ -85,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -94,7 +95,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 10, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -105,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -114,7 +115,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 11, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -125,7 +126,30 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{(\\mathit{z0}\\mapsto \\mathit{a}\\mapsto \\mathit{A}\\mapsto(\\mathit{z0}\\mapsto [A,A])),(\\mathit{z0}\\mapsto \\mathit{a}\\mapsto \\mathit{BOT}\\mapsto(\\mathit{z0}\\mapsto [A,BOT])),(\\mathit{z0}\\mapsto \\mathit{b}\\mapsto \\mathit{A}\\mapsto(\\mathit{z1}\\mapsto [])),(\\mathit{z1}\\mapsto \\mathit{b}\\mapsto \\mathit{A}\\mapsto(\\mathit{z1}\\mapsto [])),(\\mathit{z1}\\mapsto \\mathit{lambda}\\mapsto \\mathit{BOT}\\mapsto(\\mathit{z1}\\mapsto []))\\}$" + ], + "text/plain": [ + "{(z0↦a↦A↦(z0↦[A,A])),(z0↦a↦BOT↦(z0↦[A,BOT])),(z0↦b↦A↦(z1↦[])),(z1↦b↦A↦(z1↦[])),(z1↦lambda↦BOT↦(z1↦[]))}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "delta" + ] + }, + { + "cell_type": "code", + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -147,7 +171,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 12, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -158,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -173,7 +197,86 @@ "ApplyRule((symbol|->S|->symbol),[(z0|->BOT|->z1)],[],[])" ] }, - "execution_count": 13, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":browse" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Executed operation: ApplyRule((symbol|->S|->symbol),[(z0|->BOT|->z1)],[],[])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":exec ApplyRule RHS = [(z0|->BOT|->z1)]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "<table style=\"font-family:monospace\"><tbody>\n", + "<tr>\n", + "<td style=\"padding:10px\">z0</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">BOT</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">z1</td>\n", + "</tr>\n", + "</tbody></table>" + ], + "text/plain": [ + "<Animation function visualisation>" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":show" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine: PDA_to_CFG\n", + "Sets: STATES, SYMBOLS\n", + "Constants: delta, Productions\n", + "Variables: cur\n", + "Operations: \n", + "ApplyRule((z0|->BOT|->z1),[(symbol|->a|->symbol),(z0|->A|->z0),(z0|->BOT|->z1)],[],[])\n", + "ApplyRule((z0|->BOT|->z1),[(symbol|->a|->symbol),(z0|->A|->z1),(z1|->BOT|->z1)],[],[])" + ] + }, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -184,16 +287,186 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Executed operation: ApplyRule((symbol|->S|->symbol),[(z0|->BOT|->z0)],[],[])" + "Executed operation: ApplyRule((z0|->BOT|->z1),[(symbol|->a|->symbol),(z0|->A|->z1),(z1|->BOT|->z1)],[],[])" ] }, - "execution_count": 14, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":exec ApplyRule RHS = [(symbol|->a|->symbol),(z0|->A|->z1),(z1|->BOT|->z1)]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "<table style=\"font-family:monospace\"><tbody>\n", + "<tr>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">z0</td>\n", + "<td style=\"padding:10px\">z1</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">a</td>\n", + "<td style=\"padding:10px\">A</td>\n", + "<td style=\"padding:10px\">BOT</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">z1</td>\n", + "<td style=\"padding:10px\">z1</td>\n", + "</tr>\n", + "</tbody></table>" + ], + "text/plain": [ + "<Animation function visualisation>" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":show" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine: PDA_to_CFG\n", + "Sets: STATES, SYMBOLS\n", + "Constants: delta, Productions\n", + "Variables: cur\n", + "Operations: \n", + "ApplyRule((z0|->A|->z1),[(symbol|->b|->symbol)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])\n", + "ApplyRule((z0|->A|->z1),[(symbol|->a|->symbol),(z0|->A|->z0),(z0|->A|->z1)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])\n", + "ApplyRule((z0|->A|->z1),[(symbol|->a|->symbol),(z0|->A|->z1),(z1|->A|->z1)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":browse" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Executed operation: ApplyRule((z0|->A|->z1),[(symbol|->b|->symbol)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":exec ApplyRule RHS=[(symbol|->b|->symbol)]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "<table style=\"font-family:monospace\"><tbody>\n", + "<tr>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">z1</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">a</td>\n", + "<td style=\"padding:10px\">b</td>\n", + "<td style=\"padding:10px\">BOT</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">z1</td>\n", + "</tr>\n", + "</tbody></table>" + ], + "text/plain": [ + "<Animation function visualisation>" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":show" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine: PDA_to_CFG\n", + "Sets: STATES, SYMBOLS\n", + "Constants: delta, Productions\n", + "Variables: cur\n", + "Operations: \n", + "ApplyRule((z1|->BOT|->z1),[],[(symbol|->a|->symbol),(symbol|->b|->symbol)],[])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":browse" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Executed operation: ApplyRule((z1|->BOT|->z1),[],[(symbol|->a|->symbol),(symbol|->b|->symbol)],[])" + ] + }, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -202,6 +475,66 @@ ":exec ApplyRule" ] }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "<table style=\"font-family:monospace\"><tbody>\n", + "<tr>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">a</td>\n", + "<td style=\"padding:10px\">b</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "<td style=\"padding:10px\">symbol</td>\n", + "</tr>\n", + "</tbody></table>" + ], + "text/plain": [ + "<Animation function visualisation>" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":show" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine: PDA_to_CFG\n", + "Sets: STATES, SYMBOLS\n", + "Constants: delta, Productions\n", + "Variables: cur\n", + "Operations: " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":browse" + ] + }, { "cell_type": "code", "execution_count": null, -- GitLab