-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgramar-rulles-original.txt
76 lines (30 loc) · 1.89 KB
/
gramar-rulles-original.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
1.<programa> ::= program <identificador> ; <bloco>.
2. <bloco> ::= [<parte de declarações de variáveis>] [<parte de declarações de sub-rotinas>] <comando composto>
3. <parte de declarações de variáveis> ::= <declaração de variáveis> {; <declaração de variáveis>};
4. <declaração de variáveis>::= <tipo> <lista de identificadores>
5. <lista de identificadores> ::= <identificador> {, <identificador>}
6. <parte de declarações de subrotinas> ::= {<declaração de procedimento> ;}
7. <declaração de procedimento> ::= procedure <identificador> [<parâmetros formais>] ; <bloco>
8. <parâmetros formais> ::= ( <seção de parâmetros formais> { ; <seção de parâmetros formais>} )
9. <seção de parâmetros formais> ::= [var] <lista de identificadores> : <identificador>
10. <comando composto ::= begin <comando> { ; <comando>} end
11. <comando> ::= <atribuição> | <chamada de procedimento> | <comando composto> | <comando condicional 1> | <comando repetitivo 1>
12. <atribuição>::= <variável> := <expressão>
13. <chamada de procedimento> ::= <identificador> [ ( <lista de expressões> ) ]
14. <comando condicional 1> ::= if <expressão> then <comando> [else <comando>]
15. <comando repetitivo 1> ::= while <expressão> do <comando>
16. <expressão> ::= <expressão simples> [<relação> <expressão simples>]
17. <relação> ::= = | <> | < | <= | >= | >
18. <expressão simples> ::= [+ | -] <termo> {(+ | - | or) <termo>}
19. <termo> ::= <fator> {(* | div | and) <fator> }
20. <fator> ::=
<variavel>
| <número>
| ( <expressão> )
| not <fator>
21. <variável> ::= <identificador> | <identificador> [ <expressão> ]
22. <lista de expressões> ::= <expressão> {, <expressão>}
23. <número> ::= <dígito> {<dígito>}
24. <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
25. <identificador> ::= <letra> {<letra> | <dígito>}
26. <letra> ::= _| a -z |A - Z