Testy ps

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

<applet code="PSAplecik" archive="images/d/dd/PSApplet.jar" width="600" height="480"> <param name="TITLE" value="Wykres funkcji I(p) i P(p)"> </applet>

\batchmode \documentclass[a4paper,11pt]{article} \author{BNF-converter} \title{The Language kotek} \setlength{\parindent}{0mm} \setlength{\parskip}{1mm} \begin{document} \maketitle \newcommandϵ{\mbox{ϵ}} \newcommand{\terminal}[1]{\mbox{{\texttt {#1}}}} \newcommand{\nonterminal}[1]{\mbox{Parser nie mógł rozpoznać (błąd składni): {\displaystyle \langle \mbox{{\sl #1 }} \! \rangle} }} \newcommand::={\mbox{::=}} \newcommand|{\mbox{|}} \newcommand{\reserved}[1]{\mbox{{\texttt {#1}}}} \newcommand{\literal}[1]{\mbox{{\texttt {#1}}}} \newcommand{\symb}[1]{\mbox{{\texttt {#1}}}} This document was automatically generated by the {\em BNF-Converter}. It was generated together with the lexer, the parser, and the abstract syntax module, which guarantees that the document matches with the implementation of the language (provided no hand-hacking has taken place). \section*{The lexical structure of kotek} \subsection*{Identifiers} Identifiers \nonterminal{Ident} are unquoted strings beginning with a letter, followed by any combination of letters, digits, and the characters {\tt \_ '}, reserved words excluded.

\subsection*{Literals} String literals \nonterminal{String}\ have the form \terminal{"}x\terminal{"}, where x is any sequence of any characters except \terminal{"}\ unless preceded by \verb6\6.

Integer literals \nonterminal{Int}\ are nonempty sequences of digits.


\subsection*{Reserved words and symbols} The set of reserved words is the set of terminals appearing in the grammar. Those reserved words that consist of non-letter characters are called symbols, and they are treated in a different way from those that are similar to identifiers. The lexer follows rules familiar from languages like Haskell, C, and Java, including longest match and spacing conventions. The reserved words used in kotek are the following: \\

<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>

The symbols used in kotek are the following: \\

<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}

\subsection*{Comments} Single-line comments begin with {Parser nie mógł rozpoznać (błąd składni): {\displaystyle //}} . \\Multiple-line comments are enclosed with {Parser nie mógł rozpoznać (błąd składni): {\displaystyle (*}} and {Parser nie mógł rozpoznać (błąd składni): {\displaystyle *)}} . \section*{The syntactic structure of kotek} Non-terminals are enclosed between and . The symbols  ::= (production), | (union) and ϵ (empty rule) belong to the BNF notation. All other symbols are terminals.\\

<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
WyrazeniePorownania  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorPorownania}} WyrazenieAddytywne
| WyrazenieAddytywne
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
WyrazeniePorownania  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorPorownania}} WyrazenieAddytywne
| WyrazenieAddytywne
OperatorPorownania  ::= <t>{$<$}</t>
| <t>{$>$}</t>
| <t>{$<$}{$=$}</t>
| <t>{$>$}{$=$}</t>
| <t>{$=$}{$=$}</t>
| <t>!{$=$}</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
WyrazeniePorownania  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorPorownania}} WyrazenieAddytywne
| WyrazenieAddytywne
OperatorPorownania  ::= <t>{$<$}</t>
| <t>{$>$}</t>
| <t>{$<$}{$=$}</t>
| <t>{$>$}{$=$}</t>
| <t>{$=$}{$=$}</t>
| <t>!{$=$}</t>
WyrazenieLogiczne  ::= {\nonterminal{WyrazeniePorownania}} {\nonterminal{OperatorLogiczny}} WyrazeniePorownania
| WyrazeniePorownania
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
WyrazeniePorownania  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorPorownania}} WyrazenieAddytywne
| WyrazenieAddytywne
OperatorPorownania  ::= <t>{$<$}</t>
| <t>{$>$}</t>
| <t>{$<$}{$=$}</t>
| <t>{$>$}{$=$}</t>
| <t>{$=$}{$=$}</t>
| <t>!{$=$}</t>
WyrazenieLogiczne  ::= {\nonterminal{WyrazeniePorownania}} {\nonterminal{OperatorLogiczny}} WyrazeniePorownania
| WyrazeniePorownania
OperatorLogiczny  ::= <t>{$|$}{$|$}</t>
| {\terminal{\ \ }}
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
WyrazeniePorownania  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorPorownania}} WyrazenieAddytywne
| WyrazenieAddytywne
OperatorPorownania  ::= <t>{$<$}</t>
| <t>{$>$}</t>
| <t>{$<$}{$=$}</t>
| <t>{$>$}{$=$}</t>
| <t>{$=$}{$=$}</t>
| <t>!{$=$}</t>
WyrazenieLogiczne  ::= {\nonterminal{WyrazeniePorownania}} {\nonterminal{OperatorLogiczny}} WyrazeniePorownania
| WyrazeniePorownania
OperatorLogiczny  ::= <t>{$|$}{$|$}</t>
| {\terminal{\ \ }}
Wyrazenie  ::= WyrazenieLogiczne
| <t>new}} {\nonterminal{Typ</t>
| {\terminal{new}} {\nonterminal{Typ}} {\terminal{[}} Wyrazenie <t>]</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
WyrazeniePorownania  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorPorownania}} WyrazenieAddytywne
| WyrazenieAddytywne
OperatorPorownania  ::= <t>{$<$}</t>
| <t>{$>$}</t>
| <t>{$<$}{$=$}</t>
| <t>{$>$}{$=$}</t>
| <t>{$=$}{$=$}</t>
| <t>!{$=$}</t>
WyrazenieLogiczne  ::= {\nonterminal{WyrazeniePorownania}} {\nonterminal{OperatorLogiczny}} WyrazeniePorownania
| WyrazeniePorownania
OperatorLogiczny  ::= <t>{$|$}{$|$}</t>
| {\terminal{\ \ }}
Wyrazenie  ::= WyrazenieLogiczne
| <t>new}} {\nonterminal{Typ</t>
| {\terminal{new}} {\nonterminal{Typ}} {\terminal{[}} Wyrazenie <t>]</t>
ZlozonaInstrukcja  ::= {\terminal{if}} {\nonterminal{Wyrazenie}} {\terminal{then}} {\nonterminal{ListInstrukcja}} {\terminal{else}} ListInstrukcja <t>endif</t>
| {\terminal{if}} {\nonterminal{Wyrazenie}} {\terminal{then}} ListInstrukcja <t>endif</t>
| {\terminal{while}} {\nonterminal{Wyrazenie}} {\terminal{do}} ListInstrukcja <t>done</t>
<t>array</t> <t>class</t> <t>delete</t>
<t>do</t> <t>done</t> <t>else</t>
<t>endif</t> <t>extends</t> <t>function</t>
<t>if</t> <t>int</t> <t>new</t>
<t>null</t> <t>of</t> <t>program</t>
<t>read</t> <t>return</t> <t>string</t>
<t>super</t> <t>then</t> <t>this</t>
<t>type</t> <t>var</t> <t>void</t>
<t>while</t> <t>write</t>
; { }
$=$ , :
( ) :$=$
[ ] .
$$ $+$ !
* / $<$
$>$ $<$$=$ $>$$=$
$=$$=$ !$=$ $|$$|$
{\symb{\ \ }}
Program  ::= {\terminal{program}} <t>;}} {\nonterminal{Cialo</t>
Cialo  ::= {\nonterminal{ListDeklaracja}} Blok
Blok  ::= {\terminal{\{}} ListInstrukcja <t>\}</t>
ListDeklaracja  ::= ϵ
| {\nonterminal{Deklaracja}} ListDeklaracja
Deklaracja  ::= DeklaracjaTypu
| DeklaracjaZmiennej
| DeklaracjaFunkcji
| DeklaracjaKlasy
DeklaracjaTypu  ::= {\terminal{type}} Ident}} <t>{$=$} {\nonterminal{OpisTypu</t>
OpisTypu  ::= Ident
| {\terminal{\{}} ListDeklaracjaZmiennej <t>\}</t>
| {\terminal{array}} <t>of}} {\nonterminal{Typ</t>
ListDeklaracjaZmiennej  ::= DeklaracjaZmiennej
| DeklaracjaZmiennej}} <t>, {\nonterminal{ListDeklaracjaZmiennej</t>
Typ  ::= Ident
| <t>string</t>
| <t>int</t>
| <t>void</t>
DeklaracjaZmiennej  ::= {\terminal{var}} Ident}} <t>: {\nonterminal{Typ</t>
DeklaracjaFunkcji  ::= {\terminal{function}} {\nonterminal{Ident}} {\terminal{(}} {\nonterminal{DeklaracjaArgumentow}} {\terminal{)}} <t>:}} Typ {\nonterminal{Cialo</t>
DeklaracjaArgumentow  ::= ListDeklaracjaZmiennej
| ϵ
ListInstrukcja  ::= ϵ
| {\nonterminal{Instrukcja}} ListInstrukcja
Instrukcja  ::= Wyrazenie <t>;</t>
| ZlozonaInstrukcja <t>;</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{:{$=$}}} Wyrazenie <t>;</t>
| Blok
| {\terminal{delete}} Wyrazenie <t>;</t>
| <t>;</t>
| {\terminal{read}} Ident <t>;</t>
| {\terminal{write}} Wyrazenie <t>;</t>
| {\terminal{return}} Wyrazenie <t>;</t>
| {\terminal{return}} <t>;</t>
WyrazeniePodstawowe  ::= Ident
| String
| Integer
| {\terminal{(}} Wyrazenie <t>)</t>
| <t>this</t>
| <t>super</t>
| <t>null</t>
WyrazeniePostfiksowe  ::= {\nonterminal{WyrazeniePostfiksowe}} {\terminal{[}} Wyrazenie <t>]</t>
| {\nonterminal{WyrazeniePostfiksowe}} {\terminal{(}} Parametry <t>)</t>
| WyrazeniePostfiksowe}} <t>. {\nonterminal{Ident</t>
| WyrazeniePodstawowe
Parametry  ::= ϵ
| ListWyrazenie
ListWyrazenie  ::= Wyrazenie
| Wyrazenie}} <t>, {\nonterminal{ListWyrazenie</t>
WyrazenieUnarne  ::= {\nonterminal{OperatorUnarny}} WyrazenieUnarne
| WyrazeniePostfiksowe
OperatorUnarny  ::= <t>{$-$}</t>
| <t>{$+$}</t>
| <t>!</t>
WyrazenieMultiplikatywne  ::= {\nonterminal{WyrazenieMultiplikatywne}} {\nonterminal{OperatorMultiplikatywny}} WyrazenieUnarne
| WyrazenieUnarne
WyrazenieAddytywne  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorAddytywny}} WyrazenieMultiplikatywne
| WyrazenieMultiplikatywne
OperatorMultiplikatywny  ::= <t>*</t>
| <t>/</t>
OperatorAddytywny  ::= <t>{$+$}</t>
| <t>{$-$}</t>
WyrazeniePorownania  ::= {\nonterminal{WyrazenieAddytywne}} {\nonterminal{OperatorPorownania}} WyrazenieAddytywne
| WyrazenieAddytywne
OperatorPorownania  ::= <t>{$<$}</t>
| <t>{$>$}</t>
| <t>{$<$}{$=$}</t>
| <t>{$>$}{$=$}</t>
| <t>{$=$}{$=$}</t>
| <t>!{$=$}</t>
WyrazenieLogiczne  ::= {\nonterminal{WyrazeniePorownania}} {\nonterminal{OperatorLogiczny}} WyrazeniePorownania
| WyrazeniePorownania
OperatorLogiczny  ::= <t>{$|$}{$|$}</t>
| {\terminal{\ \ }}
Wyrazenie  ::= WyrazenieLogiczne
| <t>new}} {\nonterminal{Typ</t>
| {\terminal{new}} {\nonterminal{Typ}} {\terminal{[}} Wyrazenie <t>]</t>
ZlozonaInstrukcja  ::= {\terminal{if}} {\nonterminal{Wyrazenie}} {\terminal{then}} {\nonterminal{ListInstrukcja}} {\terminal{else}} ListInstrukcja <t>endif</t>
| {\terminal{if}} {\nonterminal{Wyrazenie}} {\terminal{then}} ListInstrukcja <t>endif</t>
| {\terminal{while}} {\nonterminal{Wyrazenie}} {\terminal{do}} ListInstrukcja <t>done</t>
DeklaracjaKlasy  ::= {\terminal{class}} {\nonterminal{Ident}} {\terminal{extends}} {\nonterminal{Ident}} {\terminal{\{}} ListDeklaracja <t>\}</t>


\end{document}