Metody realizacji języków programowania/MRJP Laboratorium/Scrap: Różnice pomiędzy wersjami
| Linia 141: | Linia 141: | ||
<table> | <table> | ||
<tr> | <tr> | ||
<td>''Program'' </td> | <td>''<Program>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>program</tt> <tt>;</tt> ''Cialo'' </td> | <td><tt>program</tt> <tt>;</tt> ''<Cialo>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''Cialo'' </td> | <td>''<Cialo>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''ListDeklaracja'' ''Blok'' </td> | <td>''<ListDeklaracja>'' ''<Blok>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''Blok'' </td> | <td>''<Blok>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>\{</tt> ''ListInstrukcja'' <tt>\</tt>} </td> | <td><tt>\{</tt> ''<ListInstrukcja>'' <tt>\</tt>} </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''ListDeklaracja'' </td> | <td>''<ListDeklaracja>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td> </td> | <td> </td> | ||
| Linia 165: | Linia 165: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''Deklaracja'' ''ListDeklaracja'' </td> | <td>''<Deklaracja>'' ''<ListDeklaracja>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''Deklaracja'' </td> | <td>''<Deklaracja>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''DeklaracjaTypu'' </td> | <td>''<DeklaracjaTypu>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 177: | Linia 177: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''DeklaracjaZmiennej'' </td> | <td>''<DeklaracjaZmiennej>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 184: | Linia 184: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''DeklaracjaFunkcji'' </td> | <td>''<DeklaracjaFunkcji>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 191: | Linia 191: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''DeklaracjaKlasy'' </td> | <td>''<DeklaracjaKlasy>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''DeklaracjaTypu'' </td> | <td>''<DeklaracjaTypu>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>type</tt> ''Ident'' <tt>{<math>=</math></tt>} ''OpisTypu'' </td> | <td><tt>type</tt> ''<Ident>'' <tt>{<math>=</math></tt>} ''<OpisTypu>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''OpisTypu'' </td> | <td>''<OpisTypu>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''Ident'' </td> | <td>''<Ident>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 208: | Linia 208: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>\{</tt> ''ListDeklaracjaZmiennej'' <tt>\</tt>} </td> | <td><tt>\{</tt> ''<ListDeklaracjaZmiennej>'' <tt>\</tt>} </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 215: | Linia 215: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>array</tt> <tt>of</tt> ''Typ'' </td> | <td><tt>array</tt> <tt>of</tt> ''<Typ>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''ListDeklaracjaZmiennej'' </td> | <td>''<ListDeklaracjaZmiennej>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''DeklaracjaZmiennej'' </td> | <td>''<DeklaracjaZmiennej>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 227: | Linia 227: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''DeklaracjaZmiennej'' <tt>,</tt> ''ListDeklaracjaZmiennej'' </td> | <td>''<DeklaracjaZmiennej>'' <tt>,</tt> ''<ListDeklaracjaZmiennej>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''Typ'' </td> | <td>''<Typ>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''Ident'' </td> | <td>''<Ident>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 256: | Linia 256: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''DeklaracjaZmiennej'' </td> | <td>''<DeklaracjaZmiennej>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>var</tt> ''Ident'' <tt>:</tt> ''Typ'' </td> | <td><tt>var</tt> ''<Ident>'' <tt>:</tt> ''<Typ>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''DeklaracjaFunkcji'' </td> | <td>''<DeklaracjaFunkcji>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>function</tt> ''Ident'' <tt>(</tt> ''DeklaracjaArgumentow'' <tt>)</tt> <tt>:</tt> ''Typ'' ''Cialo'' </td> | <td><tt>function</tt> ''<Ident>'' <tt>(</tt> ''<DeklaracjaArgumentow>'' <tt>)</tt> <tt>:</tt> ''<Typ>'' ''<Cialo>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''DeklaracjaArgumentow'' </td> | <td>''<DeklaracjaArgumentow>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''ListDeklaracjaZmiennej'' </td> | <td>''<ListDeklaracjaZmiennej>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 278: | Linia 278: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''ListInstrukcja'' </td> | <td>''<ListInstrukcja>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td> </td> | <td> </td> | ||
| Linia 287: | Linia 287: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''Instrukcja'' ''ListInstrukcja'' </td> | <td>''<Instrukcja>'' ''<ListInstrukcja>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''Instrukcja'' </td> | <td>''<Instrukcja>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''Wyrazenie'' <tt>;</tt> </td> | <td>''<Wyrazenie>'' <tt>;</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 299: | Linia 299: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''ZlozonaInstrukcja'' <tt>;</tt> </td> | <td>''<ZlozonaInstrukcja>'' <tt>;</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 306: | Linia 306: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazeniePostfiksowe'' <tt>:{<math>=</math></tt>} ''Wyrazenie'' <tt>;</tt> </td> | <td>''<WyrazeniePostfiksowe>'' <tt>:{<math>=</math></tt>} ''<Wyrazenie>'' <tt>;</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 313: | Linia 313: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''Blok'' </td> | <td>''<Blok>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 320: | Linia 320: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>delete</tt> ''Wyrazenie'' <tt>;</tt> </td> | <td><tt>delete</tt> ''<Wyrazenie>'' <tt>;</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 334: | Linia 334: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>read</tt> ''Ident'' <tt>;</tt> </td> | <td><tt>read</tt> ''<Ident>'' <tt>;</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 341: | Linia 341: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>write</tt> ''Wyrazenie'' <tt>;</tt> </td> | <td><tt>write</tt> ''<Wyrazenie>'' <tt>;</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 348: | Linia 348: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>return</tt> ''Wyrazenie'' <tt>;</tt> </td> | <td><tt>return</tt> ''<Wyrazenie>'' <tt>;</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 358: | Linia 358: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''WyrazeniePodstawowe'' </td> | <td>''<WyrazeniePodstawowe>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''Ident'' </td> | <td>''<Ident>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 367: | Linia 367: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''String'' </td> | <td>''<String>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 374: | Linia 374: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''Integer'' </td> | <td>''<Integer>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 381: | Linia 381: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>(</tt> ''Wyrazenie'' <tt>)</tt> </td> | <td><tt>(</tt> ''<Wyrazenie>'' <tt>)</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 405: | Linia 405: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''WyrazeniePostfiksowe'' </td> | <td>''<WyrazeniePostfiksowe>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''WyrazeniePostfiksowe'' <tt>[</tt> ''Wyrazenie'' <tt>]</tt> </td> | <td>''<WyrazeniePostfiksowe>'' <tt>[</tt> ''<Wyrazenie>'' <tt>]</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 414: | Linia 414: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazeniePostfiksowe'' <tt>(</tt> ''Parametry'' <tt>)</tt> </td> | <td>''<WyrazeniePostfiksowe>'' <tt>(</tt> ''<Parametry>'' <tt>)</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 421: | Linia 421: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazeniePostfiksowe'' <tt>.</tt> ''Ident'' </td> | <td>''<WyrazeniePostfiksowe>'' <tt>.</tt> ''<Ident>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 428: | Linia 428: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazeniePodstawowe'' </td> | <td>''<WyrazeniePodstawowe>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''Parametry'' </td> | <td>''<Parametry>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td> </td> | <td> </td> | ||
| Linia 440: | Linia 440: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''ListWyrazenie'' </td> | <td>''<ListWyrazenie>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''ListWyrazenie'' </td> | <td>''<ListWyrazenie>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''Wyrazenie'' </td> | <td>''<Wyrazenie>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 452: | Linia 452: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''Wyrazenie'' <tt>,</tt> ''ListWyrazenie'' </td> | <td>''<Wyrazenie>'' <tt>,</tt> ''<ListWyrazenie>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''WyrazenieUnarne'' </td> | <td>''<WyrazenieUnarne>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''OperatorUnarny'' ''WyrazenieUnarne'' </td> | <td>''<OperatorUnarny>'' ''<WyrazenieUnarne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 464: | Linia 464: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazeniePostfiksowe'' </td> | <td>''<WyrazeniePostfiksowe>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''OperatorUnarny'' </td> | <td>''<OperatorUnarny>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>{<math>-</math></tt>} </td> | <td><tt>{<math>-</math></tt>} </td> | ||
| Linia 486: | Linia 486: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''WyrazenieMultiplikatywne'' </td> | <td>''<WyrazenieMultiplikatywne>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''WyrazenieMultiplikatywne'' ''OperatorMultiplikatywny'' ''WyrazenieUnarne'' </td> | <td>''<WyrazenieMultiplikatywne>'' ''<OperatorMultiplikatywny>'' ''<WyrazenieUnarne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 495: | Linia 495: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazenieUnarne'' </td> | <td>''<WyrazenieUnarne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''WyrazenieAddytywne'' </td> | <td>''<WyrazenieAddytywne>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''WyrazenieAddytywne'' ''OperatorAddytywny'' ''WyrazenieMultiplikatywne'' </td> | <td>''<WyrazenieAddytywne>'' ''<OperatorAddytywny>'' ''<WyrazenieMultiplikatywne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 507: | Linia 507: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazenieMultiplikatywne'' </td> | <td>''<WyrazenieMultiplikatywne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''OperatorMultiplikatywny'' </td> | <td>''<OperatorMultiplikatywny>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>*</tt> </td> | <td><tt>*</tt> </td> | ||
| Linia 522: | Linia 522: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''OperatorAddytywny'' </td> | <td>''<OperatorAddytywny>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>{<math>+</math></tt>} </td> | <td><tt>{<math>+</math></tt>} </td> | ||
| Linia 534: | Linia 534: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''WyrazeniePorownania'' </td> | <td>''<WyrazeniePorownania>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''WyrazenieAddytywne'' ''OperatorPorownania'' ''WyrazenieAddytywne'' </td> | <td>''<WyrazenieAddytywne>'' ''<OperatorPorownania>'' ''<WyrazenieAddytywne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 543: | Linia 543: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazenieAddytywne'' </td> | <td>''<WyrazenieAddytywne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''OperatorPorownania'' </td> | <td>''<OperatorPorownania>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>{<math><</math></tt>} </td> | <td><tt>{<math><</math></tt>} </td> | ||
| Linia 586: | Linia 586: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''WyrazenieLogiczne'' </td> | <td>''<WyrazenieLogiczne>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''WyrazeniePorownania'' ''OperatorLogiczny'' ''WyrazeniePorownania'' </td> | <td>''<WyrazeniePorownania>'' ''<OperatorLogiczny>'' ''<WyrazeniePorownania>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 595: | Linia 595: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td>''WyrazeniePorownania'' </td> | <td>''<WyrazeniePorownania>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''OperatorLogiczny'' </td> | <td>''<OperatorLogiczny>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>{\terminal{{<math>|</math>}{<math>|</math>}}} </td> | <td>{\terminal{{<math>|</math>}{<math>|</math>}}} </td> | ||
| Linia 612: | Linia 612: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''Wyrazenie'' </td> | <td>''<Wyrazenie>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td>''WyrazenieLogiczne'' </td> | <td>''<WyrazenieLogiczne>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 621: | Linia 621: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>new</tt> ''Typ'' </td> | <td><tt>new</tt> ''<Typ>'' </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 628: | Linia 628: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>new</tt> ''Typ'' <tt>[</tt> ''Wyrazenie'' <tt>]</tt> </td> | <td><tt>new</tt> ''<Typ>'' <tt>[</tt> ''<Wyrazenie>'' <tt>]</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''ZlozonaInstrukcja'' </td> | <td>''<ZlozonaInstrukcja>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>if</tt> ''Wyrazenie'' <tt>then</tt> ''ListInstrukcja'' <tt>else</tt> ''ListInstrukcja'' <tt>endif</tt> </td> | <td><tt>if</tt> ''<Wyrazenie>'' <tt>then</tt> ''<ListInstrukcja>'' <tt>else</tt> ''<ListInstrukcja>'' <tt>endif</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 640: | Linia 640: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>if</tt> ''Wyrazenie'' <tt>then</tt> ''ListInstrukcja'' <tt>endif</tt> </td> | <td><tt>if</tt> ''<Wyrazenie>'' <tt>then</tt> ''<ListInstrukcja>'' <tt>endif</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
| Linia 647: | Linia 647: | ||
</td> | </td> | ||
<td>| </td> | <td>| </td> | ||
<td><tt>while</tt> ''Wyrazenie'' <tt>do</tt> ''ListInstrukcja'' <tt>done</tt> </td> | <td><tt>while</tt> ''<Wyrazenie>'' <tt>do</tt> ''<ListInstrukcja>'' <tt>done</tt> </td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>''DeklaracjaKlasy'' </td> | <td>''<DeklaracjaKlasy>'' </td> | ||
<td>::= </td> | <td>::= </td> | ||
<td><tt>class</tt> ''Ident'' <tt>extends</tt> ''Ident'' <tt>\{</tt> ''ListDeklaracja'' <tt>\</tt>} | <td><tt>class</tt> ''<Ident>'' <tt>extends</tt> ''<Ident>'' <tt>\{</tt> ''<ListDeklaracja>'' <tt>\</tt>} </td> | ||
</td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
Wersja z 14:28, 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:
| ; | { | } |
| = | , | : |
| ( | ) | := |
| [ | ] | . |
| - | + | ! |
| * | / | < |
| > | <= | >= |
| == | != | || |
| && |
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> \} | ||