GithubHelp home page GithubHelp logo

ip's Introduction

Interpretacija programa

Repozitorij za kod koji ćemo pisati.

cheat sheet

KA.py

Kartezijev_produkt: pomoćna funkcija, koristiti kod specificiranja domene i kodomene, te kod Kartezijevih konstrukcija s konačnim automatima

funkcija: pomoćna, služi za provjeravanje da smo doista dobili funkciju sa traženom domenom i kodomenom

petorka: služi samo za rastavljanje na pet sastavnih dijelova KA, kad im hoćemo pridružiti imena

KonačniAutomat:

definicija: slaže konačni automat iz pet njegovih "matematičkih" komponenti

iz_tablice: pomoćna metoda, praktično zadavanje konačnog automata za testove

ispiši, slučajni_testovi, log, debug: pomoćne, za debugiranje

prihvaća: metoda koja rješava problem prihvaćanja za konačne automate (Ac_KA)

provjeri: korisna pomoćna funkcija, za provjeru pridržava li se automat specifikacije

Kartezijeva_konstrukcija_{unija, presjek}: bitno razumjeti kako se matematičke konstrukcije pišu u Pythonu

δ = {}
for r1, r2 in Q:
   for a in Σ:
      δ[(r1, r2), a] = δ1[r1, a], δ2[r2, a]

return klasa(stanja=stanja, abeceda=abeceda, prijelaz=prijelaz, ...)

prirodni: pomoćna funkcija, služi za pretvaranje RI u KA

NKA.py:

fset: pomoćna klasa, koristiti umjesto set za skupove koji su elementi nekih drugih skupova

partitivni_{generator, skup}: pomoćne funkcije za generiranje svih podskupova

relacija: analogno kao funkcija, prima skupove i vraća je li zadani argument relacija između tih skupova

kolabiraj, funkcija_iz_relacije, relacija_iz_funkcije: pomoćne za pretvaranje između funkcijskog i relacijskog zadavanja NKA

unija_familije: pomoćna za funkciju dolazna

dolazna, ε_zatvorenje: korisne funkcije za jedan nedeterministički prijelaz NKA

disjunktna_unija, ε_proširenje: korisno za dodavanje novih elemenata u skup

NedeterminističkiKonačniAutomat: analogno kao KonačniAutomat: bitne metode: definicija, iz_konačnog_automata, prihvaća, partitivna_konstrukcija (.funkcija_prijelaza je pomoćna stvar, za pretvaranje rel<->fun)

optimizirana_partitivna_konstrukcija: bitna razlika u odnosu na partitivna_konstrukcija je što ne konstruira čitav partitivni skup, već samo dohvatljiva stanja

označi, označi1, novo: pomoćne funkcije, za nedeterministička_*

označi: dodaje dodatnu oznaku na stanja, u svrhu disjunktifikacije

novo: stvara novu oznaku za stanje, koja sigurno nije u zadanom skupu

Δ = set()
for q in Q:
    for α in Σ:
        Δ.add((q, α, δ[q, α]))

RI.py

osnovni izrazi i konstrukcije:

prazan: RI prazan skup

epsilon: RI {''}

Elementaran(znak): RI {znak}

Unija(ri1, ri2): RI ri1|ri2

Konkatenacija(ri1, ri2): RI ri1ri2

KleeneZvijezda(ri): RI ri*

(KleenePlus i KleeneUpitnik su implementirani pomoću KleeneZvijezda)

bitno: implementacije svojstava (pozitivan, beskonačan, prazan, trivijalan,...) korištenje NKA.nedeterministička_* za pretvaranje RI->NKA->KA (na razini pseudokoda)

početak: korisno za debug

primjer leksičke i sintaksne analize

>>> import ip
>>> ip.leksička_analiza('''\
glavnica *= 1 + 0.02*vrijeme  # pribroji kamatu
''')
NAME'glavnica'
STAREQUAL'*='
NUMBER'1'
PLUS'+'
NUMBER'0.02'
STAR'*'
NAME'vrijeme'
COMMENT'# pribroji kamatu'
NEWLINE'\n'
>>> ip.sintaksna_analiza('2 <= 3')
['eval_input', ['testlist', ['test', ['or_test', ['and_test', ['not_test', ['comparison', 
  ['expr', ['xor_expr', ['and_expr', ['shift_expr', ['arith_expr', ['term', ['factor', ['power', ['atom_expr', ['atom', 'NUMBER:2']]]]]]]]]], 
  ['comp_op', 'LESSEQUAL:<='],
  ['expr', ['xor_expr', ['and_expr', ['shift_expr', ['arith_expr', ['term', ['factor', ['power', ['atom_expr', ['atom', 'NUMBER:3']]]]]]]]]]
]]]]]]]

ip's People

Contributors

vedgar avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.