19

単純な C に似た言語用のパーサーを作成するというタスクが与えられました。パーサーを作成したい任意のプログラミング言語とツールを使用できますが、同時に Python を学習しているので、それが私の好みの選択です。

私のパーサーが従わなければならない制限がいくつかあります。まず、次の情報を含むテキスト ファイルを読み取ることができる必要があります。

kind1 : spelling1
kind2 : spelling2
kind3 : spelling3
      .
      .
      .
kindn : spellingn

各種類とスペルは、トークンの種類と言語の値を参照します。このファイルは、コードのサンプルを言語の字句解析器に通した結果です。

次に、パーサーの出力をカスタマイズできなければなりません。理想的には、kind:spelling リストを、言語のコンパイラに渡されて MIPS アセンブリ コードに変換されるトークンの別のシーケンスに変換したファイルを出力したいと考えています。パーサーで生成できるようにしたいものの例を次に示します。

%function int test
  %variable int x
  %variable int y
%begin
  %if %id y , %id x > %do
  %begin
    %return %num 0
  %end
  %return %num 1
%end

誰かが既存の Python パーサー ジェネレーターについてアドバイスしてくれたり、上記の例で探しているようなことを達成できれば、とても助かります。

4

2 に答える 2

19

PyParsingは、パーサーを生成するための Python ツールです。興味深い例がたくさんあります。

簡単に始められます:

from pyparsing import Word, alphas

# define grammar
greet = Word( alphas ) + "," + Word( alphas ) + "!"

# input string
hello = "Hello, World!"

# parse input string
print hello, "->", greet.parseString( hello )
于 2009-11-21T17:51:55.787 に答える