Skoči na vsebino

Programski jeziki, prevajanje programov ter izvajanje prevedenih programov

.pdf z nalogami - Vaje-6.pdf

Naloga 6.3

S pomocjo tabele leksemov, prikazi rezultat leksikalnega analizatorja za:

thenelse == error -

Token type Classicifaction number
symbol 1
number 2
= 3
+ 4

Naloga 6.4

Napisi BNF gramatiko (Backus-Naur Form), ki opisuje vmesni simbol . Omenjeni simbol lahko vsebuje znak +, ki mu sledijo natancno dve decimalni stevilki, kjer velja, da prva od niju nista enaka 0. Primeri veljavnih nizov so torej: 15, +72, medtem ko niza +05 ter 123 nista veljavna. Za napisano gramatiko nato prikazi si ntaksno drevo za vrednost +35.

  • simbol | predstavlja "ali" logicni operator
  • Λ (ali ^ v teh zapiskih) - lambda, predstavlja prazno vrednost
<simbol>  ::= <var>; | <var> <var>
<var>     ::= a | b | c | d ... | Λ
<stevilo> ::= <cif1> <cif2> | +<cif1> <cif2>
<cif1>    ::= 1|2|3|4|5|6|7|8|9
<cif2>    ::= 0|<cif1>

Definicija niza, ki lahko vsebuje en ali vec znak.

<niz> ::= <znak> | <znak> <niz>

Naloga 6.5

<niz>     ::= <crka>|<crka><kos>
<kos>     ::= <crka>|<stev>|<crka><kos>|<stev><kos>

<crka>    ::= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|R|S|T|U|V|X|Q|W
<stev>    ::= 0|1|2|3|4|5|6|7|8|9
  A           B           5           C           8
<crka>      <crka>      <stev>      <crka>      <stev>
  |           |           |           |           |
  |           |           |           |         <kos>
  |           |           |         <kos> --------'
  |           |         <kos> --------'
  |         <kos> --------'
<niz> --------'

Naloga 6.6

<izraz>   ::= <var>AND<var> | <var>OR<var>
<var>     ::= w|x|y|z

Zanimiva naloga st. 3

Dana je sledeca BNF gramatika:

<niz>     ::= <a> | <a><b>
<a>       ::= 0<a> | 0
<b>       ::= 1<b> | 1

a) Opisite obliko nizov, ki jih generira ta gramatika? Zapisi se dva razlicna tipicna primera

Niz se vedno zacne z eno ali vec nicel, ter se lahko nato konca ali nadaljuje z eno ali vec enic.

  • 000
  • 00000000000
  • 0
  • 011111111111
  • 000001
  • 00011111111

Zadnja posodobitev: April 3, 2022