Skip to content

Repozytorium do projektu w ramach przedmiotu 'Teoria Kompilacji i Kompilatory' na AGH z 2022 roku

License

Notifications You must be signed in to change notification settings

lukaszsuchan/Kompilatory-2022

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 

Repository files navigation

Kompilatory-2022

Repozytorium do projektu w ramach przedmiotu 'Teoria Kompilacji i Kompilatory' na AGH z 2022 roku

symbol token
🍎 int
🍌 long
🍇 float
🍒 double
🍓 char
🍉 string
boolean
🌟 void
⚡️ null
true
🚫 false
assign
↪️ for
🔄 while
if
else
💡 switch
🛄 case
📬 return
💥 then
do
🍞 default
🍺 break
📞 call
🅰️ and
🅾️ or
not
plus
minus
✖️ times
devide
🌗 equals
🌝 greater
🌚 lower
🌒 greter_or_equal
🌔 lower_or_equal
🌜 l_parenthesis
🌛 r_parenthesis
🤜 l_square_bracket
🤛 r_square_bracket
🔚 end
🖨️ print
⚙️ function
[_a-zA-Z][_a-zA-Z0-9]* identifier
\d+.{0,1}\d* number_unsigned
\".*\" text
  • "Program" = "Blok"

  • "Blok" = ["Blok_deklaracji"] 'end' ["Blok_instrukcji"] 'end'

  • "Blok_deklaracji" = {"Dek_fun"}
  • "Dek_fun" = 'function' ("Var_sym" | 'void') 'identifier' 'l_parenthesis' {"Var_sym" 'identifier'} 'r_parenthesis' {"Instrukcja"} 'return' "Wyrazenie" 'end'

  • "Blok_instrukcji" = {"Instrukcja"}

  • "Instrukcja" = ("Instr_inicjuj" | "Instr_podstaw" | "Instr_wywolaj" | "Instr_if" | "Instr_while" | "Instr_for" | "Wypisz" | "Instr_switch") 'end'

  • "Instr_inicjuj" = ("Var_liczba_sym" 'identifier' 'assign' ("Liczba" | 'null')) | ('string' 'identifier' 'assign' ('text' | 'null'))
  • "Instr_podstaw" = 'identifier' 'assign' ("Wyrazenie" | 'null')
  • "Instr_wywolaj" = 'call' 'identifier' 'l_parenthesis' {"Wyrazenie"} 'r_parenthesis'
  • "Instr_if" = 'if' "Warunek" 'then' "Instrukcja" {"Instrukcja"} ['end' 'else' "Instrukcja" {"Instrukcja"}]
  • "Instr_while" = 'while' "Warunek" 'do' {"Instrukcja"}
  • "Instr_for" = 'for' "For_warunek" 'do' {"Instrukcja"}
  • "Wypisz" = 'print' ("Wyrazenie" | 'text')
  • "Instr_switch" = 'switch' 'l_parenthesis' "Wyrazenie" 'r_parenthesis' "Case_blok" {"Case_blok"} "Case_default"

  • "Case_blok" = 'case' 'l_parenthesis' "Wyrazenie" 'r_parenthesis' 'then' {"Instrukcja"} ['break'] 'end'
  • "Case_default" = 'default' 'then' {"Instrukcja"} 'end'

  • "Var_sym" = ("Var_liczba_sym" | 'string' | 'boolean' | 'char')
  • "Var_liczba_sym" = ('int' | 'long' | 'float' | 'double')

  • "Wyrazenie" = ("Skladnik" {"Oper_add" "Skladnik"} | 'true' | 'false')
  • "Skladnik" = "Czynnik" {"Oper_mul" "Czynnik"}
  • "Oper_add" = ('plus' | 'minus')
  • "Oper_mul" = ('times' | 'divide')
  • "Czynnik" = ('identifier' | "Liczba" | "Instr_wywolaj" | "Wyr_w_naw")
  • "Liczba" = ['minus'] 'number_unsigned'
  • "Wyr_w_naw" = 'l_parenthesis' "Wyrazenie" 'r_parenthesis'

  • "Warunek" = ['not'] "Warunek_prosty" {"Oper_war" "Warunek_prosty"}
  • "Oper_war" = ('and' | 'or')
  • "Warunek_prosty" = "Wyrazenie" ("Oper_porownania") "Wyrazenie"
  • "Oper_porownania" = ('equals' | "not_equals" | 'greater' | 'lower' | 'greter_or_equal' | 'lower_or_equal')
  • "not_equals" = 'not' 'equals'

  • "For_warunek" = "Instr_inicjuj" "Wyrazenie" "Instr_podstaw"



Przykład kodu

⚙️ 🍎 add🌜🍎 a 🍎 b🌛
📬 a ➕ b 🔚

🔚

🍎 x ⏮ 5 🔚
🍎 y ⏮ 6 🔚

🍎 wynik ⏮ ⚡️ 🔚
wynik ⏮ 📞 add🌜x y🌛 🔚

⏸ wynik 🌘 10 💥
🖨️ "Wiecej niz 10" 🔚 🔚
⏯
🖨️ "Mniej niz 10" 🔚 🔚

🔚

About

Repozytorium do projektu w ramach przedmiotu 'Teoria Kompilacji i Kompilatory' na AGH z 2022 roku

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages