Maraigue風。

Maraigue(H. Hiro)のブログ

[プログラミング][Python] 簡易文法チェッカー

2008年04月23日 18時27分36秒 | プログラミング
事の発端は、Twitterでのこの発言。



maraigue: PerlやRubyはruby -e "script"でスクリプト実行できるけど、Pythonはshとかと同じでpython -c "script"なのね。
http://twitter.com/maraigue/statuses/794964644

gan2: @maraigue Perl や Ruby の -c は Python では何になってるのか気になる
http://twitter.com/gan2/statuses/794965707



PerlやRubyでは、コマンドラインで「ruby -c myscript.rb」のように入力することで、スクリプトの文法のチェックのみを行うことができる。

ところがPythonでは、そのような機能はpythonインタプリタには無いようなのである(文法チェック用の外部ツールは存在する)。

そこで簡易的な文法チェックスクリプトを作ってみた。
以下のシェルスクリプトを適当な名前のファイル(例えば pysyntax)に保存し、実行権限を与える。(※全角の円記号は半角に直して下さい)

#!/bin/sh
( echo "import sys¥nsys.exit()"; cat $1 ) | python -

その上で、シェル上で

$ ./pysyntax myscript.py

のように入力すると、文法に問題がなければ何も表示されず、文法に問題があればそのエラーが表示される。
なお、引数に与えるスクリプトがカレントディレクトリにない場合、ひょっとしたら上手くいかないかもしれません。


仕組みはいたって簡単で、引数に与えたファイルの先頭に

import sys
sys.exit()

の2行を付け加えたうえで、pythonインタプリタに実行させているのである。sys.exit()以下は実行はされないが、スクリプトの解析の対象にはなるため、そこで文法エラーがあればpythonインタプリタがエラーメッセージを出してくれる、という仕組みである。
ジャンル:
その他
キーワード
カレントディレクトリ シェルスクリプト コマンドライン 文法チェッカー
コメント (0) |  トラックバック (1) |  この記事についてブログを書く
Messenger この記事をはてなブックマークに追加 mixiチェック シェア
« [ネタ][VOCALOID]... | トップ | ブログを正式に移... »

コメント

コメントはありません。

コメントを投稿


コメント利用規約に同意の上コメント投稿を行ってください。
※文字化け等の原因になりますので、顔文字の利用はお控えください。
下記数字4桁を入力し、投稿ボタンを押してください。この数字を読み取っていただくことで自動化されたプログラムによる投稿でないことを確認させていただいております。
数字4桁

トラックバック

この記事のトラックバック  Ping-URL
[Python][Mercurial]巡回 (常山日記)
Pythonでわかりにくくナベアツ問題 メールの内容を Python で mantis に自動登録 その4 [python]-1 isn’t false Sending binary data through stdout on Windows MercurialリポジトリをCGIで公開 coreserverでMercurial 整数問題 今日のPython [everyday][parser][PLY]...

あわせて読む