parse quadratic
This commit is contained in:
parent
1352861bb6
commit
8e76fdca91
|
|
@ -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
|
||||||
|
|
@ -83,16 +86,39 @@ type : TOKEN_KEYWORD_IDENTIFICATION
|
||||||
| TOKEN_KEYWORD_DATA
|
| TOKEN_KEYWORD_DATA
|
||||||
;
|
;
|
||||||
simple_stmt : cbl_function
|
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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue