2

私はそのようなプログラムを実装したいと思っています: それはいくつかの変数を含むいくつかの式を読み込みます. これらの変数は後で設定され、プログラムは最終結果を計算する必要があります ( SQL 準備済みステートメントのように)。

たとえば、式は のようなもので、とが後で設定され$foo + $bar + 2たときに結果を計算する必要があります。$foo$bar

ラジェルレモンで実装しようとしています。Ragelを使用して式を解析することを学びました。しかし、変数を処理して計算を行うためにレモンを使用する方法がわかりません。

助けてくれてありがとう。

4

1 に答える 1

2

式の AST を構築する必要があります。このツリーのすべての変数について、変数へのポインタを保存する必要があります (たとえば、名前だけ)。評価時に、変数エントリの値を指定する必要があります。たとえば、辞書かもしれません<variable name> -> <variable value>

Lemon を使用して C++ で AST を構築する例として、 https ://github.com/kvirund/calculator を提案できます。

veei@sauron:~/git/calculator/build$ ./test.it
expr> foo=1
Value: 1
expr> bar=2
Value: 2
expr> foo+bar+2
Value: 5
expr>

しかし、トークンプロバイダーとして Ragel の代わりに re2c が使用されました。

于 2016-01-07T19:12:27.027 に答える