Skip to content

Commit f020abb

Browse files
dmitriplotnikovcopybara-github
authored andcommitted
Add enablePrattParser option and split Parser into AntlrParser and dispatcher
Split Parser.java into AntlrParser.java (containing all ANTLR dependencies) and Parser.java (acting as a simple dispatcher between AntlrParser and PrattParser). Refactor CelParserParameterizedTest and CelParserImplTest to run tests against both ANTLR and Pratt parsers to ensure exact AST equivalence. PiperOrigin-RevId: 978827922
1 parent 2bb86d0 commit f020abb

19 files changed

Lines changed: 6010 additions & 3367 deletions

‎common/src/main/java/dev/cel/common/CelOptions.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ public enum ProtoUnsetFieldOptions {
7272

7373
public abstract boolean enableQuotedIdentifierSyntax();
7474

75+
public abstract boolean enablePrattParser();
76+
7577
// Type-Checker related options
7678

7779
public abstract boolean enableCompileTimeOverloadResolution();
@@ -144,6 +146,7 @@ public static Builder newBuilder() {
144146
.retainUnbalancedLogicalExpressions(false)
145147
.enableHiddenAccumulatorVar(true)
146148
.enableQuotedIdentifierSyntax(true)
149+
.enablePrattParser(false)
147150
// Type-Checker options
148151
.enableCompileTimeOverloadResolution(false)
149152
.enableHomogeneousLiterals(false)
@@ -279,6 +282,9 @@ public abstract static class Builder {
279282
*/
280283
public abstract Builder enableQuotedIdentifierSyntax(boolean value);
281284

285+
/** Enables Pratt parser implementation over ANTLR parser. */
286+
public abstract Builder enablePrattParser(boolean value);
287+
282288
// Type-Checker related options
283289

284290
/**

‎common/src/test/java/dev/cel/common/CelOptionsTest.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@ public void current_defaults() {
3535
// Defaults that aren't represented in deprecated CelOptions
3636
assertThat(CelOptions.current().build().enableUnknownTracking()).isFalse();
3737
assertThat(CelOptions.current().build().resolveTypeDependencies()).isTrue();
38+
assertThat(CelOptions.current().build().enablePrattParser()).isFalse();
3839
}
3940
}

0 commit comments

Comments
 (0)