diff --git a/src/ast/statements.hpp b/src/ast/statements.hpp index 43ab8d1..01c5914 100644 --- a/src/ast/statements.hpp +++ b/src/ast/statements.hpp @@ -66,6 +66,7 @@ struct Pass : Stmt } }; +// #todo elif struct If : Stmt { ptr condition; diff --git a/src/parser.y b/src/parser.y index b37619b..6eec6e6 100644 --- a/src/parser.y +++ b/src/parser.y @@ -71,6 +71,12 @@ stmt_list: stmt: expr NEWLINE { $$ = std::make_unique(std::move($1)); } | expr ASSIGN expr NEWLINE { $$ = std::make_unique(std::move($1), std::move($3));} + | KW_IF expr COLON NEWLINE INDENT stmt_list DEDENT { + $$ = std::make_unique(std::move($2), std::move($6), std::vector>()); + } + | KW_IF expr COLON NEWLINE INDENT stmt_list DEDENT KW_ELSE COLON NEWLINE INDENT stmt_list DEDENT{ + $$ = std::make_unique(std::move($2), std::move($6), std::move($12)); + } ; expr: