Package com.helix.core.parser
Class ExpressionRuleParser
java.lang.Object
com.helix.core.parser.ExpressionRuleParser
High-performance, lightweight recursive-descent parser for human-readable rule expressions.
Compiles expressions directly into Helix AST nodes with microsecond latency (<20 µs).
Grammar precedence (lowest to highest):
- Logical OR:
|| - Logical AND:
&& - Equality:
==,!= - Relational / Comparison:
<,<=,>,>= - Additive:
+,- - Multiplicative:
*,/,% - Unary prefix:
!,-,+ - Postfix: field access
.field, method call.method(args) - Primary: literals, function calls
fn(args), variables, grouped(expr)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionParses a raw expression string into an ASTExpressionNode.parseAndFold(String expression) Parses and optimizes an expression using constant folding and dead code elimination.parseAndValidate(String expression, Map<String, Class<?>> schema) Parses an expression, optimizes it, and validates types against the given schema.parseRule(String name, String version, String description, String category, String expression, Map<String, Class<?>> schema) Parses a named rule with the specified metadata and schema, applying folding and type checking.Parses a named rule with the specified schema, applying folding and type checking.voidValidates expression syntax.voidValidates expression syntax and type compatibility against a schema.
-
Constructor Details
-
ExpressionRuleParser
public ExpressionRuleParser()
-
-
Method Details
-
parse
Parses a raw expression string into an ASTExpressionNode.- Parameters:
expression- expression text- Returns:
- parsed AST root node
- Throws:
ExpressionParseException- if expression has syntax errors
-
parseAndFold
Parses and optimizes an expression using constant folding and dead code elimination.- Parameters:
expression- expression text- Returns:
- optimized AST root node
- Throws:
ExpressionParseException- if expression has syntax errors
-
parseAndValidate
public ExpressionNode parseAndValidate(String expression, Map<String, Class<?>> schema) throws ExpressionParseException, TypeMismatchExceptionParses an expression, optimizes it, and validates types against the given schema.- Parameters:
expression- expression textschema- variable schema- Returns:
- optimized and type-checked AST ExpressionNode
- Throws:
ExpressionParseException- if syntax is invalidTypeMismatchException- if type validation fails
-
parseRule
public RuleNode parseRule(String name, String version, String description, String category, String expression, Map<String, Class<?>> schema) throws ExpressionParseException, TypeMismatchExceptionParses a named rule with the specified metadata and schema, applying folding and type checking.- Parameters:
name- rule nameversion- rule versiondescription- rule descriptioncategory- rule categoryexpression- expression textschema- variable schema- Returns:
- compiled
RuleNode - Throws:
ExpressionParseExceptionTypeMismatchException
-
parseRule
public RuleNode parseRule(String name, String expression, Map<String, Class<?>> schema) throws ExpressionParseException, TypeMismatchExceptionParses a named rule with the specified schema, applying folding and type checking. -
parseRule
- Throws:
ExpressionParseException
-
validate
public void validate(String expression, Map<String, Class<?>> schema) throws ExpressionParseException, TypeMismatchExceptionValidates expression syntax and type compatibility against a schema. -
validate
Validates expression syntax.- Throws:
ExpressionParseException
-