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

このコードを使用して、ファイルを1行ずつ読み取り、単語間のスペースで分割することができます。

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 に答える
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 に答える