私はJavaのような言語のような "擬似コード"のための単純なパーサを作りたいと思っていました。擬似コードは次のようになり サンプル - 上記のコードは、その中に堅固であることをシンプルな疑似コード言語用のパーサーを作成していますか?
//This is a comment
$x1 = readint
$x2 = readint
$dx = $x2 - $x1
#f = $dx/2
if ($dx > 0)
{
loop while(#f > 1)
{
print(#f)
#f = #f/2
}
}
注意が、ライン上に複数の文があることができない、整数は$で始まり、山車等#で始まる
このようなコードを解析するには、最初にStringTokenizer
を使用してから正規表現を使用して、整数変数、浮動小数点変数、またはキーワードと一致させることができます。
このアプローチは良いですか?ループ内のステートメントの場合、どのように式を格納できますか?各繰り返しでトークン化する必要はありませんか?
式(#f = #f/2のような)を表記法に変換し、スタックに格納すると思います。そして、各反復において、オペランドをポップしながら、私は各変数の値を置き換えることができました。しかし、これは十分に効率的ですか?
ご協力いただきありがとうございます。
[この質問の可能な重複](0120-18753) – nobeh