From 4bc89d5ca33aac8f62e8679d0028f894e1323051 Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Sun, 7 Sep 2025 18:25:30 -0500 Subject: [PATCH] Fix if statements. --- src/parser/ast.yaml | 40 ++++++++-------------------------------- src/parser/deimos.pest | 24 ++++++------------------ 2 files changed, 14 insertions(+), 50 deletions(-) diff --git a/src/parser/ast.yaml b/src/parser/ast.yaml index bf0b3c3..6b2d658 100644 --- a/src/parser/ast.yaml +++ b/src/parser/ast.yaml @@ -349,27 +349,15 @@ ExpressionStatement: - expression IfStatement: children: - - if_kw: - rule: If - skip: true - - expression - - then_kw: - rule: Then - skip: true - - statements: - rule: Statement - vec: true - - end_kw: - rule: End - skip: true -IfElseStatement: - children: - - if_else_first + - if_clause - if_else_ifs: rule: IfElseIf vec: true - - if_else_else -IfElseFirst: + - if_else + - end_kw: + rule: End + skip: true +IfClause: children: - if_kw: rule: If @@ -386,17 +374,8 @@ IfElseIf: - else_kw: rule: Else skip: true - - if_kw: - rule: If - skip: true - - expression - - then_kw: - rule: Then - skip: true - - statements: - rule: Statement - vec: true -IfElseElse: + - if_clause +IfElse: children: - else_kw: rule: Else @@ -404,9 +383,6 @@ IfElseElse: - statements: rule: Statement vec: true - - end_kw: - rule: End - skip: true WhileStatement: children: - while_kw: diff --git a/src/parser/deimos.pest b/src/parser/deimos.pest index 88a344e..fb0d409 100644 --- a/src/parser/deimos.pest +++ b/src/parser/deimos.pest @@ -546,7 +546,6 @@ Statement = { | AssignmentStatement | ExpressionStatement | UseStatement - | IfElseStatement | IfStatement | WhileStatement | ForStatement @@ -571,20 +570,13 @@ ExpressionStatement = { } IfStatement = { - If - ~ Expression - ~ Then - ~ Statement* + IfClause + ~ IfElseIf* + ~ IfElse? ~ End } -IfElseStatement = { - IfElseFirst - ~ IfElseIf* - ~ IfElseElse -} - -IfElseFirst = { +IfClause = { If ~ Expression ~ Then @@ -593,16 +585,12 @@ IfElseFirst = { IfElseIf = { Else - ~ If - ~ Expression - ~ Then - ~ Statement* + ~ IfClause } -IfElseElse = { +IfElse = { Else ~ Statement* - ~ End } WhileStatement = {