私はプログラミング言語を作成しています。この言語では、Pythonにコンパイルするプログラムを作成しています。レクサーは必要ありません。なぜなら、ほとんどの文法は正規表現でPythonに変換できるからです。Pythonで複数の正規表現
import re
infile = input()
output = open(infile + ".py","w")
input = open(infile + ".hlx")
# I'm aware the .hlx extension is already taken, but it doesn't really matter.
for line in input:
output.write(re.sub(r'function (\S+) (\S+) =', r'def \1(\2):', line))
for line in input:
output.write(re.sub(r'print(.+)', r'print(\1)', line))
for line in input:
output.write(re.sub(r'call (\S+) (\S+)', r'\1(\2)', line))
# More regexes go here, eventually.
input.close()
output.close()
私は、私はそれらを一緒に置けば、それは各ラインを3回に代わるため、ステートメントのために別々にそれぞれの正規表現を入れていた:
は、ここで私がこれまで持っているものです。
ここで問題となるのは、最初の正規表現のうちの1つだけを実行することです。順序はここで本当に重要ではありませんが、私はまだすべての正規表現を実行するプログラムが必要です。どうすればいい?ところで
は、ここで私は私の言葉で置き換えたいコードは次のとおりです。
function hello input =
print "Hello, ", input, "!"
hello "world"
そして、ここでは、私はPythonででそれを置換するコードは次のとおりです。
def hello(input):
print("Hello, " + input + "!")
hello("world")
開いているファイルを何度も繰り返したい場合は、最初に 'seek()'する必要がありますファイルのまた、各 're.sub'呼び出しの出力を変数に代入して、' re.sub'を呼び出す前に同じ行に呼び出すのはなぜですか? – bunji