2012-03-31 19 views
0

現在、ANTLRのWebサイトからPython 2.5のサンプルを使用しています。私は実際に文法が既に意味論を生成しているのかどうか疑問に思っています。もし存在しなければ、私は何をすることができますか、ANTLRで構文解析した後、Pythonのセマンティクスを生成するために、ANTLRはセマンティクスを提供しますか

答えて

2

言語のセマンティクスを生成するツールはありません。これは、自分で実装する必要があります。

これでPythonコードを解析できました。必要な処理を最初に行い、Pythonコードとして出力し、既存のPython言語の実装を使用して実行することができます。

+0

を見ずに言うことはむしろ難しいです私が意味論を作るのに使うことができるどんな資源も示唆していますか? – marchemike

+0

言語はPython Language Reference:http://docs.python.org/reference/で説明されています。Python言語の意味論を学ぶための最良の手段です。 –

1

ANTLRは構文解析を処理しますが、セマンティクスは処理しません。結局のところ、パーサー生成ツールです。セマンティクスを追加した場合は、完全なPython実装(ライブラリをモジュロ化する)ができます。

1

ANTLRでは、文法規則に関連するアクションの意味論を指定できます。単純なタスクの場合、これは便利ですが、大規模な文法の場合は、AST(抽象構文木)を生成するだけです。つまり、非常に長い文字列ではなく、プログラム内で処理する方が便利です。あなたが使用している例に含まれているかどうか、どのようにこのくらいの

は、あなたはできる、私は意味をするつもりですかに絶対に見当もつかないコード;-)

+0

import_as_name :NAME(NAME NAME)? \t;これはセマンティクスのサンプルですか? – marchemike

+0

これは構文規則であり、正しいプログラムがどのように形成されるかの記述です。セマンティクスは、 'import'ステートメントで言及されたモジュールを見つけ、そこから命令を読み始めるコードです。 –

関連する問題