前端之家收集整理的这篇文章主要介绍了
如何用flex / bison做类似python的缩进,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望我的语言有两个
功能,使
Python成为一种很好的格式语言:
>每行一条声明
>块从另一个缩进级别开始,直到结束
任何人都可以给我一个详细的提示,如何使用flex / bison-like工具来实现这一点?这样的块特征迫使用户编写可读代码.
我认为没有办法使用只有lex / yacc的类似python的语法解析器,因为lex / yacc只能处理Context Free Grammar,但类似python的语法是上下文相关的.
原因是,如果要查找语句和前一个语句是否在同一个块中,则应该让该语句知道前一个语句的缩进,即上下文.
我建议你除了lex / yacc之外还要做一些额外的逻辑,以达到这一点,而不会那么难.您可以在“语法”模块中读取代码here.
关键是,让lex / yacc部分解析单个语句,并缩进级别,并将一些打包语句写入块中.
原文链接:https://www.f2er.com/flex/174311.html