| | // Copyright 2020 Google LLC
|
| | //
|
| | // Licensed under the Apache License, Version 2.0 (the "License");
|
| | // you may not use this file except in compliance with the License.
|
| | // You may obtain a copy of the License at
|
| | //
|
| | // https://www.apache.org/licenses/LICENSE-2.0
|
| | //
|
| | // Unless required by applicable law or agreed to in writing, software
|
| | // distributed under the License is distributed on an "AS IS" BASIS,
|
| | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| | // See the License for the specific language governing permissions and
|
| | // limitations under the License.
|
| | //
|
| |
|
| | include "flatbuffers.fbs";
|
| |
|
| | namespace libtextclassifier3.grammar.SemanticExpression_;
|
| | union Expression {
|
| | ConstValueExpression,
|
| | ConstituentExpression,
|
| | ComposeExpression,
|
| | SpanAsStringExpression,
|
| | ParseNumberExpression,
|
| | MergeValueExpression,
|
| | ArithmeticExpression,
|
| | }
|
| |
|
| | // A semantic expression.
|
| | namespace libtextclassifier3.grammar;
|
| | table SemanticExpression {
|
| | expression:SemanticExpression_.Expression;
|
| | }
|
| |
|
| | // A constant flatbuffer value.
|
| | namespace libtextclassifier3.grammar;
|
| | table ConstValueExpression {
|
| | // The base type of the value.
|
| | base_type:int;
|
| |
|
| | // The id of the type of the value.
|
| | // The id is used for lookup in the semantic values type metadata.
|
| | type:int;
|
| |
|
| | // The serialized value.
|
| | value:[ubyte];
|
| | }
|
| |
|
| | // The value of a rule constituent.
|
| | namespace libtextclassifier3.grammar;
|
| | table ConstituentExpression {
|
| | // The id of the constituent.
|
| | id:ushort;
|
| | }
|
| |
|
| | // The fields to set.
|
| | namespace libtextclassifier3.grammar.ComposeExpression_;
|
| | table Field {
|
| | // The field to set.
|
| | path:libtextclassifier3.FlatbufferFieldPath;
|
| |
|
| | // The value.
|
| | value:SemanticExpression;
|
| | }
|
| |
|
| | // A combination: Compose a result from arguments.
|
| | // https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-4.html
|
| | namespace libtextclassifier3.grammar;
|
| | table ComposeExpression {
|
| | // The id of the type of the result.
|
| | type:int;
|
| |
|
| | fields:[ComposeExpression_.Field];
|
| | }
|
| |
|
| | // Lifts a span as a value.
|
| | namespace libtextclassifier3.grammar;
|
| | table SpanAsStringExpression {
|
| | }
|
| |
|
| | // Parses a string as a number.
|
| | namespace libtextclassifier3.grammar;
|
| | table ParseNumberExpression {
|
| | // The base type of the value.
|
| | base_type:int;
|
| |
|
| | value:SemanticExpression;
|
| | }
|
| |
|
| | // Merge the semantic expressions.
|
| | namespace libtextclassifier3.grammar;
|
| | table MergeValueExpression {
|
| | // The id of the type of the result.
|
| | type:int;
|
| |
|
| | values:[SemanticExpression];
|
| | }
|
| |
|
| | // The operator of the arithmetic expression.
|
| | namespace libtextclassifier3.grammar.ArithmeticExpression_;
|
| | enum Operator : int {
|
| | NO_OP = 0,
|
| | OP_ADD = 1,
|
| | OP_MUL = 2,
|
| | OP_MAX = 3,
|
| | OP_MIN = 4,
|
| | }
|
| |
|
| | // Simple arithmetic expression.
|
| | namespace libtextclassifier3.grammar;
|
| | table ArithmeticExpression {
|
| | // The base type of the operation.
|
| | base_type:int;
|
| |
|
| | op:ArithmeticExpression_.Operator;
|
| | values:[SemanticExpression];
|
| | }
|
| |
|