先日、Pythonを闇改造した でPythonにちょっとした改造を加えてみました。
この修正は、
def register_user(first, last, addr1, addr2):
d = {'first': first,
'last': last,
'addr1': addr1,
'addr2': addr2,
'tel': '123-456-789'}
requests.post(URL, d)
のようなコードを、JavaScriptの
d = {first, last, addr1, addr2, tel:'123-456-789'}
のように、
d = ${first, last, addr1, addr2, tel:'123-456-789'}
と書けるようにする、というパッチでした。
その後、この書き方、わざわざ ${}
なんてしなくとも、
d = {:first, :last, :addr1, :addr2, tel:'123-456-789'}
で良いよね?ということに気がついて、これもパッチ を作ってみました。
これなら、辞書リテラルだけではなく、関数呼び出しにも使えます。例えば、
f(first=first, last=last, addr1=addr1, addr2=addr2)
は、この記法を使うと
f(:first, :last, :addr1, :addr2)
と書けます。
このパッチだと修正もかんたんで、Grammer/python.gram ファイルに、辞書リテラルと関数呼び出しで :変数名
を使えるように定義を追加し、辞書リテラルに変数名から要素を追加する処理を追加するだけで済みました。
ソースを修正したら、Pythonのソースディレクトリで
make regen-pegen
を実行してParserのソースコードを再生成します。あとは普通に
make
で完成です。あっけないぐらいに動いてしまいました。
Copyright © 2020 Atsuo Ishimoto
Powered by miyadaiku