我正在使用pyparsing来解析vcd(值更改转储)文件.本质上,我想读取文件,将其解析为内部字典,并操纵值.
没有详细介绍结构,我的问题发生在识别嵌套类别.
在vcd文件中,您有"范围",其中包括连线和可能更深(嵌套)的范围.把它们想象成水平.
所以在我的文件中,我有:
$scope module toplevel $end
$scope module midlevel $end
$var wire a $end
$var wire b $end
$upscope $end
$var wire c $end
$var wire d $end
$var wire e $end
$scope module extralevel $end
$var wire f $end
$var wire g $end
$upscope $end
$var wire h $end
$var wire i $end
$upscope $end
Run Code Online (Sandbox Code Playgroud)
所以'toplevel'包含所有(a - i),'midlevel'包含(a - b),'extralevel'包含(f - g)等.
这是我解析此部分的代码(代码段):
scope_header = Group(Literal('$scope') + Word(alphas) + Word(alphas) + \
Literal('$end'))
wire_map = Group(Literal('$var') + …Run Code Online (Sandbox Code Playgroud) 我是Makefiles的新手所以请耐心等待.
我需要修改一个Makefile,这样一些规则会根据变量调用不同的实用程序.
现在,规则看起来像:
ci:
[shell syntax for tool (A)]
Run Code Online (Sandbox Code Playgroud)
但是现在我需要ci根据变量使用不同的语法.所以我在文件的顶部定义了一个全局变量:
TOOL = toolA
Run Code Online (Sandbox Code Playgroud)
要么
TOOL = toolB
Run Code Online (Sandbox Code Playgroud)
理想情况下我喜欢的是这样的东西,但显然它不起作用:
ifeq ($TOOL, toolA)
ci:
[syntax for tool (A)]
else
ci:
[syntax for tool (B)
endif
Run Code Online (Sandbox Code Playgroud)
有谁知道正确实现这样的事情的最佳方法?
谢谢!!
编辑:工具语法比一行更复杂.有时它的多行而不仅仅是"toolA args等".对困惑感到抱歉!
如何将csh脚本的stdin重定向到python脚本的stdin?
我有一个cgi脚本,我正在用在Solaris机器上运行的csh编写.这个csh脚本是从stdin读取的python脚本的包装器(我知道,在csh中编写脚本很糟糕但在这种情况下我不得不这样做).
感谢帮助!(抱歉n00b问题!)
我正在编写一个py脚本,它从csv文件中读取行,操作它们并将它们放回原处.到目前为止,我有csv列出转换工作.
我遇到的问题是当我遍历临时列表时,for循环会更改所有临时列表,而不仅仅是我想要的那个.这是我想说的一个简单例子.
>>> l = [['hi', 'ho'],['no', 'go']]
>>> t = []
>>> y = []
>>>
>>> for row in l:
... row[0] = '123'
... y.append(row)
... t.append(row)
...
>>> y
[['123', 'ho'], ['123', 'go']]
>>> t
[['123', 'ho'], ['123', 'go']]
Run Code Online (Sandbox Code Playgroud)
所以上面的内容很简单(希望如此).(我们假设除了复制列表之外我还想做其他事情.只是想保持简单).
但现在这是我没有得到的部分.
>>> z = []
>>> for row in y:
... row[0] = 'xxxx'
... z.append(row)
...
>>> z
[['xxxx', 'ho'], ['xxxx', 'go']]
>>> t
[['xxxx', 'ho'], ['xxxx', 'go']]
>>> y
[['xxxx', 'ho'], ['xxxx', 'go']]
Run Code Online (Sandbox Code Playgroud)
当我想修改子列表中的第一部分,并将其保存到新列表'z'时,它也会修改列表t! …