[Cascavel-pm] [OT] Bison, alguém?

Luis Motta Campos luismottacampos em yahoo.co.uk
Quinta Janeiro 31 05:16:01 PST 2008


Flavio S. Glock wrote:
> Você precisa usar "actions", que são pequenos pedaços de código
> dentro da gramática. Você provavelmente precisará de actions em 3
> lugares:
> 
> Ao reconhecer o início de uma lista - zere os flags que representam
> os atributos obrigatórios; Ao reconhecer cada atributo - marque o
> flag correspondente como "presente"; No final da lista - verifique se
> todos os atributos foram apresentados. Este é o lugar em que você
> deve inserir uma mensagem de erro.

OK, não se preocupe com os "actions" agora, Flávio... eu estou apenas
querendo estabelecer que a ausência de um dos atributos "mandatórios" é
considerado "erro de sintaxe" pelo Grammar, sem precisar de regras de
negócio para isso... você pode por favor me indicar se existe uma
técnica que eu deveria usar para dizer a especificação abaixo?

Uma lista não-ordenada de atributos, contendo pelo menos:
  1. Um 'person:', sempre o primeiro da lista;
  2. Exatamente um 'nic-hdl:' (em qualquer posição da lista)
  3. Pelo menos uma instância dos atributos
('address:','phone:','e-mail:'), (em qualquer posição da lista);
  4. Talvez um ou mais atributos 'fax-no:' (em qualquer posição da lista);


Eu consegui resolver (1) (tenho um 'person:', está sempre na "cabeça" da
lista); parte de (3) (eu tenho a lista de atributos em qualquer ordem,
mas não garanto que eles aparecem pelo menos uma vez cada; parte de (4)
eu reconheço zero ou mais listas de 'fax-no:', mas não consigo dizer se
ele apareceu ou não até agora.

Pelo que eu estou entendendo da tua resposta, tudo o que está faltando
agora deve ser implementado como "actions" dentro da gramática.

Isso não é um pouco demais? Talvez exista uma forma de garantir que
determinados elementos aparecem pelo menos uma vez?

Eu poderia tentar gerar regras para todas as combinações possíveis, mas
acho que isso é regra demais, a coisa vai ficar bagunçada. Deve existir
uma forma mais simples de fazer.

Qualquer sugestão é bem-vinda.

Eu vou continuar mexendo com isso hoje à noite.
Obrigado pelas dicas!
Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}



Mais detalhes sobre a lista de discussão Cascavel-pm