@@ -904,7 +904,9 @@ std::unique_ptr<ASTNode> Parser::expression() {
904904
905905std::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
914916std::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
962972std::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