; TeX output 2000.02.14:0932y?DtGGcmr17synqtax.texbEine>.7tUbsersicqht(XQ cmr12BerndWVorscrh̷7.Juli1997*>Nff cmbx12Inhaltsverzeichnis!6>1VLEinleitung>K`y cmr10ZurMOBeschreibungvonZusammenhoangeninformalsprachlichenSystemen, ndet >hoau gdiesogenannteBachus{Naur{F*ormkurzBNFVerwendung.Vondieser>(textlichen)DarstellungausgehendwirdgeradeimZusammenhangmithooher->endProgrammiersprachengerneeinegra scheBeschreibungzurV*erdeutlichung>herangezogen.UHSolche': cmti10Syntaxdiagr}'ammesindintuitivverstoandlichundverdeut->lichenTaufanschaulicheW*eisedenformalenAufbauderjeweiligenProgrammier->sprache.MDasJAFilesyntax.texermooglichtdaseinfacheErstellensolcherDiagrammein>L5ffٓRcmr7A͉TU>'ExX-Dokumenten. StattmitgeometrischenOb8jekten(Linien,Kreise,etc.)zu>arbGeiten,GnutztderAnwenderdazuBefehle,dieschonimQuelldokumentdiezu>illustrierendenUUKontrollstrukturenwiederspiegeln.>2VLBevorffesfunktioniert.3..>Um>dieMooglichkeiten>vonsyntax.texnutzenzukoonnenmudieDateivordem>erstenzusetzendenSyntaxdiagrammdurchDokument(eingefGougtwerden.DaesindervorliegendenV*ersion0.02noGchauf>einenBefehldesPaketsfancybGox.styzurGouckgreift,mudiesesamAnfangder>eigenenLEDateiaktiviertwerden.WiefGourallePaketegeschiehtdiesdurchden>Befehl:UU\usepackage{fancybox}.>3VLGrundelementeffvonsyntax.tex>AbgesehenGvonHilfskonstrukten,insbGesondereLinienundPfeilen,bestehenSyn->taxdiagrammetausT*erminalsymbGolen,denelementarenGrundbausteineneiner>Programmiersprache,undSyntaxvqariablen.LetzterestehenalsPlatzhalterfGour>syntaktischeUUKonstruktionen.1*y?MBeideoGrundelementesteheninnerhalbderUmgebungSyntaxdiagrammmit >denUUBefehlen\TerSymund\SynVarzurV*erfGougung.MDie8UmgebungSyntaxdiagrammerzeugtzunoachsteinleeresSyntaxdiagramm,>also4YeinenvonlinksnachrechtsverlaufendenPfeil.AninnerenBefehlenstehen>unteranderemelementareT*eilstrukturenvonSyntaxdiagrammenbGereit.Einige>habGenkeineParameterunderzeugenbGeispielsweiseLinienoGderPfeile,\TerSym>undn\SynVarhingegenerhaltenalsParametereinenT*ext.DadieseBefehlestets>innerhalbxdesumgebGendenPfeilsauftreten,wurdeninderfolgendenfUbersicht>dieinnerenElementedurchLeerzeichenvonderoauerenUmgebungabgegrenzt.>DieselZwischenroaumesindimendgGoultigenDiagrammunerwGounscht.Befehleund>UmgebungeninSyntaxdiagrammensolltendahermiteinemKommentarzeichen>(%)ۣbGeendetwerden,fallsZeilenumbrGoucheimEingabGetextvorgenommenwer->den.g$[dY\begin{Syntaxdiagramm}Y\end{Syntaxdiagramm}L ffff a Pff a ߞO line10-M fff5\Liniee̞+xff[2ff amff aބff amͬ-x\PfeilR`+xff[2ff amff aͬ-ބff am-\PfeilL`+xff[2ff amͬmff aބff am-̥\Ellipse[L ff*jff a<ff aS...ÞPff a԰ff a5ͬ-荍\Leerk "ff ff aff a0ͬ-tff5Í\TerSym{xxxx}A \ff[ff a͍)< lcircle10 )h&dfe? ͍ˬˬh&dfe? i1feَḯfeَ\xxxxöff a%Eͬ- X\SynVar{xxxx}A  {ffTff a)~ffLppffUxxxxpffffffLýff a%Lͬ-i׍MAus(mobigenGrundelementenundvertikqalenLinienwerdenalleSyntaxdia->gramme۷aufgebaut.DievertikqalenLinienundPfeilesindprinzipiellunterden>NamenO\LinieO{x},\LinieU{x},\PfeilO{x}und\PfeilU{x}ansprechbar,Owo->bGeixdiejeweiligeLoangefestlegt,siesindjedochnurinternnotwendig.Um>dieL5ffA͉TU>'ExX{BeschreibungeinesSyntaxdiagrammskompaktzuhaltenexistieren>schlielichnoGchvierabkGourzendeSchreibweisen.Essinddiezusammengesetzten>Grundelemente:2 y?hS\TerSymR{xxxx}͟\ff*ff a<ׄff afͬ-͍˞f ˞fh&dfe? ͍!?!?h&dfe? b1feَb̈́feَɟ\xxxx뇤ff aff aͬ-S\TerSymL{xxxx}͟\ff*ff a<ׄff a͍˞f ˞fh&dfe? ͍!?!?h&dfe? b1feَb̈́feَɟ\xxxx뇤ͬ뇤ff aff a- XS\SynVarR{xxxx}͟ {ff*zff a<Єff až_ͬ-̞_~ffLppffUxxxxpffffffLꇫff aff aͬ- {S\SynVarL{xxxx}͟ {ff*zff a<Єff a̞_~ffLppffUxxxxpffffffLꇫͬꇫff aff a-]>4VLStrukturelementeffvonsyntax.tex>AuslEdenGrundelementenalleinlassensichnoGchkeine(bzw.sehrwenige)Syn- >taxdiagramme|aufbauen,esfehltdieMooglichkeit|dieseElementezuverbinden.>ZudiesemZweckstelltsyntax.texAlternativenundWiederholungenbGereit.>FGourbGeideStrukturenexistierenzunoachstBefehle,diejezweiParameteroubGer->nehmen.ImF*alldesBefehls\Alternative{x1}{x2}stehtx1fGourdenTeildes>StrukturdiagrammsbsderaufdemerstenPfad,x2fGourdenT*eilderaufdemzweiten>Pfad"durchlaufenwird.Bei\Wiederholung{x1}{x2}entsprichtx1demwieder->holtenT*eilundx2allem,wasimzurGoucklaufendenPfadauftritt.Dieerzeugten>BilderUUwiederineinerT*abGelle:/x@xS\Alternative{x1}{x2} ʟ?&fflff a„ff a+̈́wff+ \ ffk^Qff aͬ-x1ff a򍍍^Qff aͬ-x2ff a5[̈́wff5[ \ ffhff a"zff a#sͬ-":zS\Wiederholung{x1}{x2}͟&fflff a„ff a^Q 6+.%ff^Qff a-x1ff a򍍍^Qff ax2ͬff a5[.%ffhff a"zff a#s-1?MFGourWiederholungenistdieseKonstruktionausreichend,bGeiAlternativen>solltennjedoGchmehralszweiPfademooglichsein,dieswirddurchdieUmgebung>Alternativen~9realisiert.SieVoubGernimmtoahnlichobigenBefehlenzweiParame->ter.rx1enthoaltwiegehabtdenerstenPfad,x2hingegendenletztendermoogli->chen{Pfade.AlleweiterenPfadewerdeninnerhalbderUmgebunggetrenntdurch>\\angegebGen,alsowieineinereinspaltigen\tabular{Umgebung,wobeiauch>aufUUdieletzteZeileeinabschlieendes\\folgt.7[3dY\begin{Alternativen}c{x1}{x2}cx3\\Y\end{Alternativen}̓,UYVffڪpff aƄff a"̈́tff"#̈́$ff왕Uff aͬ-x1 ff aUff ax3ff aUff aͬ-x2 ff a_̈́tff_#̈́$ff(ff a,=ff a-̞ͬ-3Oy?>5VLSetzenffvonSyntaxdiagrammen>PraktischN5gehtmannunsovor,dainnerhalbderoauerenUmgebungimeinfach- >stenÈF*alleineFolgevonSyntax{V*ariablenundTerminal{SymbGolenaufgelistet>wird.UUHierzuverwendetUUmandienachrechtsgerichtetenV*arianten.ҍdY\begin{Syntaxdiagramm}%c\TerSymR{xx}%Y\end{Syntaxdiagramm}݌\$\ffjgff aff a-ͬ-͍- -h&dfe? ͍""""h&dfe? m1fem̈́fe\xxff a!ff a#Kͬ-+SydY\begin{Syntaxdiagramm}%c\SynVarR{xx}%Y\end{Syntaxdiagramm}݌ $ffjgff aff a-ͬ--~ff[ppffUxxDpffffff[ff a$ff a!Kͬ-1EKdY\begin{Syntaxdiagramm}%c\TerSymR{xx}%c\SynVarR{xx}%Y\end{Syntaxdiagramm}݌0ffjgff aff a-ͬ-͍- -h&dfe? ͍""""h&dfe? m1fem̈́fe\xxff a!ff a#Kͬ--K~ff[ppffUxxDpffffff[@ff aLDff aMiӞͬ-#qǍMEtwas1anspruchsvollerkoonnenSyntax{V*ariablenundTerminal{SymbGolein>Strukturen> auftreten.IndiesemF*allsorgtdieumgebGendeStrukturfourdienot->wendigena/Pfeile,manverwendetalsodieungerichtetenBefehle\TerSym{}und>\SynVar{}:/FdY\begin{Syntaxdiagramm}%c\Wiederholung%m{\TerSym{x1}}%m{\SynVar{x2}}%Y\end{Syntaxdiagramm}݌'ÄHffjgff aff a- 6R-`ff-ff a-͍   h&dfe? ͍!<!<h&dfe? 1fë́few\x1!ff a--ffff a a~ffppffUx2G'pffffff󎎎uͬuff a)ff,U-`ff-ff a8fff a9Ǧ-IbdY\begin{Syntaxdiagramm}%c\Alternative%m{\TerSym{x1}}%m{\SynVar{x2}}%Y\end{Syntaxdiagramm}݌6<ffjgff aff aR̈́ ffR ,f _ff:-ff aͬ-͍   h&dfe? ͍!<!<h&dfe? 1fë́few\x1!ff a--ffff aaͬ- a~ffppffUx2G'pffffff󎎎uff a)ff,Ǘ ff,U ,f _ff-ff a8fff a9Ǧͬ-)EMIna0derAlternativen{UmgebungmGouendieinnerenPfadeselbstfGourihre>PfeileUUsorgen(hier:T*erminal{SymbGolx3).8E2dY\begin{Syntaxdiagramm}%c\begin{Alternativen}%m{\TerSym{x1}}%m{\SynVar{x2}}%m\TerSymR{x3}\\%c\end{Alternativen}%Y\end{Syntaxdiagramm}݌,}Y`ffjgff aff aR̈́ffRr{ffr|-ff aͬ-͍   h&dfe? ͍!<!<h&dfe? 1fë́few\x1!ff a-ff aͬ-͍   h&dfe? ͍!<!<h&dfe? 1fë́few\x3!ff a-ffff aaͬ- a~ffppffUx2G'pffffff󎎎uff a)ff,Ǘff,Ur{ff-ff a8fff a9Ǧͬ-8" MSchlielichkoonnenauchStrukturenbGeliebigkombiniertundverschachtelt>werden:4&נy? x?>dY\begin{Syntaxdiagramm}% c\Alternative%m{\Wiederholung%x{\TerSym{x1}}%x{\TerSym{x1}}}%m{\SynVar{x2}}%Y\end{Syntaxdiagramm}݌'Y}ffjgff aff aR̈́"ffR ,f _ffݒF-ff aͬ- ff a 6pI'ffff aR2-͍#R2 #R2h&dfe? ͍77h&dfe? ).1fe).̈́fe(\x18fff a􍍍ff a͍#R2 #R2h&dfe? ͍77h&dfe? ).1fe).̈́fe(\x18fͬ8fff aCsI'ffCǦff aO)5ff a.!-ffff aa- a~ffppffUx2G'pffffff󎎎uff a)ffZẄ́"ffZW ,f _ffZĄff aeSff agMͬ-8>MDievielenKommentarzeichen(%)inderEingabGesindnichtanallenStel- >lennotwendig.EsistabGerinjedemF*alleinfacheralleZeilenmiteinem%zu>bGeenden,Xalsjeweilszu7uouberlegen,obeseventuellXweggelassenwerdenkoonnte.>Sollteeinnotwendiges%-Zeichenvergessenwerden,soerscheintanentsprechen->derAStelleimDiagrammeinLeerzeichen.UmgekehrtweisensolcheBrGoucheim>DiagrammUUaufvergesseneKommentarzeichenhin.#qǍdY\begin{Syntaxdiagramm}%c\TerSymR{xx}c\TerSymR{xx}Y\end{Syntaxdiagramm}݌0ffjgff aff a-ͬ-͍- -h&dfe? ͍""""h&dfe? m1fem̈́fe\xxff a%?kff a&ͬ-͍0 0h&dfe? ͍EEh&dfe? 61fe6̈́fe6]\xxEff aQ]ff aRͬ-MSollteaeinSyntaxdiagrammzulangfGoureineeinzelneZeilewerden,sokqann>einڥT*eildiagrammzueinerSyntax-Variablezusammengezogenwerdenunddiese>inUUeinemweiterenDiagrammaufgeschlGousseltwerden.MIstdiesnichterwGounscht,sokqanndieSyntaxdiagramm-Umgebungmiteinem>optionalenParameteraufgerufenwerden.DerInhaltdesParametersersetzt>dann]alsEnde{SymbGoldenabschlieendenPfeil.V*erwendetmandenBefehl>\DotsŲsokqannmandasDiagrammmiteinemweiterenindernoachstenZei->lefortsetzen.Dieseskqanndurcheinevoranstehendes\quadetwaseingerGouckt>werden.3dY\begin{Syntaxdiagramm}[\Dots]%c\TerSymR{x1}Y\end{Syntaxdiagramm}Y\quadY\begin{Syntaxdiagramm}%c\TerSymR{x2}Y\end{Syntaxdiagramm}Lu'Tff㤍*Sff a ff a!qͬ-͍+q +qh&dfe? ͍@@h&dfe? 2-m1fe2-m̈́fe1Sԟ\x1AVff aLbS...*Tff a*ff a+rͬ-͍5r 5rh&dfe? ͍JJh&dfe? <-n1fe<-n̈́fe;S՟\x2KWff aVbff aWuͬ-5qǍMSchlielichi]gibtesdenStapGelBefehlderzweiT*eileeinesDiagrammsunter->einander3setztundsiedurcheinenrGoucklaufendenPfeilverknGoupft.Oftistdas>AufteilenVohnerGoucklaufendenPfeilallerdingssowohleinfacheralsauch8oubGer->sichtlicher.$ډdY\begin{Syntaxdiagramm}%c\Stapel{\TerSym{x1}}%?{\TerSym{x2}}%Y\end{Syntaxdiagramm}݌Z6ffjgff aff aR̈́ ff-uffǎ - `ff:Lff a?۞ͬ-͍?ۮ ?۟h&dfe? ͍&[&[h&dfe? ן1feן̈́fe>\x1'Sff a WƍLff:ͬff a aff: -Lff a?۞-͍?ۮ ?۟h&dfe? ͍&[&[h&dfe? ן1feן̈́fe>\x2'Sff a2̈́ ff2O -ffǎ82 - `ff8fff aCǥff aE)4ͬ-5:y?>6VLWfeitereffHinweiseM !", cmsy10WEinigeWKonstruktionenerzeugennurdannV*erbindungslinienkorrekter WLoange,wennaufdenPfadenEintroagemitderrichtigenHoohebzw.TiefeWauftreten. ImerstenBeispielzurUmgebungAlternativenKزistdiesnichtWderUUF*all.MWIn]derDateisyntax.texsindeinigeAnmerkungenundeinekleineListeWmooglichertErweiterungen.W*erZeitundLusthatdarfsichgerneaustobGenWundUUdaseineoGderandereerledigen.MWKritik,(AnregungenundeigeneBeitroagesindinjedemF*allerwGounscht.WVielleichtx* ndeichbGeiausreichendemInteressesogardieZeitnoGcheinWwenigUUandiesemPaketzubasteln.!č>7VLKontaktb--------------------------------------Bernd?Worsch?Doberanerstrasse?9918057?Rostockrbernd.worsch@stud.uni-rostock.deemail?preferredb--------------------------biichi-ji---6N;y