0

我需要一些帮助; 我正在尝试用 python 编写一种命令提示符

我需要将文本文件拆分为行,然后将它们拆分为字符串

例子 :

分裂

command1 var1 var2;
command2 (blah, bleh);
command3 blah (b bleh);
command4 var1(blah b(bleh * var2));

进入 :

line1=['command1','var1','var2']

line2=['command2']
line2_sub1=['blah','bleh']

line3=['blah']
line3_sub1=['b','bleh']

line4=['command4']
line4_sub1=['blah','b']
line4_sub2=['bleh','var2']
line4_sub2_operand=['*']

那有可能吗?如果是这样,有人可以解释如何或给我一段代码来做到这一点吗?

非常感谢,

4

4 回答 4

1

有人指出,您的语言似乎没有推理。我所能做的就是将您指向pyparsing,如果我要解决与此类似的问题,我会使用它,这里是python 语言的 pyparsing 示例

于 2012-11-24T07:20:03.267 回答
0

您所说的是编写一种简单的编程语言。如果你知道自己在做什么,这并不是特别困难,但这是大多数人上一整学期的课程来学习的东西。您拥有多种不同类型的词法单元以及看起来不平凡的递归语法这一事实意味着您将需要一个扫描器和一个解析器。如果您真的想自学这样做,那么可能不是一个糟糕的起点。

如果您简化语法,使每个命令只有固定数量的参数,那么您可能可以不使用正则表达式来表示各个命令的语法。

试一试。只是不要指望它会在一夜之间自行解决。

于 2012-11-25T07:16:53.767 回答
0

就像其他人所说的那样,您的语言设计令人困惑,您可能需要对其进行简化。但我会给你你正在寻找的东西,让你用困难的方式弄清楚。

标准的 python 文件对象(由 open() 返回)是行的迭代器,python 字符串类的 split() 方法将字符串拆分为子字符串列表。因此,您可能希望从以下内容开始:

for line in command_file
    words = line.split(' ')

http://docs.python.org/3/library/string.html

于 2012-11-24T08:12:53.643 回答
0

您可以使用此代码逐行读取文件并用单词之间的空格将其拆分。

a= True
f = open(filename)
while a:
    nextline=f.readline()
    wordlist= nextline.split("")
    print(wordlist)
    if nextline=="\n":
        a= False
于 2012-11-24T08:39:51.623 回答