Normalização BNF
Disciplina: Conceitos de Linguagem de Programação
Aluno: Rogério Alves da Silva
RA: 1288431
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)
Não-terminais são nomes mnemônicos colocados entre parênteses angulares.
Vocabulário terminal formado por identificadores, número, símbolos especiais simples e compostos, e palavras-chaves que aparecem negrejadas.
Símbolo inicial é .
Conjunto de produções dado abaixo. As expressões podem ser inteiras ou booleanas e a distinção deverá ser feita pelo compilador.
1. ::= program ;
.
2. ::=
[]
[]
Declarações 3. ::= | array [] of
4. ::= ..
5. ::= var {; };
6. ::= :
7. ::= {, }
8. ::=
{declaração de procedimento> ;}
9. ::= procedure [] ;
10. ::=
( { ; } )
11. ::=
[var] :
OBS: Todos os identificadores devem ser declarados antes de serem utilizados. Isto implica a impossibilidade de se utilizar recursão múltipla entre subrotinas quando elas não estão declaradas uma dentro da outra. São considerados identificadores pré-declarados os identificadores de tipo simples integer e boolean, os identificadores de procedimentos read e write, e os identificadores de constantes true e false. Comandos 12.
20. ::=
[+ | -] {(+ | - | or) }
21. ::= {(* | div | and) }
22. ::= |
| ( )
| not
23. ::= | [ ] 24. ::= {, }
OBS: As expressões podem ser inteiros ou booleanas e a distinção deverá ser feita pelo compilador. Note que as constantes true e false são consideradas identificadores pré-declarados. Números e Identificadores 25. ::= {}
26. ::=
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
27. ::= { | }
28. ::=
_ | a | b | ...Z | A | B ... | Z Obs 1: As produções 25 a 28 estão incluídas para tornar a gramática completa. Será mais conveniente, entretanto, tratar números e