Metody realizacji języków programowania/MRJP Laboratorium/Scrap: Różnice pomiędzy wersjami
Linia 128: | Linia 128: | ||
</tr> | </tr> | ||
</table> | </table> | ||
</tr> | |||
<tr> | |||
<td>''<Program>'' </td> | |||
<td>::= </td> | |||
<td><tt>program</tt> <tt>;</tt> ''<Cialo>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<Cialo>'' </td> | |||
<td>::= </td> | |||
<td>''<ListDeklaracja>'' ''<Blok>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<Blok>'' </td> | |||
<td>::= </td> | |||
<td><tt>\{</tt> ''<ListInstrukcja>'' <tt>\</tt>} </td> | |||
</tr> | |||
<tr> | |||
<td>''<ListDeklaracja>'' </td> | |||
<td>::= </td> | |||
<td> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<Deklaracja>'' ''<ListDeklaracja>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<Deklaracja>'' </td> | |||
<td>::= </td> | |||
<td>''<DeklaracjaTypu>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<DeklaracjaZmiennej>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<DeklaracjaFunkcji>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<DeklaracjaKlasy>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<DeklaracjaTypu>'' </td> | |||
<td>::= </td> | |||
<td><tt>type</tt> ''<Ident>'' <tt>{<math>=</math></tt>} ''<OpisTypu>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<OpisTypu>'' </td> | |||
<td>::= </td> | |||
<td>''<Ident>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>\{</tt> ''<ListDeklaracjaZmiennej>'' <tt>\</tt>} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>array</tt> <tt>of</tt> ''<Typ>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<ListDeklaracjaZmiennej>'' </td> | |||
<td>::= </td> | |||
<td>''<DeklaracjaZmiennej>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<DeklaracjaZmiennej>'' <tt>,</tt> ''<ListDeklaracjaZmiennej>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<Typ>'' </td> | |||
<td>::= </td> | |||
<td>''<Ident>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>string</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>int</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>void</tt> </td> | |||
</tr> | |||
<tr> | |||
<td>''<DeklaracjaZmiennej>'' </td> | |||
<td>::= </td> | |||
<td><tt>var</tt> ''<Ident>'' <tt>:</tt> ''<Typ>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<DeklaracjaFunkcji>'' </td> | |||
<td>::= </td> | |||
<td><tt>function</tt> ''<Ident>'' <tt>(</tt> ''<DeklaracjaArgumentow>'' <tt>)</tt> <tt>:</tt> ''<Typ>'' ''<Cialo>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<DeklaracjaArgumentow>'' </td> | |||
<td>::= </td> | |||
<td>''<ListDeklaracjaZmiennej>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td> </td> | |||
</tr> | |||
<tr> | |||
<td>''<ListInstrukcja>'' </td> | |||
<td>::= </td> | |||
<td> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<Instrukcja>'' ''<ListInstrukcja>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<Instrukcja>'' </td> | |||
<td>::= </td> | |||
<td>''<Wyrazenie>'' <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<ZlozonaInstrukcja>'' <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazeniePostfiksowe>'' <tt>:{<math>=</math></tt>} ''<Wyrazenie>'' <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<Blok>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>delete</tt> ''<Wyrazenie>'' <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>read</tt> ''<Ident>'' <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>write</tt> ''<Wyrazenie>'' <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>return</tt> ''<Wyrazenie>'' <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>return</tt> <tt>;</tt> </td> | |||
</tr> | |||
<tr> | |||
<td>''<WyrazeniePodstawowe>'' </td> | |||
<td>::= </td> | |||
<td>''<Ident>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<String>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<Integer>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>(</tt> ''<Wyrazenie>'' <tt>)</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>this</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>super</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>null</tt> </td> | |||
</tr> | |||
<tr> | |||
<td>''<WyrazeniePostfiksowe>'' </td> | |||
<td>::= </td> | |||
<td>''<WyrazeniePostfiksowe>'' <tt>[</tt> ''<Wyrazenie>'' <tt>]</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazeniePostfiksowe>'' <tt>(</tt> ''<Parametry>'' <tt>)</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazeniePostfiksowe>'' <tt>.</tt> ''<Ident>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazeniePodstawowe>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<Parametry>'' </td> | |||
<td>::= </td> | |||
<td> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<ListWyrazenie>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<ListWyrazenie>'' </td> | |||
<td>::= </td> | |||
<td>''<Wyrazenie>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<Wyrazenie>'' <tt>,</tt> ''<ListWyrazenie>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<WyrazenieUnarne>'' </td> | |||
<td>::= </td> | |||
<td>''<OperatorUnarny>'' ''<WyrazenieUnarne>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazeniePostfiksowe>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<OperatorUnarny>'' </td> | |||
<td>::= </td> | |||
<td><tt>{<math>-</math></tt>} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>{<math>+</math></tt>} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>!</tt> </td> | |||
</tr> | |||
<tr> | |||
<td>''<WyrazenieMultiplikatywne>'' </td> | |||
<td>::= </td> | |||
<td>''<WyrazenieMultiplikatywne>'' ''<OperatorMultiplikatywny>'' ''<WyrazenieUnarne>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazenieUnarne>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<WyrazenieAddytywne>'' </td> | |||
<td>::= </td> | |||
<td>''<WyrazenieAddytywne>'' ''<OperatorAddytywny>'' ''<WyrazenieMultiplikatywne>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazenieMultiplikatywne>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<OperatorMultiplikatywny>'' </td> | |||
<td>::= </td> | |||
<td><tt>*</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>/</tt> </td> | |||
</tr> | |||
<tr> | |||
<td>''<OperatorAddytywny>'' </td> | |||
<td>::= </td> | |||
<td><tt>{<math>+</math></tt>} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>{<math>-</math></tt>} </td> | |||
</tr> | |||
<tr> | |||
<td>''<WyrazeniePorownania>'' </td> | |||
<td>::= </td> | |||
<td>''<WyrazenieAddytywne>'' ''<OperatorPorownania>'' ''<WyrazenieAddytywne>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazenieAddytywne>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<OperatorPorownania>'' </td> | |||
<td>::= </td> | |||
<td><tt>{<math><</math></tt>} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>{<math>></math></tt>} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>{\terminal{{<math><</math>}{<math>=</math>}}} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>{\terminal{{<math>></math>}{<math>=</math>}}} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>{\terminal{{<math>=</math>}{<math>=</math>}}} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>!{<math>=</math></tt>} </td> | |||
</tr> | |||
<tr> | |||
<td>''<WyrazenieLogiczne>'' </td> | |||
<td>::= </td> | |||
<td>''<WyrazeniePorownania>'' ''<OperatorLogiczny>'' ''<WyrazeniePorownania>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>''<WyrazeniePorownania>'' </td> | |||
</tr> | |||
<tr> | |||
<td>''<OperatorLogiczny>'' </td> | |||
<td>::= </td> | |||
<td>{\terminal{{<math>|</math>}{<math>|</math>}}} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td>{\terminal{\</td> | |||
<td>\</td> | |||
<td>}} </td> | |||
</tr> | |||
<tr> | |||
<td>''<Wyrazenie>'' </td> | |||
<td>::= </td> | |||
<td>''<WyrazenieLogiczne>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>new</tt> ''<Typ>'' </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>new</tt> ''<Typ>'' <tt>[</tt> ''<Wyrazenie>'' <tt>]</tt> </td> | |||
</tr> | |||
<tr> | |||
<td>''<ZlozonaInstrukcja>'' </td> | |||
<td>::= </td> | |||
<td><tt>if</tt> ''<Wyrazenie>'' <tt>then</tt> ''<ListInstrukcja>'' <tt>else</tt> ''<ListInstrukcja>'' <tt>endif</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>if</tt> ''<Wyrazenie>'' <tt>then</tt> ''<ListInstrukcja>'' <tt>endif</tt> </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
<td>| </td> | |||
<td><tt>while</tt> ''<Wyrazenie>'' <tt>do</tt> ''<ListInstrukcja>'' <tt>done</tt> </td> | |||
</tr> | |||
<tr> | |||
<td>''<DeklaracjaKlasy>'' </td> | |||
<td>::= </td> | |||
<td><tt>class</tt> ''<Ident>'' <tt>extends</tt> ''<Ident>'' <tt>\{</tt> ''<ListDeklaracja>'' <tt>\</tt>} </td> | |||
</tr> | |||
<tr> | |||
<td> | |||
</td> | |||
</tr> | |||
===Comments=== | ===Comments=== |
Wersja z 14:39, 25 sie 2006
The lexical structure of kotek
Identifiers
Identifiers Ident are unquoted strings beginning with a letter, followed by any combination of letters, digits, and the characters _ ', reserved words excluded.
Literals
String literals <String> have the form "", where is any sequence of any characters except " unless preceded by \.
Integer literals <Int> are nonempty sequences of digits.
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:
array | class | delete |
do | done | else |
endif | extends | function |
if | int | new |
null | of | program |
read | return | string |
super | then | this |
type | var | void |
while | write |
The symbols used in kotek are the following:
; | { | } |
= | , | : |
( | ) | := |
[ | ] | . |
- | + | ! |
* | / | < |
> | <= | >= |
== | != | || |
&& |
<Program> ::= program ; <Cialo> <Cialo> ::= <ListDeklaracja> <Blok> <Blok> ::= \{ <ListInstrukcja> \} <ListDeklaracja> ::= | <Deklaracja> <ListDeklaracja> <Deklaracja> ::= <DeklaracjaTypu> | <DeklaracjaZmiennej> | <DeklaracjaFunkcji> | <DeklaracjaKlasy> <DeklaracjaTypu> ::= type <Ident> {
} <OpisTypu> <OpisTypu> ::= <Ident> | \{ <ListDeklaracjaZmiennej> \} | array of <Typ> <ListDeklaracjaZmiennej> ::= <DeklaracjaZmiennej> | <DeklaracjaZmiennej> , <ListDeklaracjaZmiennej> <Typ> ::= <Ident> | string | int | void <DeklaracjaZmiennej> ::= var <Ident> : <Typ> <DeklaracjaFunkcji> ::= function <Ident> ( <DeklaracjaArgumentow> ) : <Typ> <Cialo> <DeklaracjaArgumentow> ::= <ListDeklaracjaZmiennej> | <ListInstrukcja> ::= | <Instrukcja> <ListInstrukcja> <Instrukcja> ::= <Wyrazenie> ; | <ZlozonaInstrukcja> ; | <WyrazeniePostfiksowe> :{
} <Wyrazenie> ; | <Blok> | delete <Wyrazenie> ; | ; | read <Ident> ; | write <Wyrazenie> ; | return <Wyrazenie> ; | return ; <WyrazeniePodstawowe> ::= <Ident> | <String> | <Integer> | ( <Wyrazenie> ) | this | super | null <WyrazeniePostfiksowe> ::= <WyrazeniePostfiksowe> [ <Wyrazenie> ] | <WyrazeniePostfiksowe> ( <Parametry> ) | <WyrazeniePostfiksowe> . <Ident> | <WyrazeniePodstawowe> <Parametry> ::= | <ListWyrazenie> <ListWyrazenie> ::= <Wyrazenie> | <Wyrazenie> , <ListWyrazenie> <WyrazenieUnarne> ::= <OperatorUnarny> <WyrazenieUnarne> | <WyrazeniePostfiksowe> <OperatorUnarny> ::= {
} | {
} | ! <WyrazenieMultiplikatywne> ::= <WyrazenieMultiplikatywne> <OperatorMultiplikatywny> <WyrazenieUnarne> | <WyrazenieUnarne> <WyrazenieAddytywne> ::= <WyrazenieAddytywne> <OperatorAddytywny> <WyrazenieMultiplikatywne> | <WyrazenieMultiplikatywne> <OperatorMultiplikatywny> ::= * | / <OperatorAddytywny> ::= {
} | {
} <WyrazeniePorownania> ::= <WyrazenieAddytywne> <OperatorPorownania> <WyrazenieAddytywne> | <WyrazenieAddytywne> <OperatorPorownania> ::= {
} | {
} | {\terminal{{
}{
}}} | {\terminal{{
}{
}}} | {\terminal{{
}{
}}} | !{
} <WyrazenieLogiczne> ::= <WyrazeniePorownania> <OperatorLogiczny> <WyrazeniePorownania> | <WyrazeniePorownania> <OperatorLogiczny> ::= {\terminal{{
}{
}}} | {\terminal{\ \ }} <Wyrazenie> ::= <WyrazenieLogiczne> | new <Typ> | new <Typ> [ <Wyrazenie> ] <ZlozonaInstrukcja> ::= if <Wyrazenie> then <ListInstrukcja> else <ListInstrukcja> endif | if <Wyrazenie> then <ListInstrukcja> endif | while <Wyrazenie> do <ListInstrukcja> done <DeklaracjaKlasy> ::= class <Ident> extends <Ident> \{ <ListDeklaracja> \}
Comments
Single-line comments begin with {\symb{//}}. \\Multiple-line comments are enclosed with {\symb{(*}} and {\symb{*)}}.
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.
<Program> | ::= | program ; <Cialo> | ||
<Cialo> | ::= | <ListDeklaracja> <Blok> | ||
<Blok> | ::= | \{ <ListInstrukcja> \} | ||
<ListDeklaracja> | ::= | |||
| | <Deklaracja> <ListDeklaracja> | |||
<Deklaracja> | ::= | <DeklaracjaTypu> | ||
| | <DeklaracjaZmiennej> | |||
| | <DeklaracjaFunkcji> | |||
| | <DeklaracjaKlasy> | |||
<DeklaracjaTypu> | ::= | type <Ident> {} <OpisTypu> | ||
<OpisTypu> | ::= | <Ident> | ||
| | \{ <ListDeklaracjaZmiennej> \} | |||
| | array of <Typ> | |||
<ListDeklaracjaZmiennej> | ::= | <DeklaracjaZmiennej> | ||
| | <DeklaracjaZmiennej> , <ListDeklaracjaZmiennej> | |||
<Typ> | ::= | <Ident> | ||
| | string | |||
| | int | |||
| | void | |||
<DeklaracjaZmiennej> | ::= | var <Ident> : <Typ> | ||
<DeklaracjaFunkcji> | ::= | function <Ident> ( <DeklaracjaArgumentow> ) : <Typ> <Cialo> | ||
<DeklaracjaArgumentow> | ::= | <ListDeklaracjaZmiennej> | ||
| | ||||
<ListInstrukcja> | ::= | |||
| | <Instrukcja> <ListInstrukcja> | |||
<Instrukcja> | ::= | <Wyrazenie> ; | ||
| | <ZlozonaInstrukcja> ; | |||
| | <WyrazeniePostfiksowe> :{} <Wyrazenie> ; | |||
| | <Blok> | |||
| | delete <Wyrazenie> ; | |||
| | ; | |||
| | read <Ident> ; | |||
| | write <Wyrazenie> ; | |||
| | return <Wyrazenie> ; | |||
| | return ; | |||
<WyrazeniePodstawowe> | ::= | <Ident> | ||
| | <String> | |||
| | <Integer> | |||
| | ( <Wyrazenie> ) | |||
| | this | |||
| | super | |||
| | null | |||
<WyrazeniePostfiksowe> | ::= | <WyrazeniePostfiksowe> [ <Wyrazenie> ] | ||
| | <WyrazeniePostfiksowe> ( <Parametry> ) | |||
| | <WyrazeniePostfiksowe> . <Ident> | |||
| | <WyrazeniePodstawowe> | |||
<Parametry> | ::= | |||
| | <ListWyrazenie> | |||
<ListWyrazenie> | ::= | <Wyrazenie> | ||
| | <Wyrazenie> , <ListWyrazenie> | |||
<WyrazenieUnarne> | ::= | <OperatorUnarny> <WyrazenieUnarne> | ||
| | <WyrazeniePostfiksowe> | |||
<OperatorUnarny> | ::= | {} | ||
| | {} | |||
| | ! | |||
<WyrazenieMultiplikatywne> | ::= | <WyrazenieMultiplikatywne> <OperatorMultiplikatywny> <WyrazenieUnarne> | ||
| | <WyrazenieUnarne> | |||
<WyrazenieAddytywne> | ::= | <WyrazenieAddytywne> <OperatorAddytywny> <WyrazenieMultiplikatywne> | ||
| | <WyrazenieMultiplikatywne> | |||
<OperatorMultiplikatywny> | ::= | * | ||
| | / | |||
<OperatorAddytywny> | ::= | {} | ||
| | {} | |||
<WyrazeniePorownania> | ::= | <WyrazenieAddytywne> <OperatorPorownania> <WyrazenieAddytywne> | ||
| | <WyrazenieAddytywne> | |||
<OperatorPorownania> | ::= | {} | ||
| | {} | |||
| | {\terminal{{}{}}} | |||
| | {\terminal{{}{}}} | |||
| | {\terminal{{}{}}} | |||
| | !{} | |||
<WyrazenieLogiczne> | ::= | <WyrazeniePorownania> <OperatorLogiczny> <WyrazeniePorownania> | ||
| | <WyrazeniePorownania> | |||
<OperatorLogiczny> | ::= | {\terminal{{}{}}} | ||
| | {\terminal{\ | \ | }} | |
<Wyrazenie> | ::= | <WyrazenieLogiczne> | ||
| | new <Typ> | |||
| | new <Typ> [ <Wyrazenie> ] | |||
<ZlozonaInstrukcja> | ::= | if <Wyrazenie> then <ListInstrukcja> else <ListInstrukcja> endif | ||
| | if <Wyrazenie> then <ListInstrukcja> endif | |||
| | while <Wyrazenie> do <ListInstrukcja> done | |||
<DeklaracjaKlasy> | ::= | class <Ident> extends <Ident> \{ <ListDeklaracja> \} | ||