From 06c233145d35c8d476d66599c18bc041a8033bf4 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Wed, 24 Mar 2010 14:42:38 +0100 Subject: [PATCH] statemachine: parser ich habs mir in C nachprogrammiert, zumindest rechnerisch passt es. visuell ist es irgendwie nicht so toll... :( --- spec/sm/parser.pdf | Bin 15633 -> 13485 bytes spec/sm/parser.tex | 72 +++++++++++++-------------------------------- spec/spec.tex | 53 +++++++++++++++++++++++++++++---- 3 files changed, 69 insertions(+), 56 deletions(-) diff --git a/spec/sm/parser.pdf b/spec/sm/parser.pdf index 85a706107b02f51f130cc8949d83f117b5ce8c15..7afe3df27950506791879e191903b3091f22f319 100644 GIT binary patch delta 10149 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 delta 12348 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 YtGl, shortput=nab} \ncline[linestyle=dotted]{res}{idle} \ncline[linestyle=dotted]{void}{err} -\ncarc[arcangle=10]{done}{idle} +\ncarc[arcangle=24]{done}{idle} \ncarc[arcangle=0]{err}{idle} \ncarc[arcangle=0]{idle}{read}\ncput*[npos=.50]{do\_it$\uparrow$} - +\nccurve[angleA=45,angleB=75,ncurvA=2,ncurvB=2]{read}{read}\ncput*{' '} \ncarc[arcangle=0]{read}{sign}\ncput*[npos=.50]{'-'} -\ncarc[arcangle=0]{sign}{calc} -\ncarc[arcangle=35]{read}{calc}\ncput*[npos=.35]{c = '0'\dots{}'9'} -\nccircle[angle=0]{calc}{.8cm}\ncput*{c = '0'\dots{}'9'} - -\ncarc[arcangle=15]{calc}{alu1}\ncput*[npos=.50]{op = '+','-'} -\ncarc[arcangle=-5]{calc}{alu2}\ncput*[npos=.30]{op = '*','/'} -\ncarc[arcangle=0]{calc}{null}\ncput*[npos=.50]{'\textbackslash 0'} - -\ncarc[arcangle=0]{null}{alu1}\ncput*[npos=.50]{opd in ['+','-']} -\ncarc[arcangle=48]{null}{alu2}\ncput*[npos=.80]{opd in ['*','/']} +\ncarc[arcangle=0]{sign}{calc} +\ncarc[arcangle=50]{read}{calc}\ncput*[npos=.35]{c = '0'\dots{}'9'} +\nccircle[angleA=-20]{calc}{.78cm}\ncput*[npos=0.39]{c = '0'\dots{}'9'} +\nccircle[angleA=80,angleB=0,loopsize=0]{calc}{.66cm}\ncput*{' '} -\ncarc[arcangle=0]{alu1}{read}\ncput*[npos=.50]{calc\_done$\uparrow$} -\ncarc[arcangle=20]{alu2}{read}\ncput*[npos=.50]{calc\_done$\uparrow$} +\ncarc[arcangle=0]{calc}{alu}\ncput*[npos=.50]{aktop = '+','-','*','/'} +\ncarc[arcangle=0]{calc}{null}\ncput*[npos=.50]{aktop = '\textbackslash 0'} +\ncarc[arcangle=0]{null}{alu} -\ncarc[arcangle=80]{alu1}{done}\ncput*[npos=.50]{op == DONE} -\ncarc[arcangle=-60]{alu2}{done}\ncput*[npos=.66]{op == DONE} +\ncarc[arcangle=0]{alu}{read}\ncput*[npos=.50]{calc\_done$\uparrow$} +\ncarc[arcangle=0]{alu}{done}\ncput*[npos=.50]{aktop == DONE} \end{document} diff --git a/spec/spec.tex b/spec/spec.tex index 1d8bb58..88e0045 100644 --- a/spec/spec.tex +++ b/spec/spec.tex @@ -364,6 +364,49 @@ Modul wird dadurch getriggert das anliegende Zeichen in den Buffer zu \"ubernehm \label{fig:parser} \end{figure} +\begin{lstlisting} +procedure exec() { + z := z*s; + switch(opp) { + case NOP: + if(aktop != '\0') + c1(); + break; + case '-': + z := z * (-1); + case '+': + c1(); + break; + + case '/': + case '*': + if(aktop in ['+','-','\0']) { + alu(opp, z, punkt); + do_calc = 1; + while(calc_done == 0); + + alu(ADD, punkt, strich); + punkt = 1; + } + else if (aktop in ['*','/']) { + alu(opp, z, punkt); + } + break; + } + do_calc = 1; + opp = aktop; +} + +procedure c1() { + if(aktop in ['+','-','\0']) { + alu(ADD, z, strich); + } + else if (aktop in ['*','/']) { + alu(MUL, z, punkt); + } +} +\end{lstlisting} + \begin{itemize} \item \textbf{idle}: Das Modul ist unt\"atig und wartet auf eine steigende Flanke von \emph{do\_it}. @@ -374,17 +417,17 @@ History Modul angefordert. \item \textbf{calc}: Zeichen f\"ur Zeichen wird eingelesen und die Zahl wird daraus berechnet. -\item \textbf{ALU1/2}: Punkt- und Strichrechnungen m\"ussen getrennt behandelt werden, daher ergibt -sich dieses Konstrukt. +\item \textbf{ALU}: Punkt- und Strichrechnungen m\"ussen getrennt behandelt werden, daher ergibt +sich dieses Konstrukt im Codebeispiel. \item \textbf{null}: Sonderbehandlung ist n\"otig wenn die Expression mit '\textbackslash 0' abgeschlossen wird. -\item \textbf{done}: In diesem Zustand wird das Ergebnis das sich je nach \emph{opd} in +\item \textbf{done}: In diesem Zustand wird das Ergebnis das sich je nach \emph{opp} in \emph{strich} oder \emph{punkt} befindet als String in den Ergebnisbuffer des History Modules geschrieben und danach wird \emph{finnnnnished\_result} f\"ur einen Zyklus auf high gesetzt. -\item \textbf{error}: Zwecks \"ubersichtlichkeit wurden die Transitionen zu diesem Zustand +\item \textbf{error}: Zwecks \"Ubersichtlichkeit wurden die Transitionen zu diesem Zustand vernachl\"assigt. Dieser Zustand wird erreicht sobald ein Grammatikfehler oder ein Fehler der ALU auftritt. Es wird der String ``Error'' in den Ergebnisbuffer geschrieben und \emph{finnnnnished\_result} wird f\"ur einen Zyklus auf high gesetzt. @@ -394,7 +437,7 @@ auftritt. Es wird der String ``Error'' in den Ergebnisbuffer geschrieben und \subsection{Bin/Dez-Converter} \subsection{ALU} -opcodes: NOP, ADD, SUB, MUL, DIV, DONE (als enum) +opcodes: NOP, ADD, MUL, DIV, DONE (als enum) \subsection{Display} -- 2.25.1