[Groonga-commit] groonga/grnxx at 859856a [master] Build an expression based on the postfix notation.

Back to archive index

susumu.yata null+****@clear*****
Thu Jun 12 11:55:42 JST 2014


susumu.yata	2014-06-12 11:55:42 +0900 (Thu, 12 Jun 2014)

  New Revision: 859856a4b073496dda3bc6b1a78648d72132ad37
  https://github.com/groonga/grnxx/commit/859856a4b073496dda3bc6b1a78648d72132ad37

  Message:
    Build an expression based on the postfix notation.

  Modified files:
    new-interface/expression-builder.hpp

  Modified: new-interface/expression-builder.hpp (+23 -16)
===================================================================
--- new-interface/expression-builder.hpp    2014-06-11 11:40:59 +0900 (6aad343)
+++ new-interface/expression-builder.hpp    2014-06-12 11:55:42 +0900 (b689fbd)
@@ -16,38 +16,45 @@ class ExpressionBuilder {
   virtual DataType data_type() const = 0;
 
   // 定数に対応するノードを作成する.
-  // 成功すれば有効なオブジェクトへのポインタを返す.
-  // 失敗したときは *error にその内容を格納し, nullptr を返す.
+  // 成功すれば true を返す.
+  // 失敗したときは *error にその内容を格納し, false を返す.
+  //
+  // 作成されたノードはスタックに積まれる.
   //
   // 失敗する状況としては,以下のようなものが挙げられる.
-  // - 指定された定数が異常値である.
+  // - 指定された定数が不正である.
   // - リソースを確保できない.
-  virtual ExpressionNode *create_datum_node(Error *error,
-                                            const Datum &datum) = 0;
+  virtual bool create_datum_node(Error *error,
+                                 const Datum &datum) = 0;
 
   // カラムに対応するノードを作成する.
-  // 成功すれば有効なオブジェクトへのポインタを返す.
-  // 失敗したときは *error にその内容を格納し, nullptr を返す.
+  // 成功すれば true を返す.
+  // 失敗したときは *error にその内容を格納し, false を返す.
+  //
+  // 作成されたノードはスタックに積まれる.
   //
   // 失敗する状況としては,以下のようなものが挙げられる.
   // - 指定されたカラムが存在しない.
   // - リソースを確保できない.
-  virtual ExpressionNode *create_column_node(Error *error,
-                                             const char *column_name) = 0;
+  virtual bool create_column_node(Error *error,
+                                  const char *column_name) = 0;
 
   // 演算子に対応するノードを作成する.
-  // 成功すれば有効なオブジェクトへのポインタを返す.
-  // 失敗したときは *error にその内容を格納し, nullptr を返す.
+  // 成功すれば true を返す.
+  // 失敗したときは *error にその内容を格納し, false を返す.
+  //
+  // スタックに積まれているノードを降ろして被演算子とするため,
+  // 被演算子を作成した後に演算子を作成しなければならない.
+  // これは後置式(逆ポーランド記法)の考え方にもとづく.
   //
   // 失敗する状況としては,以下のようなものが挙げられる.
+  // - 引数がスタックに存在しない.
   // - 演算子と引数が対応していない.
-  //  - 演算子が求める引数の型・数と実際の引数の型・数が異なる.
+  //  - 演算子が求める引数の型と実際の引数の型が異なる.
   // - リソースを確保できない.
-  virtual ExpressionNode *create_operator_node(
+  virtual bool create_operator_node(
       Error *error,
-      OperatorType operator_type,
-      int64_t num_args,
-      ExpressionNode * const *args) = 0;
+      OperatorType operator_type) = 0;
 
   // すべてのノードを破棄する.
   virtual void clear();
-------------- next part --------------
HTML����������������������������...
下载 



More information about the Groonga-commit mailing list
Back to archive index