Compiladores - Pedro Freire
Compiladores - Pedro Freire
Compiladores - Pedro Freire
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