Buscar

BNF-Pascal

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Esquemas de Tradução da Linguagem PASCAL SIMPLIFICADA 
 
<programa> ::= program <id> {A1} <corpo> • {A30} 
---------------------------------------------------------------------- 
<corpo> ::= <declara> <rotina> begin <sentencas> end 
---------------------------------------------------------------------- 
<declara> ::= var <dvar> <mais_dc> | l 
<mais_dc> ::= ; <cont_dc> 
<cont_dc> ::= <dvar> <mais_dc> | l 
<dvar> ::= <variaveis> : <tipo_var> 
<tipo_var> ::= integer 
<variaveis> ::= <id> {A2} <mais_var> 
<mais_var> ::= , <variaveis> | l 
-------------------------------------------------------------------- 
<rotina> ::= <procedimento> | <funcao> | l 
<procedimento> ::= procedure <id> <parametros> ; <corpo> ; 
 <rotina> 
<funcao> ::= function <id> <parametros> : <tipo_funcao> ; <corpo> ; 
 <rotina> 
<parametros> ::= ( <lista_parametros> ) | l 
<lista_parametros> ::= <lista_id> : <tipo_var> <cont_lista_par> 
<cont_lista_par> ::= ; <lista_parametros> | l 
<lista_id> ::= <id> <cont_lista_id> 
<cont_lista_id> ::= , <lista_id> | l 
<tipo_funcao> ::= integer 
-------------------------------------------------------------------- 
<sentencas> ::= <comando> <mais_sentencas> 
<mais_sentencas> ::= ; <cont_sentencas> 
<cont_sentencas> ::= <sentencas> | l 
<var_read> ::= <id> {A5} <mais_var_read> 
<mais_var_read> ::= , <var_read> | l 
<var_write> ::= <id> {A6} <mais_var_write> 
<mais_var_write> ::= , <var_write> | l 
<comando> ::= 
read ( <var_read> ) | 
write ( <var_write> ) | 
for <id> {A25} := <expressao> {A26} to {A27} <expressao> {A28} 
do begin <sentencas> end {A29} | 
repeat {A23} <sentencas> until ( <condicao> ) {A24} | 
while {A20} ( <condicao> ) {A21} do begin <sentencas> end {A22} | 
if ( <condicao> ) {A17} then begin <sentencas> end {A18} 
<pfalsa> {A19} | 
<id> {A13} := <expressao> {A14} | 
---------------------------------------------------------------------- 
<chamada_procedimento> 
---------------------------------------------------------------------- 
<chamada_procedimento> ::= <id_proc> <argumentos> 
<argumentos> ::= ( <lista_arg> ) | l 
<lista_arg> ::= <expressao> <cont_lista_arg> 
<cont_lista_arg> ::= , <lista_arg> | l 
---------------------------------------------------------------------- 
<condicao> ::= <expressao> <relacao> {A15} <expressao> {A16} 
<pfalsa> ::= else begin <sentencas> end | l 
<relacao> ::= = | > | < | >= | <= | <> 
<expressao> ::= <termo> <outros_termos> 
<outros_termos> ::= <op_ad> {A9} <termo> {A10} <outros_termos> | l 
<op_ad> ::= + | - 
<termo> ::= <fator> <mais_fatores> 
<mais_fatores> ::= <op_mul> {A11} <fator> {A12} <mais_fatores> | l 
<op_mul> ::= * | / 
---------------------------------------------------------------------- 
<fator> ::= <id_var> {A7} | <intnum> {A8} | 
 (<expressao>) | <id_funcao> <argumentos> 
---------------------------------------------------------------------- 
<id> ::= letra (letra | digito)* {A3} 
<intnum> ::= digito+ {A4} 
 Observação sobre a sintaxe da Linguagem Pascal 
 
A construção de programas poderá conter comentários, os quais são inicializados pelo símbolo "{" 
e finalizados pelo símbolo "}". Qualquer seqüência de caracteres contidos entre estes dois 
delimitadores deverão serem desconsiderados pelo compilador. Portanto, durante a fase de 
análise léxica, torna-se viável desprezar todos os comentários. Isto pode ser feito da seguinte 
forma: 
 
Se NextCar = '{' então 
 Enquanto NextCar <> '}' faça 
 Chamar Ler 
 Fim faça 
 Chamar Ler 
Fim se 
 
Exemplo de um programa em PASCAL SIMPLIFICADO 
 
{ Programa: Somatório } 
{ Autor : Rogério Melo Nepomuceno } 
{ Data : 21 de Setembro de 1999 } 
 
Program Somatorio 
 
Var 
 Ini, Fim, Conta, Soma : integer; 
Begin 
 Ini := 0; 
 Fim := 0; 
 Soma := 0; 
 read( Ini, Fim ); 
 For Conta := Ini To Fim do begin 
 Soma := Soma + Conta 
 End; 
 write( Soma ); 
End.

Outros materiais