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_END_PERFORM
%token TOKEN_IF
%token TOKEN_ELSE_IF
%token TOKEN_ELSE
%token TOKEN_END_IF
%token TOKEN_SPACE
%token TOKEN_KEYWORD_OCCURS
@ -60,6 +62,7 @@ int yylex();
%token TOKEN_EXPONENTIAL
%token TOKEN_DISPLAY
%%
file : statements
statements : statements statement
@ -83,16 +86,39 @@ type : TOKEN_KEYWORD_IDENTIFICATION
| TOKEN_KEYWORD_DATA
;
simple_stmt : cbl_function
| cbl_function param
| cbl_function param
| cbl_function 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
| TOKEN_EQUAL function
| TOKEN_KEYWORD_TO TOKEN_IDENT
| 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
| TOKEN_STRING
| param param
;
function : op_parms
;
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_PERFORM
;
if_branch : if_branch param if_branch
| TOKEN_IF
| TOKEN_ELSE_IF
| TOKEN_ELSE
if_branch : TOKEN_IF expression
| TOKEN_ELSE_IF expression
| TOKEN_ELSE statement
| TOKEN_END_IF
;
data_space : TOKEN_WORKING_STORAGE