首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python之上解析特定于域的语言?使用IPython的架构是什么?

如何在Python之上解析特定于域的语言?使用IPython的架构是什么?
EN

Stack Overflow用户
提问于 2014-12-03 14:48:33
回答 2查看 182关注 0票数 2

我希望将特定于域的语言构建为Python的超集。神秘的命令,如

代码语言:javascript
运行
复制
f7:10y=x^2

为了尽量减少输入,应该将其解析为普通的Python。

代码语言:javascript
运行
复制
for k in range(7,10):
    f[k].set_y( expr='x^2' )

在被处决之前。可能,命令行接口应该是IPython.

什么是合适的体系结构:我应该在IPython命令行shell或它的内核守护进程中实现神秘到普通的Python转换吗?是否有有用的库/教程/示例?

或者更笼统地说:有例子说明如何在Python中添加复杂的语法糖吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-03 16:50:09

在这里,一个在任何地方都能奏效的解决方案实际上不是一个选择。您想要实现的是修改Python解析器的核心。

备选方案如下:

  1. 用准备器。在IPython中有一些钩子可用于以下内容:http://ipython.org/ipython-doc/dev/config/inputtransforms.html 下面是一个用例示例: 进口re range_search =re.compile(‘(?P.+) (?P\d+):(?P\d+) (?P^=+)=(?P.+)’‘,re.VERBOSE) range_replace =’在范围内k(\g,\g):\gk.set_\g(expr=‘\g’)‘’print range_search.sub(range_replace ),'f7:10y=x^2') @StatelessInputTransformer.wrap def inline_loop(行):返回range_search.sub(range_replace,line)

  1. 用修改重新编译Python

  1. 在这方面使用一种更灵活的语言,如ruby。
票数 1
EN

Stack Overflow用户

发布于 2014-12-03 15:27:45

对于PyPy,这是相当容易做到的。您可以将一些内容添加到语法文件中,这样就完成了。

下面是一个例子:https://bitbucket.org/adonohue/units/src/bb1b20dd739f73fe495723d24cd266b67549f5c9/unitPython/patches?at=default

它允许units库执行以下操作:

代码语言:javascript
运行
复制
print(2cm / 0.5 s)
-> 4.0 cm / s
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27274607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档