parse quadratic

This commit is contained in:
Josh 2024-11-07 18:18:21 -08:00
parent 1352861bb6
commit 8e76fdca91
1 changed files with 30 additions and 5 deletions

View File

@ -28,6 +28,8 @@ int yylex();
%token TOKEN_UNTIL %token TOKEN_UNTIL
%token TOKEN_END_PERFORM %token TOKEN_END_PERFORM
%token TOKEN_IF %token TOKEN_IF
%token TOKEN_ELSE_IF
%token TOKEN_ELSE
%token TOKEN_END_IF %token TOKEN_END_IF
%token TOKEN_SPACE %token TOKEN_SPACE
%token TOKEN_KEYWORD_OCCURS %token TOKEN_KEYWORD_OCCURS
@ -60,6 +62,7 @@ int yylex();
%token TOKEN_EXPONENTIAL %token TOKEN_EXPONENTIAL
%token TOKEN_DISPLAY %token TOKEN_DISPLAY
%% %%
file : statements file : statements
statements : statements statement statements : statements statement
@ -86,13 +89,36 @@ simple_stmt : cbl_function
| cbl_function param | cbl_function param
| cbl_function assignment_stmt | cbl_function assignment_stmt
| cbl_function param assignment_stmt | cbl_function param assignment_stmt
| cbl_function TOKEN_IDENT assignment_stmt
| if_branch
;
expression : op_parms
| bool
;
bool : op_parms TOKEN_EQUAL op_parms
; ;
assignment_stmt : TOKEN_EQUAL ext_function assignment_stmt : TOKEN_EQUAL ext_function
| TOKEN_EQUAL function
| TOKEN_KEYWORD_TO TOKEN_IDENT | TOKEN_KEYWORD_TO TOKEN_IDENT
| TOKEN_KEYWORD_TO TOKEN_IDENT categry_contain | TOKEN_KEYWORD_TO TOKEN_IDENT categry_contain
; ;
op_parms : op_parms TOKEN_ADD op_parms
| op_parms TOKEN_SUB op_parms
| op_parms TOKEN_MULTIPLY op_parms
| op_parms TOKEN_DIVIDE op_parms
| op_parms TOKEN_EXPONENTIAL op_parms
| op_parms TOKEN_LESS_THAN op_parms
| op_parms TOKEN_GREATER_THAN op_parms
| TOKEN_SUB op_parms
| TOKEN_LEFT_PARENTHESIS op_parms TOKEN_RIGHT_PARENTHESIS
| TOKEN_IDENT
| TOKEN_INTEGER
;
param : TOKEN_IDENT param : TOKEN_IDENT
| TOKEN_STRING | TOKEN_STRING
| param param
;
function : op_parms
; ;
ext_function : TOKEN_KEYWORD_FUNCTION TOKEN_IDENT TOKEN_LEFT_PARENTHESIS TOKEN_IDENT TOKEN_RIGHT_PARENTHESIS ext_function : TOKEN_KEYWORD_FUNCTION TOKEN_IDENT TOKEN_LEFT_PARENTHESIS TOKEN_IDENT TOKEN_RIGHT_PARENTHESIS
; ;
@ -101,10 +127,9 @@ cbl_function : TOKEN_DISPLAY
| TOKEN_KEYWORD_COMPUTE | TOKEN_KEYWORD_COMPUTE
| TOKEN_PERFORM | TOKEN_PERFORM
; ;
if_branch : if_branch param if_branch if_branch : TOKEN_IF expression
| TOKEN_IF | TOKEN_ELSE_IF expression
| TOKEN_ELSE_IF | TOKEN_ELSE statement
| TOKEN_ELSE
| TOKEN_END_IF | TOKEN_END_IF
; ;
data_space : TOKEN_WORKING_STORAGE data_space : TOKEN_WORKING_STORAGE