解析ALMOST Python语言的最佳方法是什么?
我正在研究在
Python之上实现的特定于域的语言.语法非常接近Python,直到现在我们才进行了一些简单的字符串转换,然后将其转换为ast.例如,缩进由#endfor / #endwhile / #endif语句替换,因此我们将缩进标准化,同时它仍然是字符串.
我想知道是否有更好的方法?据我所知,ast是硬解码来解析Python语法的,除了http://docs.python.org/library/ast.html#module-ast之外我找不到任何文档(我猜想源代码本身). 有没有人有PyParsing,ANTLR或PLY的个人经验? 有一些模糊的计划将解释器重写为将我们的语言转换为有效的Python并将其提供给Python解释器本身的东西,所以我想要与编译兼容的东西,但这不是一个交易破坏者. 更新:我刚刚想到了 from __future__ import print_function,with_statement 改变Python解析以下来源的方式.但是,PEP 236表明这是编译器功能的语法窗口修整.有人可以确认试图覆盖/扩展__future__不是我的问题的正确解决方案吗? 解决方法
PLY有效.这很奇怪,因为它模仿lex / yacc的方式不是非常pythonic.
lex和yacc都有一个隐式接口,可以将lex的输出作为独立程序运行.这个“功能”被精心保留.类似地,对于PLY的yacc样特征.创建一个奇怪的,隐含的独立主程序的“特征”被仔细保留. 但是,作为lex / yacc兼容工具集的PLY非常好.您的所有lex / yacc技能都会得到保留. [编辑评论. “修复”Python的语法可能是浪费时间.几乎每个人都可以在没有任何帮助的情检查C,Java,C甚至Pascal代码,你会发现几乎每个人都可以缩进.实际上,人们不遗余力地在不需要的地方缩进Java.如果缩进在Java中不重要,为什么人们做得这么好呢?] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |