I have this grammar:
agent
= nil
| @
| id
| act . agent
| agent + agent
| agent "|" agent
| agent \ restriction
| agent [relabeling]
| agent where agent_frame end
| automation
| (agent)
where the priorities are:
"where" < "+" < "|" < "\" < "." < "[" < "nil", "@"
I need to delete the left recursion respecting the priorities ( and write all in JavaCC).
Can you help me to delete recursion?
Dinesh thank you for the answer, your solution give me a conflict in JavaCC with (agent-postfix)*. I solved in this 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 I don't know if this solution is correct.
Thank you very much.
Regards Domenico