recursion - Grammar transformation for recursive descent -


i trying transform given grammar in order ready recursive descent. rules end are:

seq --> constseq | operz      z --> exprx | operx    y --> exprx | operx    x --> expr | exproperx | ε  . 

what supposed z , y same?

is of them eliminated?

a bit hard without knowing software system used (and intelligence).

if on left hand side non-terminals must unique (no or'ed rules y --> exprx , y --> operx), purpose metainformation, maybe different semantic interpretation of generated ast.

but yes, fine possibility loop reducing grammar. on other hand produced function y call z.

(mind exprx | operx might same operx | exprx depending on specific grammar's symbols or type ll(1).)

also a --> x b , b -> x a redundant.

one need loop on rules till no reduction possible.

boolean checkrulesarethesame(rule rule1, rule rule2, context context) {     context.setnonterminalsthesame(true, rule1.nonterminal, rule2.nonterminal);     if (productionsthesame(rule1.production, rule2.production, context)) {         return true;     }     context.setnonterminalsthesame(false, rule1.nonterminal, rule2.nonterminal);     return false; } 

the rarer case a --> x b , b -> x c , c -> x a not found comparison of 2 non-terminals.


Popular posts from this blog