From ea7b3f9da54d80ce097c08e5f22d8d640d157cf9 Mon Sep 17 00:00:00 2001 From: Eatswap Date: Sun, 11 Dec 2022 18:28:43 +0800 Subject: [PATCH] fix: defun --- DragonLisp.y | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/DragonLisp.y b/DragonLisp.y index 086c498..ea58165 100644 --- a/DragonLisp.y +++ b/DragonLisp.y @@ -101,10 +101,13 @@ S ; statements - : S-Exprs { std::printf("Parsed statements -> S-Exprs\n"); } - | func-def { std::printf("Parsed statements -> func-def\n"); } - | statements S-Exprs { std::printf("Parsed statements -> statements S-Exprs\n"); } - | statements func-def { std::printf("Parsed statements -> statements func-def\n"); } + : statement { std::printf("Parsed statements -> statement\n"); } + | statements statement { std::printf("Parsed statements -> statements statement\n"); } +; + +statement + : S-Expr { std::printf("Parsed statement -> S-Expr\n"); } + | func-def { std::printf("Parsed statement -> func-def\n"); } ; S-Exprs @@ -210,7 +213,7 @@ S-Expr-loop ; func-def - : DEFUN IDENTIFIER LPAREN identifier-list RPAREN ignored-func-doc S-Exprs { std::printf("Parsed func-def -> DEFUN IDENTIFIER LPAREN identifier-list RPAREN ignored-func-doc S-Exprs\n"); } + : LPAREN DEFUN IDENTIFIER LPAREN identifier-list RPAREN ignored-func-doc S-Exprs RPAREN { std::printf("Parsed func-def -> DEFUN IDENTIFIER LPAREN identifier-list RPAREN ignored-func-doc S-Exprs\n"); } ; ignored-func-doc