Interpreterパターンは、翻訳者(Interpreter)によって翻訳された指示に従って処理する構造。
23.Interpreter パターン | TECHSCORE(テックスコア)
main.cppで、
式を解析して、計算結果を出力する簡単なインタプリター実装した。
$
$ vi main.cpp
$ g++ -o main main.cpp term.cpp expression.cpp
$ ./main
str = ((1 + 2) * 3 - 4) / 5
str = ((1 + 2) * 3 - 4) / 5
str = ((1 + 2) * 3 - 4)
str = (1 + 2) * 3
str = (1 + 2) * 3
str = (1 + 2)
str = 1
str = 1
operand1_str = 1
operand2_str =
operator_ =
operand1_str = 1
operand2_str =
operator_ =
str = 2
str = 2
operand1_str = 2
operand2_str =
operator_ =
operand1_str = 2
operand2_str =
operator_ =
operand1_str = 1
operand2_str = 2
operator_ = +
str = 3
str = 3
operand1_str = 3
operand2_str =
operator_ =
operand1_str = 3
operand2_str =
operator_ =
operand1_str = (1 + 2)
operand2_str = 3
operator_ = *
operand1_str = (1 + 2) * 3
operand2_str =
operator_ =
str = 4
str = 4
operand1_str = 4
operand2_str =
operator_ =
operand1_str = 4
operand2_str =
operator_ =
operand1_str = (1 + 2) * 3
operand2_str = 4
operator_ = -
str = 5
str = 5
operand1_str = 5
operand2_str =
operator_ =
operand1_str = 5
operand2_str =
operator_ =
operand1_str = ((1 + 2) * 3 - 4)
operand2_str = 5
operator_ = /
operand1_str = ((1 + 2) * 3 - 4) / 5
operand2_str =
operator_ =
result = 1
$
とりあえず、この場合は動いた。
Sample/designpattern/interpreter/interpreter/src/interpreter at master · bg1bgst333/Sample · GitHub