javacc - delete left recursion in a grammar -


i have grammar:

agent  = nil   | @   | id   | act . agent  | agent + agent  | agent "|" agent  | agent \ restriction  |  agent [relabeling]  | agent agent_frame end  | automation  | (agent) 

where priorities are:

"where" < "+" < "|" < "\" < "." < "[" < "nil", "@" 

i need delete left recursion respecting priorities ( , write in javacc).

can me delete recursion?

dinesh thank answer, solution give me conflict in javacc (agent-postfix)*. solved in way:

agent=agent2 agent' agent'= "where" agent_frame "end" agent' | epsilon  agent2= agent3 agent2' agent2'= "+" agent3 agent2' | epsilon  agent3= agent4 agent3' agent3'= "|" agent4 agent3' | epsilon  agent4 = agent5 agent4' agent4'= "\" restriction agent4' | epsilon  agent5: act "." agent | agent6  agent6 = agent7 agent6' agent6'= "[" relabeling "]" agent6' | epsilon  agent7= id | automaton | "(" agent ")" | "nil" | "@" 

but don't know if solution correct.

thank much.

regards domenico


Comments