| // 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];
|
| }
|
|
|