Skip to content

Commit f474128

Browse files
committed
Made semicolons optional on each statements.
1 parent aac44dc commit f474128

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/zhivo/parser/Parser.cpp

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -904,7 +904,9 @@ std::unique_ptr<ASTNode> Parser::expression() {
904904

905905
std::unique_ptr<ASTNode> Parser::stmtBreak() {
906906
Token address = this->consume("break");
907-
this->consume(";");
907+
908+
if(this->isNext(";"))
909+
this->consume(";");
908910

909911
return std::make_unique<BreakStatement>(
910912
std::make_unique<Token>(address)
@@ -913,7 +915,9 @@ std::unique_ptr<ASTNode> Parser::stmtBreak() {
913915

914916
std::unique_ptr<ASTNode> Parser::stmtContinue() {
915917
Token address = this->consume("continue");
916-
this->consume(";");
918+
919+
if(this->isNext(";"))
920+
this->consume(";");
917921

918922
return std::make_unique<ContinueStatement>(
919923
std::make_unique<Token>(address)
@@ -924,7 +928,9 @@ std::unique_ptr<ASTNode> Parser::stmtRet() {
924928
Token address = this->consume("ret");
925929
std::unique_ptr<ASTNode> expression = this->expression();
926930

927-
this->consume(";");
931+
if(this->isNext(";"))
932+
this->consume(";");
933+
928934
return std::make_unique<ReturnStatement>(
929935
std::make_unique<Token>(address),
930936
std::move(expression)
@@ -935,7 +941,9 @@ std::unique_ptr<ASTNode> Parser::stmtThrow() {
935941
Token address = this->consume("throw");
936942
std::unique_ptr<ASTNode> expression = this->expression();
937943

938-
this->consume(";");
944+
if(this->isNext(";"))
945+
this->consume(";");
946+
939947
return std::make_unique<ThrowStatement>(
940948
std::make_unique<Token>(address),
941949
std::move(expression)
@@ -950,7 +958,9 @@ std::unique_ptr<ASTNode> Parser::stmtTest() {
950958
this->consume(")");
951959

952960
std::unique_ptr<ASTNode> testBody = this->expression();
953-
this->consume(";");
961+
962+
if(this->isNext(";"))
963+
this->consume(";");
954964

955965
return std::make_unique<TestStatement>(
956966
std::make_unique<Token>(address),
@@ -961,7 +971,9 @@ std::unique_ptr<ASTNode> Parser::stmtTest() {
961971

962972
std::unique_ptr<ASTNode> Parser::stmtWait() {
963973
Token address = this->consume("wait");
964-
this->consume(";");
974+
975+
if(this->isNext(";"))
976+
this->consume(";");
965977

966978
return std::make_unique<WaitStatement>(
967979
std::make_unique<Token>(address)
@@ -983,7 +995,9 @@ std::unique_ptr<ASTNode> Parser::statement() {
983995
return this->stmtWait();
984996

985997
std::unique_ptr<ASTNode> expr = this->expression();
986-
this->consume(";");
998+
999+
if(this->isNext(";"))
1000+
this->consume(";");
9871001

9881002
return expr;
9891003
}

0 commit comments

Comments
 (0)