You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.9 KiB
120 lines
2.9 KiB
//
|
|
// Copyright (C) 2018 The Android Open Source Project
|
|
//
|
|
// 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
|
|
//
|
|
// http://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 "utils/flatbuffers/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#%_toc_%_sec_1.1.1
|
|
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];
|
|
}
|
|
|