我想用ply解析包含以下内容的文件:
option "option1 name"
option "option2 name"
variable1
{
name: "var1"
size: 5
}
其中选项,名称和 size 是关键字,但变量直接列出,没有任何关键字,并且它们在{}内有属性。
问题在于这个多行变量声明,我无法解决。当解析器获取" variable1"时,它会抛出EOF错误。如果我在一行中给出变量声明,那么就可以了,如下所示:
variable1 { name: "var1" }
我应该如何为此编写词法分析器?我必须使用状态吗?我是否错误地处理换行?
我的目标是从中获取一个python字典,例如:
{'variable1': {'name': 'var1', 'size': 5}}
感谢您的任何提示!
答案 0 :(得分:0)
我猜你正在阅读input()
(或raw_input()
for python 2)。刚刚遇到同样的事情。 input()
只读一行。即使你粘贴了
variable1
{
name: "var1"
size: 5
}
读入的字符串是"variable1"
。你可以做这样的事情作为一种解决方法:
userinput = ''
line = input('> ')
while line != '':
userinput += line
line = input()
# pass `userinput` to your parser
完成阻止后,按两次Enter键。它应该有完整的字符串。