fkolenak / FJPCompiller

0 stars 0 forks source link

Aktualni stav prekladace #1

Closed jstrolen closed 8 years ago

jstrolen commented 8 years ago

@Yggdrasil88 @johnny-wolf Takze zase ja Prectete si http://kifri.fri.uniza.sk/~bene/vyuka/kompilatory/prednasky-prezentace/Predn-01-text.pdf Je to sice z nejaky Zilinsky univerzity, ale jsou tam pekne popsany zakladni soucasti analyzatoru, vychazel jsem z toho.

  1. Scanner - lexikalni analyzator: Projde text a vytvori z nej tokeny. Token obsahuje ID tokenu(jeho druh) a lexem (puvodni text zadany uzivatelem), v tom dokumentu je to vysvetleny. Vstupem je tedy String (text programu), vystupem List. Tohle by uz melo fungovat.
  2. Parser - Syntakticky analyzator: Prochazi tokeny a podle gramatiky tvory syntakticky strom. Mirne jsem poupravil gramatiku (program nekonci teckou, ale vsechny bloky konci strednikem; podminene prirazeni zacina "?"; prirazeni ma pred cislem rovnitko navic - napr a = b = c = = 5; ...; viz gramatika nize), ke vsem zmenam jsem mel duvod (mame tu gramatiku slozitejsi nez je klasicka pl/0). I tohle by uz melo z vetsiny fungovat, zitra(dneska) to jeste poradne otestuju. To muzete zkusit i vy. Stahnete si odtud: https://code.google.com/p/structure-graphic/downloads/list jarko a pridejte si ho do projektu jako externi jar knihovnu. Umi to pekne ten vygenerovany strom vykreslit.

Pokud tu knihovnu mate, muzete to primo z mainu spoustet, text programu je v promenne "text". Do konzole to vypise tokeny(lexem a id tokenu - vystup scanneru) a zobrazi okynko se stromem (vystup parseru). Pokud se zada chybny program, budto bude hlasit chybu nebo se zacykli (na to jeste kouknu). Ted uz tedy chybi jen ten strom projit a tvorit z nej instrukce (mozna by bylo snazsi namisto tvorby instrukci rovnou spoustet kod?? == delat interpret, to asi taky muzem??).

BTW napiste jestli chcete ztopit ty OSka

Gramatika:

program -> blok

