Skip to content

Parsing expression grammars (PEG) support #169

@kant2002

Description

@kant2002

Currently Yoakke chokes on large and complex expressions. The longer expression the more time Yoakke need to parse it.
I think somehow it should support PEG grammars.

[Rule("inclusive_OR_expression: inclusive_OR_expression '|' exclusive_OR_expression")]
private static ExpressionType MakeBitwiseOrExpression(ExpressionType a, ICToken @operator, ExpressionType b)

[Rule("logical_AND_expression: logical_AND_expression '&&' inclusive_OR_expression")]
private static ExpressionType MakeLogicalAndExpression(Expression a, ICToken @operator, ExpressionType b)

[Rule("inclusive_OR_expression: exclusive_OR_expression")]
[Rule("logical_AND_expression: inclusive_OR_expression")]
private static ExpressionType CreateExpressionIdentity(ExpressionType expression)

We know that this is some PEG over terminal exclusive_OR_expression. For trigger PEG encoding following conditions must be met.

  • Shared result type ExpressionType for expression rules (logical_AND_expression and inclusive_OR_expression) and expression terminal rules (exclusive_OR_expression).
  • All expression rules can be represented in form of other_expression_literal: expression_literal (...... terminals, expression terminals and another expression_literals)?
  • There should not(?) be recursive loops in the grammar descriptions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions