razclenitev to je proces preverjanja niza z namenom identifikacije polij operatorjev operandov in delimetrov program ki to uvaja se imenuje razclenjevalec vsak tak sistem mora imeti razclenjevalec toda pogosto je razclenjevalec so ponavadi prej nejasen kot jasen prvi cilj pri sintakticnih testiranj je test razclenjevalec ni pa nujno da vemo kako je razclenitev opravljena da bi kreirali teste pri razclenjevanju sintakticne analize te analize se uporabljajo za test pravilnosti sintakticne analize ki jo opravi program semanticne analize sintakticne analize niso nujno navezane na sintakticne analize veliko bolje pa to opravimo s testiranjem domen za numericna polja ukazna predstavitev ukaz se razcleni njegova komponentna polja pa se semanticno analizirajo izvrsitev ukaza se imenuje ukazna predstavitev jezikoslovna enakost v primeru da anglesko abecedo zamenjamo z na primer cirilico dobimo nov ukazni jezik ki je enakovreden svojemu originalu jezikoslovne analize identifikacija operatorjev in operandov in pretvarjanje le teh v notranji jezik v katerem stevilke navadno ki jih imenujemo znak zamenjajo vsak operator in operand pogosto to imenujemo oznacevanje nicelni zbor zbor f ki ne vsebuje niza niti nicelnega niza glava niza tudi zacetek prvi znak niza z leve proti desni rep niza tudi zacetek zadnji znak v nizu gledano z leve proti desni povezava ce sta a in b niza in je niz c dosegljiv in je med repom a ja in glavo b ja sta a in b povezana z donosom c povezava je razvidna na primer z »juxtapositionom« ali ce sta a in b niza potem je a b lahko tudi a b beremo kot »a ali b« to pa pomeni a niz ali b niz ali pa oboje eksponent ce je a niz potem a na n pomeni natancno n ponovitev a ja plus eksponent ce je a niz potem a pomeni eno ali vec ponovitev niza a a aa aaa ay zvezdica ce je a niz potem a pomeni nic ali vec ponovitev niza a l a aa unija ce sta a in b niza nizov potem je a i b unija a in b kar pomeni vsi nizi a ja in b ja brez ponovitev obglavitev ustvariti nov niz z odstranitvijo nic ali vec znakov z glave niza skrajsanje ustvariti nov niz z odstranitvijo nic ali vec znakov z repa niza podniz niz a je lahko podniz niza b ce lahko a dosezemo z obglavitvijo ali in skrajsanjem b ja bnf oblika backus naur nacin definiranja nizov z uporabo nadoperatorjev in oznacb z malenkostnimi spremembami in razsiritvami oznacb bnf definicija definicija serije nizov z uporabo definicijskega operatorja nicel povezav ali eksponentov zvezdice nicelne serije bnf definicije se obicajno pisejo z vrha toda na koncu se morajo zokroziti da bi dolocile aktualen znak iz abecede izbirno polje alternativna za izbirna polja je da uporabljajo oklepaje kot v primeru single wild card oznacena je z » « kar pomeni vsak samostojen znak iz abecede multiple wild card oznacena z » « kar pomeni vsako legitimen vnos iz abecede vendar pa to ni isto kot zvezdica operator interpretacija je odvisna od samega konteksta in ne kako drugace so pa to zelo primerna mesta z iskanje hroscev in odpravljanje le teh relacije in model splosno pretvorba bnf specifikacije v graf je mehanicna in zaradi tega primerna za avtomatizacijo ponovljene aplikacije stirih sledecih transformacij opravljajo to delo serijska povezava bnf odsek se sestoji iz polja a in b in je modeliran s pomocjo zveze katere vrednost je sledeca field a field b pararelna ali izkljucitvena povezava bnf odsek se sestoji iz polja a b c n in je modeliran s pomocjo razdelitvenega kolena pri oznacevanju kolen se ne obremenjujemo s krogi za kolena ker le ta nimajo tako pomembnih lastnosti eksponent iz nonzero eksponent kot field n m je interpretiran kot zanka ki se izvede vsaj n krat in najveckrat m krat zreducirali smo vsako od zankajocih stetij za ena ker se polje v zanki pojavi na dnu zveze eksponent iz nicle operator zvezdica je po tej razlagi zanka od do neskoncno obstaja vec moznih resitev alternativnih vendar enakovrednih modelov za zankanje nic krat ali veckrat prikazujemo jih na desni strani spomnimo se da je l nicelni niz operator zvezdica je samo zanka od do neskoncno kar je prav tako a l s taksnimi ukrepi lahko ustvarimo modele za vnasanje podatkov na zelo razlicne nacine od moznih oblik prvi tak primer je stevilka socialnega zavarovanja le ta se sestoji iz treh podpolij med temi polji je dovoljena skoraj vsaka omejitev pod pogojem da to niso stevilke toda ta vrsta bnf oblike ni edinstvena lahko jo napisemo oziroma ustvarimo na mnoge razlicne vendar se vedno enakovredne nacine tu ni tocno oznaceno in zapovedano koliko razmejitev je dovoljeno toda poizkusno smo dolocili za davcni paket da ni nujno da je sploh kaksna omejite med polji toda irs ova pravila za pravilno obliko davcne stevilke je manj tolerantna in veliko bolj komplicrana ker vsebuje prepovedi o pojavljanju dolocenih stevilk na dolocenih mestih kakor tudi semanticne omejitve o numericnih vrednostih polj kolena kolena so samo tocke kjer vhodna zveza vstopa in izhodna izstopa to pomeni da so to sticisca ali odcepi ponavadi oboje »razcepno« koleno pomeni ali operator zveza link to pomeni ce sta a in b v povezavi ustvarjata neko zvezo med seboj relation vrednosti zvez le te so pomemben del bnf specifikacij vrednost zveze je lahko ime naslednjega dela specifikacije z lastnim grafom ali pa je graf prav tako so tudi eksponenti vkljuceni v vrednosti za zanke kakor se pogosto dogaja s temi modeli je da sprva zelimo kratek povzetek grafa v graficni obliki toda ko enkrat postanemo domaci z modelom nam to ni vec potrebno ker to delo opravimo v tekstovni obliki grafa pogosto v praksi naletimo da graf v tekstovni obliki obsega le eno stran ali pa je celo samo en samcat ukaz medtem ko enakovreden graf v graficni obliki lahko obsega cele strani to pa je lahko pogosto bolj motece kot kaj drugega komentar o vlozenem trudu nikakor ne smemo zamenjati trud ki je vlozen da se naucimo bnf oznacb z trudom ki ga bomo vlozili v delo na resnicnem programu vcasih so ideje zelo enostavno razlozljive vendar pa je potrebno veliko truda da se v resnici izvedejo ce pomislimo na idejo o velikem kitajskem zidu se nam ne zdi prav posebno komplicirana oziroma zapletena vecina primerov in vaj v tem poglavju naj bi vzela okoli uro ali dve za predelavo in spozanvanje tehnika splosno sintakticno testiranje ima mnogo vec aplikacij vec kot testiranje tipkanih ukazov toda to je dobra aplikacija za ilustracijo te tehnike kot vedno bomo tudi tokrat zaceli z specifikacijami ustvari cim bolj formalno specifikacijo kot jo lahko za vse ukaze ki jih nameravas testirati in to v katerikoli mozni obliki informacije morajo obstajati sicer programerji in uporabniki ne bodo mogli uporabljati programa ce tega ni pa se pogleda v »help file« ali pa v najslabsem primeru poiscemo ukaze z poizkusanjem razisci ukaze da odkrijes skupne dele ki se navezujejo na vec ukazov kot primer navedimo primer iz ms dos a sledeca polja se uporabljajo v mnogih ukazih addres device directory drive name filename intiger path time to storimo za to da se izognemo odvecnim specifikacijam za skupna polja razisci ukaze da odkrijemo kljuce v ms dos u ima vsak ukaz svoj kljuc to storimo zato da se izognemo ponovitvam specifikacij zacni svoje definicije z kljuci ker so le ti najbolj verjetni kandidati za spremembe skozi slovnicne spremembe npr iz anglescine v francoscino lahko se zgodi da bomo s tem privarcevali nekaj casa pri tem ni nekih pravil zato moramo sami ugotoviti kaj lahko in kaj ne oziroma kaj je mogoce ustvari bnf specifikacije za splosna polja kot so drive razporedi ukaze po narascajoci kompleksnosti pri cemer je kompleksnost merjena s stevilom polj v ukazu in s stevilom nizje stopenjskih definicij na katere se sklicujemo grupiramo ukaze ne razporejamo jih po njihovem operativnem pomenu to bi bilo mogoce ustrezno pri demonstraciji prodaje vsekakor pa ni dobro za testiranje dobro izbrane skupine nam napravijo kreiranje in testiranje testov enostavnejse in nam skrajsajo delovni cas za vsako polje ki ima razlicno vsebino je navadno uporabljena semanticna specifikacija potrebno je definirati vse taksne semanticne karakteristike in odlociti katero testno tehniko se bo uporabilo na primer test domen potrebno je napraviti nacrt testiranj potrebno je izbrati potek napovedati rezultat dolociti ocenjevalni kriterij potrditi rezultate itd teh prvih osem korakov je potrebno narediti ce uporabljamo avtomaticne generatorje za testiranje ali pa le to opravimo rocno teh osem korakov pomeni do procentov dela pri izvajanju sintakticnih testov toda ne smemo zaradi bistrosti opracijskega sistema pri takih stvareh sklepati enako tudi za aplikacijo ki je podvrzena nasim testiranjem hirearhija zascite stebelna zascita ne bo uporabna ker stebla nimajo pravih lastnosti mi pa potrebujemo zvezno zascito ker imamo zanke bomo uporabili tudi teste zank cisto testiranje sintakse sintakticne teste delimo na dva dela ciste in umazane cisto testiranje pomeni zascito grafov plus dodatne teste za zanke to pa je veliko lazje storiti kot opisati nasa naslednja serija testov naj bi preverila zanke ne moremo zamkati nickrat kakor cisto testiranje ker bi s tem krsili specificirano sintakso ali je bila vsaka zanka testirana s primerom da in zato ni potrebno nikakrsno dodatno testiranje tipicne vrednosti so specificne za vsako aplikacijo tako da ni smiselno preizkusanje brez podporne statistike poleg tega se tipicne vrednosti ne izplacajo pri iskanju hroscev vendar pa so dobre ker vzbujajo ljudem zaupanje kako pa je z maksimalnimi vrednostmi operatorja in sta pravo povabilo za lov na hrosce prav nicesar v racunalniku ni kar bi bilo neskoncno zato mora obstajati maksimalna vrednost potrebno je najti pravilo implicitna ali eksplicitno in napraviti teste za te primere in na kaksne hrosce racunamo ko se odpravimo na »lov« za in bili so casi ko se je program sesul samo zaradi napacne postavitve limita to pa je dandanes zelo netipicen hrosc v danasnjih programskih paketih programerji poznajo in se izogibajo taksnim problemom najpogostejsi hrosc je povzrocen s strani dveh ali vec programerjev z razlicnimi oznacbami maksimalnih vrednosti en programer ocenjuje limit z drugi uporablja in tretji meni da je dovolj hrosc ki ga s tem dobimo se pojavlja prav zaradi teh neenakosti grobo testiranje sintakse nas cilj pri taksnem testiranju je dvojen preizkusiti dober primer sintakticne napake v vseh ukazih z namenom da zlomimo program izsiliti vsako diagnosticno sporocilo ki ustreza ukazu ki bo izvrsen ce smo dobro opravili prvo nalogo bomo zanesljivo opravili tudi drugo vendar pa je vseeno dobro preveriti najprej moramo zakljuciti teste zank tukaj je nekaj primerov e za grobo primere z maksimumom dobimo e ti nasi testi imajo samo eno napako v vsakem primeru ostala polja pa so teko preprosta kot jih lahko le ustvarimo cista testiranja bi morala biti sprejeta in posledicno bi program moral prikazati vse znake ce tu ni nobenih hroscev obstaja se vec razlogov zakaj imamo samo po eno napako v grobem sintakticnem testiranju vendar pa bomo o tem govorili kasneje grobo testiranje je lahko sestoji se iz nekaj preprostih pravil vsaka bnf specifikacije je drevo delo zacnemo na vrhu in ga koncamo na dnu pri koreninah kjer so resnicni znaki drevo se sestoji iz treh stopenj na vrhu drevesa imamo nekaj sintakticnih elementov direktno definiranih in ostale ki so definirani z specifikacijo nekje nizje v drevesu tukaj je primer bnf specifikacije za ms dos copy ukaz original je skoraj povsem identicen z nekaj razlikami v navedbah level copy copy s source n s destination l source l destination l drivename a i bi z aibi z l path dir name m l filename fl alphas l dir name dr alphas l ext fl alphas l dr alphas aibic zi aibic zi i i i i l fl alphas dr alphas i i i prvo polje je kljuc copy ce je bil to prvi ukaz ki sem ga testiral bi napad zacel direktno na njega vsi ms dos ukazi se zacnejo z kljucem ce je prepoznava kljuca napacna je malo verjetno da bodo ostali ukazi delovali kaj lahko naredimo narobe z kljucem ce se odlocimo za testiranje kljuca lahko ga izpustimo napisemo ga skoraj pravilno toda za eno crko prekratko npr cop napisemo ga predolgo npr copyme dober kljuc vendar napacen za ta ukaz npr comp taksne vrste hrosci so zelo neobicajni pri dobrem programu ostali ukazi naj bi bili brez napak zato vzamemo naslednje teste t cop s a in t copyme s a nekaj komentarjev o teh dveh testih verjetno ste opazili da sem izbral najpreprostejso mozno verzijo z izlocanjem vseh podsekvencnih polij ki sem jih lahko to je koristno zato da nebi bili ti ukazi zavrnjeni zaradi napacnih razlogov uporabimo tudi »wild card operator« oziroma operator zvezdica ker je ta pogosto uporabljen in nam da lahko koristne rezultate ce pa se mu hocemo izogniti na tej stopnji uporabimo nekaj kot npr filename tst to nas pripelje do naslednjih dveh testnih primerov t copy a in t copy s s a prvi test je zavrnjen kar je tudi prav toda drugi je sprejet kaj se je zgodilo ali je specifikacija napacna ali pa je model nepravilen v nasem primeru je kriv model vsebovati bi moral s q pri cemer je q maksimalno stevilo delimetrov enako znakov manj kot v ukazu ali naslednja stvar je da zamenjamo polja imamo vec moznosti napacni preklop v tej poziciji prevec preklopov oba napacna preklopa pri preverjanju testov je avtor odkril da ni ustrezno sledil svojem modelu specifikacija ki ustreza primeru ni taksna kot je prikazana zato je bolj pravilna specifikacija sledeca copy copy s q yi yg source source n s destination in kako lahko zmesamo polje source nase moznosti so sledece brez zacetka vira prevec zacetkov virov sintakticna napaka v viru semanticna napaka v viru poizkusanje z plus znakom avtor se je ukvarjal strogo z vsako napako posebej za to navaja dva razloga in oba sta pomembna prevec testov pri tipicnih sistemih ki vsebujejo nekaj sto uporabnikov in operatorske ukaze lahko dnevno izvrsimo okoli testov na dan celo z avtomatsko izvrsitvijo je to velikanska stevilka dvojne napake pa bi nas verjetno pripeljale do stevilke kaj sele trojne razveljavljanje napak teoreticno je nemogoce narediti generator grobih testov ki bo garantirano izvajal le grobe teste z vecstevilcnimi napakami se ne poveca samo stevilo testov temvec se enormno poveca tudi stevilo laznih alarmov napoved rezultata poznamo dve mozni izdaji napovedi rezultata cisti proti umazanemu testu napoved rezultata za cisti test je dolocen s testiranim ukazom in pomenoslovjem tukaj ni splosnih pravil to moras narediti za umazane teste pa je napoved rezultata zelo preprosta ukaz zavrnjen prijetna in neprijetna odstopanja vsako odstopanje testiranja skladnje lahko naredi opravilo lazje in kar nekaj jih lahko naredi opravilo veliko tezje programi ki kazejo neprijetna odstopanja so ponavadi v okvari in zato testiranje skladnje tezi k dobremu koncnemu rezultatu formalna zgradba nekateri ukazni jeziki kot npr unix imajo formalo tocno predpisano strukturo zgradbo namesto vec sto specializiranih ukazov so jeziki sestavljeni iz nekaj ukaznih segmentov ki pod dolocenimi pravili za sestavljenje the segmentov oblikujejo zeljeni ucinek nasprotno operacijski sistem kot ms dos ki nima celotne formalne strukture ampak le nek pogled na strukturo ukazni jeziki ki imajo jasno doloceno formalno strukturo je ponavadi dovolj testirati segmente in pravila za njihovo sestavljanje brez testiranja vseh moznih ukazov to je se posebej pomembno v umazanem testiranju skladnje ki ne tezi k ustvarjalnosti v nasprotju s formalno strukturo ukaznih jezikov ker imajo jeziki formalno strukturo je ponavadi zelo lahko poiskati popolnoma izcrpen opis vseh ukazov teste je zelo lahko oblikovati vendar pa ne odkrijejo veliko ukazni jeziki ki nimajo formalne strukture ali za katere se izkaze da so se razvijali tipicno z rastjo so zelo dostopni umazanemu testiranju skladnje prav tako pa tudi tisti ki so v okvari najbolj znan primer za ta tip je dbase'ii iii iv podatkovno osnovan programski jezik za osebni racunalnik za to oblikovani jeziki se pogosto ne zavedajo da so ukazi slabo dokumentirani pomanjkanje strukture naredi avtomatiziranje oblikovanja testa tezko in avtomatizirano umazano testiranje naredi veliko nepravilnih primerov testa sistemi s slabo strukturiranimi comandnimi jeziki se zelo lahko podrejo sesujejo dolocen slovarski opis to so komandni jeziki s tocno doloceniom slovarskim opisom kljucne besede so jasno dolocene podroben opis jezika predpisuje jasna pravila glede na abecedo in na spremenjeno obliko kljucne besede jasna locitev med slovarskim in sintakticnim vidikom je da je mozno opravljati cim manj testov celoten niz obseznih testov za celotni jezik pod dolocenimi spremebami slovarske oblike predpisujejo zajamceno zaupanje in slovarsko ustreznost vendar ce je podroben slovarski opis potem je lahko avtomatsko preoblikovati niz cistih in umazanih testiranj za en in drugi podrobni slovarski opis kot je pogosto primer so dobri programi veliko manj okvarljivi in veliko lazje jih je testirati nasprotje nasprotje cistega slovarskega besednega opisa je jezik v katerem so slovarski in sintakticni vidiki brezupno zapleteni olikovanje testov je tezko povezanost odvisnost skladnje dobri komandni jeziki ima jasno locitev med skladnjo in pomenoslovjem v slabem jeziku vlada v tem vidiku brezupen nered problem podrobnega opisa je da je skladnja enega polja odvisna od pomenoslovja naslednjega da stvar poslabsamo je skladnja zgodnje povezave v ukazu lahko odvisna od tocno dolocene oblike skladnje ali vrednosti skladnje vzete iz naknadnega polja take jezike je najbolje zakopati skoraj nemogoce jih je uporabljati obvarovati tezko programirati in zelo lahko vdreti vanje namen testiranja takih smeti je prepricati oblikovalce da so spremembe jezika nujne upostevanje aplikacije pokazatelji aplikacije comandni jeziki katerih testiranje skladnje je ucinkovito je presenetljivo navaden del vecine aplikacij voden ukaz programske opreme to je najbolj razumljiva in verjetno tudi najbolj navadna aplikacija ce je sistem voden z ukazom je lahko vecinoma testov organizirano preko testiranja skladnje voden menu programske opreme popularen izmenicen voden ukaz programske opreme je voden menu programske opreme v katerih so akcije vpeljane z izbiranjem predstavlenih moznosti v meniju ne glede na to ali je voden menu ali ne so se vedno potrebno vnesti v podatkovna polja macro jeziki veliko reklamnih paketov programske opreme za osebne racunalnike vsebuje macro jezik to je programski jezik ki se lahko uporablja za avtomatizacijo ponavljajocih operacij nekaj primerov operacijski sistem ms dos operacijski sitem shell norton desktop for windows scripting languague lotus and wordperfect cross talk ti jeziki so pogosto izpopolnjeni in komercialni paketi niso samo za uporabnikovo pripravnost vendar na kratek in jasen nacin izpopolnjujejo veliko kompliciranih potez v njihovi najboljsi obliki so popolnoma izcrpni pa ceprav specializirani programski jeziki s formalno specifikacijo nekomercialna programska oprema ali oprema ki sluzi ozkemu delu industrije lahko tudi vsebuje macro jezik vendar pa ni vedno cisto definiran ali izpopolnjen kot komercialni paketi taki jeziki so ce so del aplikacije vzrok za testiranje skladnje komunikacije vsi komunikacijski sistemiimajo vtisnjen v spomin jezik to je jezik v obliki sporocila vsako sporocilo uporabljeno v komunikaciji mora imeti slovnicno opredeljeno obliko vprasanje podatkovne baze jezikov vsaka podatkovna baza sistema ima uporabljen ukazni jezik ki doloci kaj bo raziskano in kaj prejeto najpreprostejsi dovoljujejo samo eno tipko bolj razviti sistemi dovoljujejo poizvedbe na osnovi oskrbe uporabnika parametrih katere prepoznamo kot utemeljene take utemeljitve imajo obicajno tocno predpisano skladnjo in pomenoslovje kompilatorji in generirani parserji moderni kompilatorji imajo parser toda parser je generiran popolnoma avtomaticno slovarski analizatorji so generirani tudi avtomaticno s formalno specifikacijo najbolj poznana orodja za ta nemen sta lex in yacc maso generirani lexerji in parserji so zelo robustni z vidika testiranja tukaj ni veliko testiranja skladnje tudi ko je popolnoma avtomatizirano lahko zrusimo take lexerje in parserje preden porabimo veliko truda za testiranje skladnje moramo pogledati kako je aplikacija izpopolnjena ce so generirani lexerji in parserji uporabljeni ali planirani bomo imeli gotovo velik uspeh pri uporabi testiranja skladnje take okvare so popolnoma zascitene edina stvar ki se ostane za testiranje je pomenoslovje ki je pogosto opravljeno y drugo tehniko kot podrocje testiranja domneve okvare domneva okvare za testiranje skladnje je najbolje opisana z izrazi domnevnih parserjev ali brezpogjnih ali dolocenih nepopolna skladnja pomembni pogonski operacijski ukazi niso sprejeti ce pa so so razviti nepravilno ker parserji obravnavajo takih povezav posledica je da so ukazni izrazi ponavadi napacni in vodijo do sesutja ali popacenosti podatkov neskladna skladnja skladnja posebno miselno odvisna rezultati in razlicen protisloven parser in naknadna razlaga napak napacna zavrnitev napacna odobritev okvara parserja vodi v zavrnitev pomembnih pogonskih ukazov in odobritev napacnih skladenjskih ukazov slab zakon skladnje pomenoslovja napake v parserju vodijo do zavrnitve ali nepravilne spremembe vrednosti polj abeceda in slovarske okvare slovarska spemenitev oblike vodi v nepravilno razlago vsebine polj omejitve in svarila najvecji mozni problem s testiranjem skladnje je psiholoski in mitoloski ker je oblikovnje avtomatizacije lahka ko je skladnja enkrat izrazena v bnf se stevilo primerov avtomatiziranih generiranih testov meri v sto tisocih vendarle v primeru generiranih parserje taki testi ne morejo biti stroskovno ucinkoviti kot probati vsko mozno ponavljanje vrednosti za zanko prej je bilo mozno programsko opremo osebnih racunalnikov in veliko amaterske programske opreme podreti s takimi testiranji kar pa je redko za profesionalno narejeno programsko opremo danes veliko svarilo je da testiranje skladnje vodi v napacno zaupanje avtomatizacija in orodja mogoce je najbolj privlacna stvar testiranja skladnje lahkota s katero je lahko oblika testa popolnoma avtomatizirana verjetno je zaradi avtomatizacije je tako lahko to tehniko podpreti s komercialnimi orodji celo brez komercialnih orodij sestava testnega jezika ki sprejme bnf specifikacijo prikljucitev prevajalca testnega jezika ni tako velik problem delo zahteva ker v veliko aplikacijah delajo s komercialnimi orodji kot to je se posebej res kjer vlozki navadno ne pridejo preko tipkovnice ampak morajo biti integrirani globoko v aplikaciji povzetek testiranje skladnje je mocnio lahko avtomatizirano orodje za testiranje slovarskih analizatorjev in parserja ukaznega procesorja ukazno vodene programske opreme testiranje skladnje se zacne z dolocitvjo skladnje ki uporablja formalni kovinskijezik med katerimi je bnf najbolj popularen ko je bil bnf enkrat dolocen je bilo generiranje nizov takih testiranj ki pokrivajo diagrame skladnje enostavna zadeva na drugi strani so le povezave dosegale ponavadi izpopolniti teste s cistimi ali umazanimi testi ki so se ukvarjali z eksponentami se posebno dodaten in glavni operator