blok     -> [ "const" identifikátor "=" {identifikátor "="} ( číslo | "-" číslo ) {"," identifikátor "=" {identifikátor "="} ( číslo | "-" číslo ) } ";"]
            [ "var" identifikátor { "," identifikátor } ";"] 
            { "procedure" identifikátor "(" [identifikátor [{"," identifikátor}] ")" blok  } 
            [ příkaz ] 
            "return" [vyraz] ";" . 

příkaz   -> identifikátor "=" {identifikátor "="} vyraz ";" | 
            "call" identifikátor "(" [vyraz {"," vyraz}] ") ;" | 
            "begin" příkaz { příkaz } "end" | 
            "if" podmínka "then" příkaz | 
            "if" podmínka "then" příkaz "else" příkaz | 
            "while" podmínka "do" příkaz | 
            "do" příkaz "while" podmínka ";" | 
            "switch" výraz "case" ( číslo | "-" číslo ) ":" příkaz { ", case" ( číslo | "-" číslo ) ":" příkaz } . 

podmínka -> výraz ("==" | "<>" | "<" | ">" | "<=" | ">=" | "AND" | "OR") výraz | 
            "!(" podmínka ")" . 

výraz    -> term {("+" | "-" ) term } | 
            "?" podmínka "?" výraz ":" výraz . 

term     -> faktor { ("*" | "/" ) faktor } . 

faktor   -> identifikátor | číslo | "-" číslo | 
            "call" identifikátor "(" [vyraz {"," vyraz}] ")" | 
            "(" výraz ")" . 

Update 5. 1. 2016
jstrolen commented 8 years ago

@johnny-wolf
Vim, ze uz ti s tim polezu na nervy, ale mas tam rozhozeny cislovani odstavcu. A zkus jeste kouknout na tu gramatiku. Třeba hned u bloku bych čekal, že ["const" ..., ["var" ..., {"procedure" ..., atd. budou pod sebou

Pochopili jste jak se ma jmenovat ten zip?

johnny-wolf commented 8 years ago

FJP dokumentace.pdf

fkolenak commented 8 years ago

Práci odevzdávejte pomocí portletu na této stránce. Pro přehlednost prosím abyste práci odevzdávali jako archiv, pojmenovaný jménem vaší skupiny. Do archivu nezapomeňte vložit všechny náležitosti - vytvořený program, zdrojové texty, dokumentaci v elektronické podobě (nezbytnou součástí je gramatika překládaného jazyka) a jakékoliv další potřebné soubory.

No jake mame jmeno skupiny? :smile:

johnny-wolf commented 8 years ago

btw v odevzdávání je skupinové odevzdání a to nemá zatim náš tým, ale všechny ostatní ano, Jinak bych to udělal jako všechny ostatní týmy a zvolil Ko-Str-Scho nebo tak něco

fkolenak commented 8 years ago

Kapitola 3 Překlad a spuštění aplikace ty tecky prosim a je to komplet.

johnny-wolf commented 8 years ago

FJP dokumentace.pdf

fkolenak commented 8 years ago

Takle: https://www.dropbox.com/s/gfz0gsq1hv94g11/dope.PNG?dl=0

johnny-wolf commented 8 years ago

FJP dokumentace.pdf

fkolenak commented 8 years ago

Blizko presto vedle... Zarovnej to aby to bylo tak jak je to ve zbytku dokumentu. Prikazum pridej taky odrazky, prikazum a nazvu PL0_Compiler.jar pridej styl Italic

johnny-wolf commented 8 years ago

FJP dokumentace.pdf

jstrolen commented 8 years ago

Skupinove odevzdani - takze nekdo zalozi skupinu a vsichni to tam dame? Az budete mit final dokumentaci tak to zabalte jak to ma byt a nekam to sem dejte.

fkolenak commented 8 years ago

@jstrolen @johnny-wolf Co takle? https://www.dropbox.com/s/v1yb410fwoqg2lz/Ko-Str-Scho.zip?dl=0 Nekdo stahnete a odevzdejte, absolutne netusim co a jak.

A nejde o to to tam proste postnout? Podle toho jak jsem to pochopil tak se to proste odevzda a nic vic se neresi.

johnny-wolf commented 8 years ago

tak všichni povinně přidat k týmu Ko-Str-Scho na portalu, já to teda odevzdam

jstrolen commented 8 years ago

myslim ze mas spatne strukturu, build i jarko ma byt v rootu

fkolenak commented 8 years ago

Jak? Kde?

johnny-wolf commented 8 years ago

na odevzdávání na portálu v FJP (samostatná práce) úplně dole vybrat práci (vybrat tým) nebo tak nějak

fkolenak commented 8 years ago

:D Kdo by rekl ze odevzdani bude takova pakarna... tak to udelej spravne pls

Uz bych mel by v tom teamu

johnny-wolf commented 8 years ago

jsem to odevzdal... ale podle zadání by tam měl bejt ještě texťák s tim co je co, a to tam neni, chjo. zákaz odevzdání víckrát jako bonus

fkolenak commented 8 years ago

Textak tam byt nemusi pokud je to jasny. Jako ma tam vsechno co tam b7t m8 jen je to trochu vic zabaleny. Ja bych to uz neresil

jstrolen commented 8 years ago

@Yggdrasil88 Nahodil jsem sem ten zip, myslim ze by to takhle melo byt, koukni na nej

fkolenak commented 8 years ago

Ze by bylo nacase uzavrit to tu? :smile: :+1:

jstrolen commented 8 years ago

OK, diky za spolupraci, s trochou stesti se uvidime u zkousky.