variables now parse
This commit is contained in:
parent
8a4ebb00c9
commit
243faa8e15
|
|
@ -71,6 +71,7 @@ statement : section
|
||||||
| sect_data
|
| sect_data
|
||||||
| simple_stmt
|
| simple_stmt
|
||||||
| data_space
|
| data_space
|
||||||
|
| data_declaration
|
||||||
;
|
;
|
||||||
section : type TOKEN_KEYWORD_DIVISION TOKEN_DOT
|
section : type TOKEN_KEYWORD_DIVISION TOKEN_DOT
|
||||||
| type TOKEN_RUN TOKEN_DOT
|
| type TOKEN_RUN TOKEN_DOT
|
||||||
|
|
@ -99,9 +100,41 @@ if_branch : if_branch parms if_branch
|
||||||
| TOKEN_ELSE
|
| TOKEN_ELSE
|
||||||
| TOKEN_END_IF
|
| TOKEN_END_IF
|
||||||
;
|
;
|
||||||
data_space : TOKEN_WORKING_STORAGE TOKEN_KEYWORD_SECTION TOKEN_DOT
|
data_space : TOKEN_WORKING_STORAGE
|
||||||
|
| TOKEN_KEYWORD_SECTION
|
||||||
|
| TOKEN_DOT
|
||||||
|
;
|
||||||
|
data_category : TOKEN_ALPHANUMERIC
|
||||||
|
| TOKEN_NUMERIC
|
||||||
|
| TOKEN_SIGNED_NUMERIC
|
||||||
|
| TOKEN_IMPLIED_DECIMAL
|
||||||
|
;
|
||||||
|
categry_contain : TOKEN_LEFT_PARENTHESIS TOKEN_INTEGER TOKEN_RIGHT_PARENTHESIS
|
||||||
;
|
;
|
||||||
|
|
||||||
|
complete_category: complete_category complete_category
|
||||||
|
| data_category categry_contain
|
||||||
|
;
|
||||||
|
data_clause : TOKEN_COMPUTATION_LEVEL_0
|
||||||
|
| TOKEN_COMPUTATION_LEVEL_1
|
||||||
|
| TOKEN_COMPUTATION_LEVEL_2
|
||||||
|
| TOKEN_COMPUTATION_LEVEL_3
|
||||||
|
| TOKEN_KEYWORD_VALUE
|
||||||
|
| TOKEN_KEYWORD_OCCURS
|
||||||
|
;
|
||||||
|
full_data_clause: data_clause data_clause
|
||||||
|
| data_clause
|
||||||
|
;
|
||||||
|
|
||||||
|
data_declaration: simple_decl
|
||||||
|
| full_decl
|
||||||
|
;
|
||||||
|
simple_decl : TOKEN_INTEGER TOKEN_IDENT TOKEN_DOT
|
||||||
|
;
|
||||||
|
full_decl : TOKEN_INTEGER TOKEN_IDENT TOKEN_PICTURE complete_category TOKEN_DOT
|
||||||
|
| TOKEN_INTEGER TOKEN_IDENT TOKEN_PICTURE complete_category full_data_clause TOKEN_DOT
|
||||||
|
| TOKEN_INTEGER TOKEN_IDENT TOKEN_PICTURE complete_category full_data_clause TOKEN_INTEGER TOKEN_DOT
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
IDENTIFICATION DIVISION.
|
||||||
|
PROGRAM-ID. variables.
|
||||||
|
DATA DIVISION.
|
||||||
|
WORKING-STORAGE SECTION.
|
||||||
|
01 WS-SORT-AREA.
|
||||||
|
05 WS-SORT-TABLE.
|
||||||
|
10 WS-SORT-ROW PIC X(10) OCCURS 100.
|
||||||
|
05 WS-TEMP-ROW PIC X(10).
|
||||||
|
05 WS-ROW-MAX PIC S9(4) COMP VALUE 100.
|
||||||
|
05 WS-SORT-MAX PIC S9(4) COMP.
|
||||||
|
05 WS-I PIC S9(4) COMP.
|
||||||
|
05 WS-J PIC S9(4) COMP.
|
||||||
|
05 WS-INDEX PIC S9(4) COMP.
|
||||||
|
77 a PIC S9(5)V9(5) COMP-3 VALUE 1.
|
||||||
|
77 b PIC S9(5)V9(5) COMP-3 VALUE 5.
|
||||||
|
77 c PIC S9(5)V9(5) COMP-3 VALUE 6.
|
||||||
|
77 discriminant PIC S9(5)V9(5) COMP-3.
|
||||||
|
77 root1 PIC S9(5)V9(5) COMP-3.
|
||||||
|
77 root2 PIC S9(5)V9(5) COMP-3.
|
||||||
|
77 square-root-discriminant PIC S9(5)V9(5) COMP-3.
|
||||||
|
|
||||||
|
PROCEDURE DIVISION.
|
||||||
|
DISPLAY 'Hello World!'
|
||||||
|
STOP RUN.
|
||||||
|
|
@ -73,37 +73,39 @@ extern int yydebug;
|
||||||
TOKEN_UNTIL = 274, /* TOKEN_UNTIL */
|
TOKEN_UNTIL = 274, /* TOKEN_UNTIL */
|
||||||
TOKEN_END_PERFORM = 275, /* TOKEN_END_PERFORM */
|
TOKEN_END_PERFORM = 275, /* TOKEN_END_PERFORM */
|
||||||
TOKEN_IF = 276, /* TOKEN_IF */
|
TOKEN_IF = 276, /* TOKEN_IF */
|
||||||
TOKEN_END_IF = 277, /* TOKEN_END_IF */
|
TOKEN_ELSE = 277, /* TOKEN_ELSE */
|
||||||
TOKEN_SPACE = 278, /* TOKEN_SPACE */
|
TOKEN_ELSE_IF = 278, /* TOKEN_ELSE_IF */
|
||||||
TOKEN_KEYWORD_OCCURS = 279, /* TOKEN_KEYWORD_OCCURS */
|
TOKEN_END_IF = 279, /* TOKEN_END_IF */
|
||||||
TOKEN_KEYWORD_VALUE = 280, /* TOKEN_KEYWORD_VALUE */
|
TOKEN_SPACE = 280, /* TOKEN_SPACE */
|
||||||
TOKEN_KEYWORD_COMPUTE = 281, /* TOKEN_KEYWORD_COMPUTE */
|
TOKEN_KEYWORD_OCCURS = 281, /* TOKEN_KEYWORD_OCCURS */
|
||||||
TOKEN_KEYWORD_FUNCTION = 282, /* TOKEN_KEYWORD_FUNCTION */
|
TOKEN_KEYWORD_VALUE = 282, /* TOKEN_KEYWORD_VALUE */
|
||||||
TOKEN_IDENT = 283, /* TOKEN_IDENT */
|
TOKEN_KEYWORD_COMPUTE = 283, /* TOKEN_KEYWORD_COMPUTE */
|
||||||
TOKEN_STRING = 284, /* TOKEN_STRING */
|
TOKEN_KEYWORD_FUNCTION = 284, /* TOKEN_KEYWORD_FUNCTION */
|
||||||
TOKEN_INTEGER = 285, /* TOKEN_INTEGER */
|
TOKEN_IDENT = 285, /* TOKEN_IDENT */
|
||||||
TOKEN_PICTURE = 286, /* TOKEN_PICTURE */
|
TOKEN_STRING = 286, /* TOKEN_STRING */
|
||||||
TOKEN_ALPHANUMERIC = 287, /* TOKEN_ALPHANUMERIC */
|
TOKEN_INTEGER = 287, /* TOKEN_INTEGER */
|
||||||
TOKEN_NUMERIC = 288, /* TOKEN_NUMERIC */
|
TOKEN_PICTURE = 288, /* TOKEN_PICTURE */
|
||||||
TOKEN_SIGNED_NUMERIC = 289, /* TOKEN_SIGNED_NUMERIC */
|
TOKEN_ALPHANUMERIC = 289, /* TOKEN_ALPHANUMERIC */
|
||||||
TOKEN_IMPLIED_DECIMAL = 290, /* TOKEN_IMPLIED_DECIMAL */
|
TOKEN_NUMERIC = 290, /* TOKEN_NUMERIC */
|
||||||
TOKEN_COMPUTATION_LEVEL_0 = 291, /* TOKEN_COMPUTATION_LEVEL_0 */
|
TOKEN_SIGNED_NUMERIC = 291, /* TOKEN_SIGNED_NUMERIC */
|
||||||
TOKEN_COMPUTATION_LEVEL_1 = 292, /* TOKEN_COMPUTATION_LEVEL_1 */
|
TOKEN_IMPLIED_DECIMAL = 292, /* TOKEN_IMPLIED_DECIMAL */
|
||||||
TOKEN_COMPUTATION_LEVEL_2 = 293, /* TOKEN_COMPUTATION_LEVEL_2 */
|
TOKEN_COMPUTATION_LEVEL_0 = 293, /* TOKEN_COMPUTATION_LEVEL_0 */
|
||||||
TOKEN_COMPUTATION_LEVEL_3 = 294, /* TOKEN_COMPUTATION_LEVEL_3 */
|
TOKEN_COMPUTATION_LEVEL_1 = 294, /* TOKEN_COMPUTATION_LEVEL_1 */
|
||||||
TOKEN_LEFT_PARENTHESIS = 295, /* TOKEN_LEFT_PARENTHESIS */
|
TOKEN_COMPUTATION_LEVEL_2 = 295, /* TOKEN_COMPUTATION_LEVEL_2 */
|
||||||
TOKEN_RIGHT_PARENTHESIS = 296, /* TOKEN_RIGHT_PARENTHESIS */
|
TOKEN_COMPUTATION_LEVEL_3 = 296, /* TOKEN_COMPUTATION_LEVEL_3 */
|
||||||
TOKEN_DOT = 297, /* TOKEN_DOT */
|
TOKEN_LEFT_PARENTHESIS = 297, /* TOKEN_LEFT_PARENTHESIS */
|
||||||
TOKEN_COMMENT = 298, /* TOKEN_COMMENT */
|
TOKEN_RIGHT_PARENTHESIS = 298, /* TOKEN_RIGHT_PARENTHESIS */
|
||||||
TOKEN_ADD = 299, /* TOKEN_ADD */
|
TOKEN_DOT = 299, /* TOKEN_DOT */
|
||||||
TOKEN_SUB = 300, /* TOKEN_SUB */
|
TOKEN_COMMENT = 300, /* TOKEN_COMMENT */
|
||||||
TOKEN_MULTIPLY = 301, /* TOKEN_MULTIPLY */
|
TOKEN_ADD = 301, /* TOKEN_ADD */
|
||||||
TOKEN_DIVIDE = 302, /* TOKEN_DIVIDE */
|
TOKEN_SUB = 302, /* TOKEN_SUB */
|
||||||
TOKEN_EQUAL = 303, /* TOKEN_EQUAL */
|
TOKEN_MULTIPLY = 303, /* TOKEN_MULTIPLY */
|
||||||
TOKEN_GREATER_THAN = 304, /* TOKEN_GREATER_THAN */
|
TOKEN_DIVIDE = 304, /* TOKEN_DIVIDE */
|
||||||
TOKEN_LESS_THAN = 305, /* TOKEN_LESS_THAN */
|
TOKEN_EQUAL = 305, /* TOKEN_EQUAL */
|
||||||
TOKEN_EXPONENTIAL = 306, /* TOKEN_EXPONENTIAL */
|
TOKEN_GREATER_THAN = 306, /* TOKEN_GREATER_THAN */
|
||||||
TOKEN_DISPLAY = 307 /* TOKEN_DISPLAY */
|
TOKEN_LESS_THAN = 307, /* TOKEN_LESS_THAN */
|
||||||
|
TOKEN_EXPONENTIAL = 308, /* TOKEN_EXPONENTIAL */
|
||||||
|
TOKEN_DISPLAY = 309 /* TOKEN_DISPLAY */
|
||||||
};
|
};
|
||||||
typedef enum yytokentype yytoken_kind_t;
|
typedef enum yytokentype yytoken_kind_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue