0% acharam este documento útil (0 voto)
7 visualizações3 páginas

BNF

O documento descreve a estrutura de um programa, incluindo declarações globais, funções e procedimentos. Ele apresenta a sintaxe para variáveis, comandos e expressões, além de exemplos de implementação de funções e procedimentos. O programa principal demonstra a utilização de constantes, funções e controle de fluxo com condicionais e loops.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações3 páginas

BNF

O documento descreve a estrutura de um programa, incluindo declarações globais, funções e procedimentos. Ele apresenta a sintaxe para variáveis, comandos e expressões, além de exemplos de implementação de funções e procedimentos. O programa principal demonstra a utilização de constantes, funções e controle de fluxo com condicionais e loops.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 3

<programa> ::= [<declaracoes_globais>] function main { <bloco> }

<declaracoes_globais> ::= { <declaracao_constante_global> | <declaracao_funcao> |


<declaracao_procedimento> }

<declaracao_constante_global> ::= const <identificador> : <tipo> = <expressao> ;

<declaracao_funcao> ::= function <identificador> ( [<parametros>] ) : <tipo>


{ <bloco_funcao> }
<declaracao_procedimento> ::= procedure <identificador> ( [<parametros>] )
{ <bloco> }

<parametros> ::= <identificador> {, <identificador>}

<bloco> ::= { <comando> { <comando> } }


<bloco_funcao> ::= { <comando> { <comando> } <retorno> } // O bloco de uma função
termina obrigatoriamente com um return

<comando> ::= <declaracao_variavel> | <atribuicao> | <expressao> | <if> | <laco> |


<imprimir> | <retorno> | <procedimento> | <parar> | <continuar>

<retorno> ::= return <expressao> ; // Alterado para tornar o retorno obrigatório


com uma expressão

<declaracao_variavel> ::= var <lista_identificadores> : <tipo> [= <expressao>] ;


<lista_identificadores> ::= <identificador> {, <identificador>}

<tipo> ::= inteiro | booleano | string

<if> ::= if (<expressao>) { <bloco> } [ { else if (<expressao>) { <bloco> } } ]


[ else { <bloco> } ]

<laco> ::= <while> | <for>

<while> ::= while (<expressao>) { <bloco> }

<for> ::= for ( <atribuicao> ; <expressao> ; <atualizacao> ) { <bloco> }

<imprimir> ::= print ( <expressao> ) ;

<atualizacao> ::= <identificador> = <expressao>

<atribuicao> ::= <identificador> = <expressao> ;

<expressao> ::= <expressao logica> [<operador relacional> <expressao logica>]

<expressao logica> ::= <expressao aritmetica> { (&& | ||) <expressao aritmetica> }

<expressao aritmetica> ::= [ + | - ] <termo> { ( + | - ) <termo> }

<termo> ::= <fator> { ( * | // ) <fator> }

<fator> ::= (<variavel> | <numero> | <chamada de função> | (<expressao>) |


verdadeiro | falso | ! <fator>)

<operador relacional> ::= (== | != | < | <= | > | >=)

<variavel> ::= <identificador>


<chamada de função> ::= <identificador>

<booleano> ::= verdadeiro | falso


<string_literal> ::= " <letra> { <letra> | <digito> } "

<identificador> ::= <letra> { <letra> | <digito> | _ }


<numero> ::= <digito> { <digito> }
<digito> ::= (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)
<letra> ::= (a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r
| s | t | u | v | w | x | y | z | A | B | C | D | E | F | G | H | I | J | K | L | M
| N | O | P | Q | R | S | T | U | V | W | X | Y | Z)

// Declarações globais
const LIMITE : inteiro = 100;
const MENSAGEM : string = "Bem-vindo ao programa";
const PI: inteiro = 3

// Função que calcula a área de um círculo


function calcularArea(raio: inteiro) : inteiro {
var area : inteiro = PI * raio * raio; // Supondo 3 como uma aproximação para
PI
return area;
}

// Procedimento que exibe uma mensagem de boas-vindas


procedure exibirMensagem() {
printf(MENSAGEM);
}

// Procedimento que exibe a área de um círculo com o raio fornecido


procedure exibirArea(raio: inteiro) {
var area : inteiro = calcularArea(raio);
printf("A área do círculo é: ");
printf(area);
}

// Função principal (main)


function main {
// Declaração de variáveis locais
var raio : inteiro = 5;
var resultado : inteiro;
var ativo : booleano = verdadeiro;

// Exibindo uma mensagem de boas-vindas


exibirMensagem();

// Atribuição de uma expressão a uma variável


resultado = calcularArea(raio);

// Condicional simples para verificar se o resultado está dentro do limite


if (resultado < LIMITE) {
printf("A área está dentro do limite.");
} else {
printf("A área ultrapassa o limite.");
}
// Loop para exibir a área de círculos de raio 1 a 3
var i : inteiro = 1;
while (i <= 3) {
exibirArea(i);
i = i + 1;
}
}

<programa>: Define que um programa consiste em declarações globais (funções e/ou


classes) seguidas do main, onde o código principal é executado.
<declaracoes_globais>: Permite a definição de funções e variaveis fora do main.
<bloco>: Define que o bloco principal de código no main (ou em uma função) é
delimitado por { } e pode conter uma série de comandos.
<comando>: Lista os diferentes tipos de comandos que podem ser usados dentro de um
bloco.

// Constantes globais
const PI : inteiro = 3;
const MENSAGEM : string = "Bem-vindo ao programa!";

// Funções globais
function soma(a: inteiro, b: inteiro): inteiro {
return a + b;
}

function exibirMensagem() {
console.log(MENSAGEM);
}

// Programa principal
function main {
var resultado : inteiro = soma(10, 20);
console.log("Resultado da soma:", resultado);
exibirMensagem();
console.log("Valor de PI:", PI);
}

Você também pode gostar