• Nenhum resultado encontrado

float match0(char* s) if (!strncmp(s, "0.0", 3)) return 0.0 ;

N/A
N/A
Protected

Academic year: 2022

Share "float match0(char* s) if (!strncmp(s, "0.0", 3)) return 0.0 ;"

Copied!
8
0
0

Texto

(1)

An´alise L´exica

1. Processo de an´alise:

l´exica: identificac¸˜ao das palavras ou “tokens” da linguagem no programa.

sint´atica: organiza os tokens de acordo com a regras gramticais da linguagem.

semˆantica: calcula o significado do programa.

2. Exemplos de tokens: identificadores, n ´umeros, parˆentesis.

3. “N˜ao-exemplos”: coment´arios, diretivas de preprocessador, macros, caracteres especiais como branco, de tabulac¸˜ao e quebra-de-linha.

4. A an´alise l´exica do programa

float match0(char* s)

if (!strncmp(s, "0.0", 3)) return 0.0 ;

(2)

retorna o “stream”: FLOAT ID(match0) LPAREN CHAR STAR ID(s) RPAREN IF LPAREN BANG ID(strncmp) LPAREN

ID(s) COMMA STRING(0.0) COMMA NUM(3) RPAREN RPAREN RETURN REAL(0.0) SEMI RBRACE EOF

5. A linguagem formal para a especificac¸˜ao do (analisador) l´exico de uma linguagem ´e a de express˜oes regulares, cujo significador ´e um autˆomato finito determin´ıstico.

6. A (meta-)linguagem de express ˜oes regulares ´e:

s´ımbolo: a, b, c alternativa: |

concatenac¸˜ao: a b ou simplesmente ab string vazia:

repetic¸˜ao: a zero ou mais strings (fecho de Kleene)

(3)

( 0 | 1 ) 0 – n´umeros bin´arios m´ultiplos de .

b (abb) (a | ) – strings de as e bs sem as consecutivos.

8. Abreviac¸ ˜oes:

[abcd] (a | b | c | d) [b-g] [bcdefg]

M? (M | ) M

(M M )

9. Exemplos:

(4)

if IF

[a-z][a-z0-9] ID

[0-9] NUM

([0-9] "."[0-9] ) | REAL ([0-9] "."[0-9] )

("--"[a-z] " n") | Caracteres a serem ignorados (" " | " n" | " t") pelo scanner.

10. Ambiguidade: O l´exico deve ser completo, sempre reconhecendo ou n˜ao uma cadeia. Exemplo: if8 deve ser analisado como sendo um ou dois tokens?

11. Regras para soluc¸˜ao da ambiguidade:

o casamento deve ser o mais longo – o pr ´oximo token ´e a maior substring da entrada que “case” com uma express˜ao regular.

(5)

prioridade nas regras – dada a cadeia mais longa, o tipo do token

´e dado pela primeira regra que “casar”. (Da tipo aos tokens da string.)

12. A semˆantica da linguagem de express ˜oes regulares ´e exatamente um autˆomato finito. (Fig. 2.4, pg 22 do livro.)

13. Um autˆomato finito ´e dito n˜ao-determin´ıstico quando a partir de um estado ´e poss´ıvel transitar para dois outros estados diferentes com um mesmo s´ımbolo.

?>=<

89:;

?>=< 89:;

**

tt

?>=< 89:;

14. Express˜oes regulares podem ser expressas como aut ˆomatos finitos n˜ao determin´ısticos, fazendo-se uso da transic¸ ˜oes- que permitem a mudanc¸a de estado sem o consumo de um s´ımbolo. (Fig. 2.6, pg. 26 do livro.)

15. A figura 2.7, pg. 27 do livro mostra o aut ˆomato finito

(6)

n˜ao-determin´ıstico associado aos tokens IF, ID e NUM.

16. Um autˆomato finitos n˜ao-determin´ıstico pode ser transformado num determin´ıstico atrav´es do c´alculo do fecho- . Intuitivamente, o

fecho- colapsa os estados do aut ˆomato n˜ao-determin´ıstico produzindo o determin´ıstico associado.

17. Considere a figura 2.7, pg 27 do livro. A t´ıtulo de exemplo,

simulemos a entrada in neste aut ˆomato. Comec¸ando no estado , ao inv´es de “adivinhar” qual transic¸˜ao- tomar, consideremos que a

m´aquina possa estar em qualquer dos estados no conjunto

. Em outras palavras, computamos o fecho- de . 18. Uma vez consumindo i do estado alcanc¸amos o estado , de

alcanc¸amos , de lugar nenhum e de chegamos a , constitu´ındo o conjunto

. Mas o estado s ´o ´e definido

quando concluirmos a computac¸˜ao do fecho- : de chegamos a e

(7)

os estados e , no autˆomato determin´ısitico associado ao autˆomato n˜ao-determin´ısitco representado na figura 2.7.

19. O algoritmo que formaliza esta transformac¸˜ao pode ser encontrada nas p´ags. 28 e 29 do livro texto.

20. Neste curso estaremos utilizando a ferramenta SableCC, que ´e um gerador de analisador sint´atico. SableCC possui uma

meta-linguagem para a especificac¸˜ao do l´exico (e obviamente do sint´atico, i.e. a gram´atica) da linguagem para a qual estamos

construindo o compilador.

21. Um exemplo de uma especificac¸˜ao l´exica ´e a seguinte:

(8)

Helpers

digit = [’0’ .. ’9’] ; Tokens

if = ’if’ ;

id = [’a’..’z’]([’a’..’z’] | (digit))* ; number = digit+ ;

real = ((digit)+ ’.’ (digit)*) | (digit)* ’.’ (digit)+) ; whitespace = (’ ’ | ’\t’ | ’\n’ ; comments = (’--’ [’a’..’z’]* ’\n’) ; Ignored Tokens

whitespace, comments;

Referências

Documentos relacionados

Essa superioridade da adubaçào orgânica associada à quImica reduzida, provavelmente se deve à liberaçào lenta dos nutrientes NPKS da palha, alem da melhoria das

Apesar do filtro lento com limpeza retrolavável ser considerado mais rápido durante a limpeza do meio filtrante, a duração média das carreiras de filtração foi

Dessa forma, os objetivos são apresentar e discutir a aceleração como alternativa no processo educacional de alunos com altas habilidades ou superdotação, apresentando um caso

No biotrauma, estratégias ventilatórias não-protetivas levariam a uma hiperativação do sistema imune e à liberação de mediadores inflamatórios, resultando em lesão

Ideias: Uma fotografia em família com as mesmas posições para ver a evolução ao longo dos anos, preparar um calendário de advento, programar um concurso com os amigos de

A partir disso, peça que cada aluno pesquise, selecione e organize uma breve apresentação contando a história de um exemplo de resiliência: pode ser real ou ficcional (da

PARÁGRAFO PRIMEIRO: a CONTRATANTE deverá prestar aos funcionários da CONTRATADA todas as informações e esclarecimentos que eventualmente venham a ser solicitados sobre os

2 No caso do controlo de grupo, estabeleça as ligações elétricas do controlo remoto com a unidade principal quando ligar ao sistema de operação simultânea (as ligações elétricas