\documentclass{minimal} \pagestyle{empty} \usepackage{pstricks} \usepackage{pst-node} \begin{document} \begin{psmatrix}[mnode=oval, colsep=1.91cm, rowsep=1cm] [mnode=R,name=vars]{\shortstack[l]{int s, z, c,\\\, strich, punkt;\\opcode aktop,opp;}} & [name=calc]{\shortstack{\textbf{calc}\\z:=z*10\\+(c-'0');}} & [name=null]{\shortstack{\textbf{null}\\aktop:=DONE;}} \\ %% [mnode=R,name=res]{sys\_res} & [name=sign]{\shortstack{\textbf{sign}\\s:=-1;}} & [name=alu]{ \shortstack{ \textbf{ALU}\\ siehe Codeschnipsel } } \\ %% [name=idle]{\shortstack{\textbf{idle}\\strich:=0;\\punkt:=1;\\opp:=NOP;}} & [name=read]{\shortstack{\textbf{read char}\\z:=0;\\s:=1;}} & [name=done]{\shortstack{\textbf{done}}} \\ %% [mnode=R,name=void]{} & [name=err]{\shortstack{\textbf{error}}} \\ \end{psmatrix} \psset{arrows=->, shortput=nab} \ncline[linestyle=dotted]{res}{idle} \ncline[linestyle=dotted]{void}{err} \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=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]{calc}{alu}\ncput*[npos=.50]{aktop = '+','-','*','/'} \ncarc[arcangle=0]{calc}{null}\ncput*[npos=.50]{aktop = '\textbackslash 0'} \ncarc[arcangle=0]{null}{alu} \ncarc[arcangle=0]{alu}{read}\ncput*[npos=.50]{calc\_done$\uparrow$} \ncarc[arcangle=0]{alu}{done}\ncput*[npos=.50]{aktop == DONE} \end{document}