加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何用flex / bison做类似python的缩进

发布时间:2020-12-15 02:14:53 所属栏目:百科 来源:网络整理
导读:我希望我的语言有两个功能,使 Python成为一种很好的格式语言: 每行一条声明 块从另一个缩进级别开始,直到结束 任何人都可以给我一个详细的提示,如何使用flex / bison-like工具来实现这一点?这样的块特征迫使用户编写可读代码. 解决方法 我认为没有办法使用
我希望我的语言有两个功能,使 Python成为一种很好的格式语言:

>每行一条声明
>块从另一个缩进级别开始,直到结束

任何人都可以给我一个详细的提示,如何使用flex / bison-like工具来实现这一点?这样的块特征迫使用户编写可读代码.

解决方法

我认为没有办法使用只有lex / yacc的类似python的语法解析器,因为lex / yacc只能处理Context Free Grammar,但类似python的语法是上下文相关的.

原因是,如果要查找语句和前一个语句是否在同一个块中,则应该让该语句知道前一个语句的缩进,即上下文.

我建议你除了lex / yacc之外还要做一些额外的逻辑,以达到这一点,而不会那么难.您可以在“语法”模块中读取代码here.

关键是,让lex / yacc部分解析单个语句,并缩进级别,并将一些打包语句写入块中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读