func calls added
parent
8eabecb7b1
commit
f977efc3a4
|
@ -20,7 +20,7 @@ char* path;
|
|||
%token LBRACE RBRACE LPAREN RPAREN SEMICOLON ASSIGN PLUS MINUS MULT DIV MOD RET PRINT WHILE DO FOR IF ELSE AND OR NOT LT GT EQ
|
||||
%token FUNC COMMA
|
||||
|
||||
%type <str> expr program statement block func_decl param_list params
|
||||
%type <str> expr_list expr program statement block func_decl param_list params
|
||||
|
||||
%left OR
|
||||
%left AND
|
||||
|
@ -52,7 +52,7 @@ statement:
|
|||
| DO { if (debug) printf("\033[1;34mDO-WHILE LOOP DETECTED\033[0m\n"); }
|
||||
block
|
||||
WHILE
|
||||
{ printf("\033[1;34mDO-WHILE CONDITION DETECTED\033[0m\n"); }
|
||||
{ if (debug) printf("\033[1;34mDO-WHILE CONDITION DETECTED\033[0m\n"); }
|
||||
LPAREN expr RPAREN SEMICOLON
|
||||
{ if (debug) printf("\033[1;34mDO-WHILE LOOP ENDED\033[0m\n"); }
|
||||
|
||||
|
@ -101,6 +101,12 @@ block:
|
|||
LBRACE program RBRACE
|
||||
;
|
||||
|
||||
// Список выражений (для вызова функции)
|
||||
expr_list:
|
||||
| expr
|
||||
| expr_list COMMA expr
|
||||
;
|
||||
|
||||
// Возможные выражения
|
||||
expr:
|
||||
RET { if (debug) printf("RET\n") } expr // выражение вида return expr
|
||||
|
@ -123,6 +129,12 @@ expr:
|
|||
| NOT { if (debug) printf("NOT\n") } expr
|
||||
| IDENTIFIER { if (debug) printf("IDENTIFIER(%s)\n", $1); free($1); }
|
||||
| NUMBER { if (debug) printf("NUMBER(%s)\n", $1); free($1); }
|
||||
|
||||
| IDENTIFIER { if (debug) printf("\033[1;35mIDENTIFIER(%s)\n\033[0m", $1); free($1); }
|
||||
LPAREN { if (debug) printf("\033[1;35mSTART FUNC CALL\n\033[0m"); }
|
||||
expr_list
|
||||
RPAREN { if (debug) printf("\033[1;35mEND FUNC CALL\n\033[0m"); }
|
||||
;
|
||||
;
|
||||
|
||||
%%
|
||||
|
|
Loading…
Reference in New Issue