在上下文无关语法中删除左递归 [英] Removing Left Recursion in a Context Free Grammar

查看:84
本文介绍了在上下文无关语法中删除左递归的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图找出在上下文无关的语法中删除左递归的方法。我已经习惯了某些形式,但这使我有些困惑。

Trying to figure out removing left recursion in context free grammars. I'm used to certain forms, but this one has me a bit boggled.

S --> S {S} S | (A) | a
A --> {S} A | epsilon

我还必须设计一个不错的解析器,我可以做到。但是,弄清楚这种左递归(尤其是在第一个递归上)让我感到困惑。

I also have to design a decent parser, which I can do. However, figuring out this left recursion (especially on the first one) has me confused.

推荐答案

尝试一下:

S --> a [ { S } S ]
    | ( [ A ] ) [ {S} S ]


A --> { S } [ A ]

这篇关于在上下文无关语法中删除左递归的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