-
Title:
02-25 Rule Order
-
Description:
-
Como vimos no último teste,
-
não é sempre claro o que vai acontecer quando nossas definições de token se sobrepõem.
-
A sequência de 7 caracteres "hello"
-
casa com nossa expressão regular para WORD
-
e também com nossa expressão regular para STRING.
-
Isso é um problema não apenas com linguagens de programação,
-
mas também com linguagens naturais.
-
Como o hipotético dono dests restaurante, você perceberia
-
que "We don't just serve hamburgers, we serve people"
-
poderia ser interpretado de maneira incorreta.
-
Acho que esses hamburgers são de soja :-)
-
Queremos ter regras definitivas, que nos permitam escolher
-
qual delas nós preferimos
-
De fato, vamos usar uma regra muito simples.
-
A primeira da lista ganha,
-
aquela que estiver mais no topo do arquivo.
-
Então, este é o nosso vencedor, e terá prioridade sobre STRING.
-
Se você está fazendo um analisador léxico para HTML ou JavaScript,
-
a ordem das definições é muito importante.
-
Vamos investigar isso na forma de um teste.
-
Suponha que temos como entrada o string -- hello, "world" --
-
e queremos que isso resulte em WORD --
-
a palavra hello -- seguido de STRING.
-
Vou dar para você 3 regras,
-
e quero que voc6e me diga qual delas tem que vir por último,
-
para que tenhamos o efeito desejado.
-
E aqui, porque você viu tudo isso antes, estou omitindo alguns detalhes,
-
como COLON, TOKEN etc.
-
O que eu quero é que você me diga
-
qual dessas funções, qual dessas regras,
-
teria que vir por último, tendo em mente que a que vem primeiro
-
tem prioridade, quando separamos hello, "world" em
-
um token WORD seguido de STRING.