以下是使用ast和symtable 包的Python代码段.我试图解析代码并检查类型.但我不明白如何遍历对象以获取被引用的实际变量.
下面的代码实现了一个NodeVisitor,并且一个函数被呈现给编译器并由编译器和ast走了.正在分析的函数(eval_types)传递了几个对象.
下面是构成示例的代码块.我为每个块添加了一些注释.要运行代码,需要重新组装"块".
导入和用于解压缩代码块的函数.
import inspect
import ast
import symtable
from tokenize import generate_tokens, untokenize, INDENT
from cStringIO import StringIO
# _dedent borrowed from the myhdl package (www.myhdl.org)
def _dedent(s):
"""Dedent python code string."""
result = [t[:2] for t in generate_tokens(StringIO(s).readline)]
# set initial indent to 0 if any
if result[0][0] == INDENT:
result[0] = (INDENT, '')
return untokenize(result)
Run Code Online (Sandbox Code Playgroud)
以下是节点访问者,它具有通用的未处理和名称访问者重载.
class NodeVisitor(ast.NodeVisitor):
def __init__(self, SymbolTable):
self.symtable = SymbolTable
for child in SymbolTable.get_children():
self.symtable = …Run Code Online (Sandbox Code Playgroud) 我目前正在为夏季项目学习MyHDL.我有一个问题,掌握屈服声明的功能.尽管MyHDL基于python是正确的,但它以专门的方式使用其yield语句.相同的链接是:http: //www.myhdl.org/doc/current/manual/reference.html#myhdl.always
它指出: MyHDL生成器是具有专门yield语句的标准Python生成器.在硬件描述语言中,等效语句称为敏感性列表.MyHDL生成器中yield语句的一般格式是:yield clause [,clause ...]当生成器执行yield语句时,它的执行在该点暂停.同时,每个子句都是一个触发器对象,它定义了应该恢复生成器的条件.但是,每次调用yield语句时,无论子句数是多少,生成器都会恢复一次.这发生在发生的第一个触发器上.
我无法理解它.有人可以用简单的语言解释一下吗?或者可能将我重定向到另一个来源?
如果你能提供帮助,我将不胜感激.谢谢!
问候
我正在研究在FPGA上进行开发,但是用Python或Scala编写代码并将其转换为VHDL或Verilog会更容易.
我希望将许多传感器连接到设备上,随着数据的进入,计算速度非常快,因此可以在视频墙上显示,因此FPGA可以输入数十个传感器和几个视频控制器.壁.
这是用Scala编写的代码库.对于这个我很好奇,如果代码是用Java编写的,而Scala会影响它生成的内容.
http://simplifide.com/drupal6/
这是VHDL到VHDL转换器.
有了这些,我很好奇这些局限性.
我更喜欢简化,因为我在Scala比Python强,但似乎myhdl可能是一个更强大的平台,只是从一些基本的环顾四周.
更新:
FPGA的原因在于它可以很好地同时完成多个任务,因此当数据进入时,根据用户的需要,根据实验,可以很容易地将FPGA上的代码更改为能够适应需求.
因此,例如,如果办公楼的每层楼都有8 x 3个不同的气象传感器,那么就有温度,风速,气压传感器(每个传感器每个传感器有8个),并添加传感器来测试变形.墙壁,然后一个实时界面,同时读取这些并不断更新视觉显示可能会有所帮助.
这是一个组成的例子,但它可以解释为什么FPGA会有用,否则我需要许多不同的DSP,然后将它们送到计算机中进行可视化显示,而FPGA可以做得更快,因为它是硬件,具有较低的功率需求.
有两个开源库可以帮助使开发更容易,但我不确定哪个是用于将程序转换为VHDL/Verilog的更好的平台.
这只是一个例子.如果我想在FPGA上进行量子电路仿真,正如本文所述(http://www.cc.gatech.edu/computing/nano/documents/Radecka%20-%20FPGA%20Emulation%20of%20Quantum%20Circuits .pdf)然后,作为一个程序,这比手工构建一个大电路更容易.