summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/javacc
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-02-01 10:00:38 +0000
committerArne Juul <arnej@yahooinc.com>2023-02-01 10:00:38 +0000
commit3cfb3337ba83d4cf69df70dd219c2268a95f852d (patch)
tree3312892d3c49e667e8e2ac20eab5f1e94a97f34c /config-model/src/main/javacc
parent179daa38c12471ec9de4e48ec91865c8a336d8a8 (diff)
add parsing (only) of container-phase in schema
Diffstat (limited to 'config-model/src/main/javacc')
-rw-r--r--config-model/src/main/javacc/SchemaParser.jj33
1 files changed, 32 insertions, 1 deletions
diff --git a/config-model/src/main/javacc/SchemaParser.jj b/config-model/src/main/javacc/SchemaParser.jj
index a9c67a0bb60..888e5ffb665 100644
--- a/config-model/src/main/javacc/SchemaParser.jj
+++ b/config-model/src/main/javacc/SchemaParser.jj
@@ -279,6 +279,7 @@ TOKEN :
| < MAXHITS: "max-hits" >
| < FIRSTPHASE: "first-phase" >
| < SECONDPHASE: "second-phase" >
+| < CONTAINERPHASE: "container-phase" >
| < MACRO: "macro" >
| < INLINE: "inline" >
| < ARITY: "arity" >
@@ -1706,6 +1707,7 @@ void rankProfileItem(ParsedSchema schema, ParsedRankProfile profile) : { }
| rankFeatures(profile)
| rankProperties(profile)
| secondPhase(profile)
+ | containerPhase(profile)
| inputs(profile)
| constants(schema, profile)
| matchFeatures(profile)
@@ -1923,6 +1925,34 @@ void secondPhaseItem(ParsedRankProfile profile) :
)
}
+/**
+ * Consumes the container-phase block of a rank profile.
+ *
+ * @param profile The rank profile to modify.
+ */
+void containerPhase(ParsedRankProfile profile) : { }
+{
+ <CONTAINERPHASE> lbrace() (containerPhaseItem(profile) (<NL>)*)* <RBRACE>
+}
+
+/**
+ * Consumes a statement for a container-phase block.
+ *
+ * @param profile The rank profile to modify.
+ */
+void containerPhaseItem(ParsedRankProfile profile) :
+{
+ String expression;
+ int rerankCount;
+}
+{
+ ( expression = expression() { profile.setContainerPhaseExpression(expression); }
+ | (<RERANKCOUNT> <COLON> rerankCount = integer()) { profile.setContainerPhaseRerankCount(rerankCount); }
+ )
+}
+
+
+
/** Consumes an inputs block of a rank profile. */
void inputs(ParsedRankProfile profile) :
{
@@ -2519,7 +2549,7 @@ String expression() :
( <EXPRESSION_SL> { exp = token.image.substring(token.image.indexOf(":") + 1); } |
<EXPRESSION_ML> { exp = token.image.substring(token.image.indexOf("{") + 1,
token.image.lastIndexOf("}")); } )
- { return exp; }
+ { return exp.trim(); }
}
String identifierWithDash() :
@@ -2555,6 +2585,7 @@ String identifier() : { }
| <CONSTANT>
| <CONSTANTS>
| <CONTEXT>
+ | <CONTAINERPHASE>
| <CREATEIFNONEXISTENT>
| <DENSEPOSTINGLISTTHRESHOLD>
| <DESCENDING>