17.01.2013 Views

COMPORT – Compilador Portugol - Nilo Menezes

COMPORT – Compilador Portugol - Nilo Menezes

COMPORT – Compilador Portugol - Nilo Menezes

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ComPort <strong>–</strong> <strong>Compilador</strong> <strong>Portugol</strong><br />

compiladores podemos definir outros alfabetos para fins específicos. Por exemplo:<br />

Σ={a,b} indica um alfabeto chamado Σ, com dois elementos (a e b). Utilizaremos o<br />

símbolo Σ* para denotar todas as palavras que podem ser formadas por um alfabeto<br />

Σ.<br />

Entende-se por palavra uma seqüência ou cadeia de símbolos de um<br />

alfabeto. A palavra vazia será representada por ε e utilizaremos Σ+ para denotar<br />

todas as palavras de um alfabeto Σ, com exceção da palavra vazia. Logo, podemos<br />

concluir que Σ+ = Σ* - { ε }. É bom lembrar que Σ = { } é um alfabeto válido, mesmo<br />

sem possuir símbolos.<br />

Exemplo:<br />

Utilizando a nossa definição anterior de Σ={a,b}, teríamos Σ*={ε, a, b,<br />

aa, bb, aaa, bbb, ...} e Σ+={a, b, aa, bb, aaa, bbb, ...}.<br />

O comprimento de uma palavra é igual ao número de símbolos que ela<br />

possui. Exemplo:<br />

| a | = 1 lê-se o comprimento de “a” é 1.<br />

| aaa | = 3 lê-se o comprimento de “aaa” é 3.<br />

1.1.3. Gramática<br />

Em MENEZES (2001), obtemos a definição formal de gramática:<br />

“Uma gramática é uma quádrupla ordenada G = (V, T, P, S) onde:<br />

V conjunto de símbolos variáveis ou não terminais;<br />

T conjunto de símbolos terminais, disjunto de V;<br />

P conjunto finitos de pares, denominados regras de produção;<br />

S elemento de V denominado variável inicial.”<br />

Na notação acima, a linguagem anterior poderia ser representada por:<br />

G = ( { A, B, S}, { a, b, c, d }, P, S )<br />

Onde P = { S � AB, A � a | b, B � c | d }<br />

Desta forma podemos dizer que L é a linguagem gerada por G, ou seja,<br />

L(G) ou simplesmente GERA(G).<br />

Dizemos que duas gramáticas são equivalentes se e somente se as<br />

linguagens por ela geradas forem iguais, ou seja, supondo G1 e G2 gramáticas, G1<br />

e G2 são equivalentes se e somente se GERA(G1)=GERA(G2).<br />

20

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!