18.04.2013 Views

Compiladores - Pedro Freire

Compiladores - Pedro Freire

Compiladores - Pedro Freire

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

Exemplos, assumindo que o utilizador escreve<br />

Copacabana<br />

quando corre o programa flex:<br />

• Com a expressão: a.a<br />

são encontradas (matched) as seguintes ocorrências marcadas com fundos<br />

verde e amarelo (cores intercaladas para cada ocorrência):<br />

Copacabana<br />

Note-se que a sequência sobreposta “aba” não é encontrada.<br />

• Com a expressão: [abc]<br />

são encontradas: Copacabana<br />

• Com a expressão: [A-Z]<br />

é encontrada: Copacabana<br />

• Com a expressão: a.*a<br />

é encontrada: Copacabana (* é ganancioso)<br />

• Com a expressão: (a.)*<br />

é encontrada: Copacabana<br />

• Com a expressão: a.?<br />

são encontradas: Copacabana<br />

Mais exemplos:<br />

• Expressão para detectar um número de PIN (“####”):<br />

[0-9]{4}<br />

• Expressão ingénua para detectar um dos 4 números de um número IP:<br />

[0-9]{1,3}<br />

• Expressão ingénua para detectar uma string:<br />

["].*["]<br />

(as aspas têm de ser representadas como ["] – veremos porquê mais<br />

tarde).<br />

Problema: com o texto: var="a"+x+"b";<br />

esta expressão encontra: var="a"+x+"b"; (porque o * é ganancioso)<br />

• Expressão melhorada para detectar uma string:<br />

["][^"]*["]<br />

Com o texto: var="a"+x+"b";<br />

esta expressão encontra: var="a"+x+"b";<br />

É um erro comum não reparar que [ana] ≠ ana.<br />

© 2010 <strong>Pedro</strong> <strong>Freire</strong> // <strong>Compiladores</strong> pág. 11<br />

www.pedrofreire.com

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

Saved successfully!

Ooh no, something went wrong!