diff --git a/src/parser/deimos.pest b/src/parser/deimos.pest index 626c911..7819b6b 100644 --- a/src/parser/deimos.pest +++ b/src/parser/deimos.pest @@ -596,38 +596,52 @@ Expression = { TernaryExpression = { OrExpression - ~ ( - TernaryTrueAlternative - ~ TernaryFalseAlternative - )? + ~ TernaryRhs* +} + +TernaryRhs = { + TernaryTrueAlternative + ~ TernaryFalseAlternative } TernaryTrueAlternative = { "?" - ~ Expression + ~ OrExpression } TernaryFalseAlternative = { ":" - ~ Expression + ~ OrExpression } OrExpression = { AndExpression - ~ ( Or ~ Expression )? + ~ OrRhs* +} + +OrRhs = { + Or + ~ AndExpression } AndExpression = { ComparisonExpression - ~ ( And ~ Expression )? + ~ AndRhs* +} + +AndRhs = { + And + ~ ComparisonExpression } ComparisonExpression = { ShiftExpression - ~ ( - ComparisonOperator - ~ Expression - )? + ~ ComparisonRhs* +} + +ComparisonRhs = { + ComparisonOperator + ~ Expression } ComparisonOperator = { @@ -641,10 +655,12 @@ ComparisonOperator = { ShiftExpression = { AdditiveExpression - ~ ( - ShiftOperator - ~ Expression - )? + ~ ShiftRhs* +} + +ShiftRhs = { + ShiftOperator + ~ AdditiveExpression } ShiftOperator = { @@ -654,10 +670,12 @@ ShiftOperator = { AdditiveExpression = { MultiplicativeExpression - ~ ( - AdditiveOperator - ~ Expression - )? + ~ AdditiveRhs* +} + +AdditiveRhs = { + AdditiveOperator + ~ MultiplicativeExpression } AdditiveOperator = { @@ -667,10 +685,12 @@ AdditiveOperator = { MultiplicativeExpression = { PrefixExpression - ~ ( - MultiplicativeOperator - ~ Expression - )? + ~ MultiplicativeRhs* +} + +MultiplicativeRhs = { + MultiplicativeOperator + ~ PrefixExpression } MultiplicativeOperator = {