quarta-feira, 9 de junho de 2010

Dúvida implementação

Olá Pessoal,

Estava fazendo a implementação da primeira parte de conversão e fui adicionar as funcionalidades de /n e {n}
Ainda não fiz o /n, mas o {n} quando fui fazer me surgiu uma dúvida. A princípio achei melhor fazer por gramática e encontrei a seguinte gramática:


S->A|B|C|D|T|{A}|{B}|{C}|{D}
A->F+F|F+FX|{F+F}X|F+{FX}
X->+FX|+F|+{FX}
B->GY|G{Y}
Y->G|GY|G{Y}
C->(A)*|(B)*|(C)*|(D)*|T*|({A})*|({B})*|({C})*|({D})*
D->(A)~|(B)~|(C)~|(D)~|T~|({A})~|({B})~|({C})~|({D})~
F->B|C|D|T|{B}|{C}|{D}|T
G->(A)|C|D|T|({A})|{C}|{D}|T
T->a

Não sei se está correta esta gramática, queria pedir uma ajuda verificar se está correta.
Outra maneira seria implementar a funcionalidade {n} por algoritmo mesmo, mas creio que seria tão complicado quanto.

Outra dúvida que me surgiu é que estou pensando em copiar o código do parser e fazer um parser customizado para a conversao de ER para gramática. Creio que será mais fácil, pois de outra forma irá sujar muito o código de nosso parser.

Aguardo opiniões.

Nenhum comentário:

Postar um comentário