www.pudn.com > subpas.rar > parse.v
#############################################################################
# U N R E G I S T E R E D C O P Y
#
# You are on day 60 of your 30 day trial period.
#
# This file was produced by an UNREGISTERED COPY of Parser Generator. It is
# for evaluation purposes only. If you continue to use Parser Generator 30
# days after installation then you are required to purchase a license. For
# more information see the online help or go to the Bumble-Bee Software
# homepage at:
#
# http://www.bumblebeesoftware.com
#
# This notice must remain present in the file. It cannot be removed.
#############################################################################
#############################################################################
# parse.v
# YACC verbose file generated from parse.y.
#
# Date: 08/29/05
# Time: 23:35:14
#
# AYACC Version: 2.07
#############################################################################
##############################################################################
# Rules
##############################################################################
0 $accept : program $end
1 $$1 :
2 program : PROGRAM ID $$1 LP identifier_list RP SEMI declarations subprogram_declarations compound_statement
3 identifier_list : ID
4 | identifier_list COMMA id
5 id : ID
6 declarations : VAR declaration SEMI
7 |
8 declaration : declaration SEMI identifier_list COLON type
9 | identifier_list COLON type
10 type : standard_type
11 $$2 :
12 $$3 :
13 type : ARRAY LSP NUM $$2 DOT DOT NUM $$3 RSP OF standard_type
14 standard_type : INTEGER
15 | REAL
16 | BOOLEAN
17 subprogram_declarations : subprogram_declarations subprogram_declaration SEMI
18 |
19 subprogram_declaration : subprogram_head declarations compound_statement
20 $$4 :
21 subprogram_head : FUNCTION ID $$4 arguments COLON standard_type SEMI
22 $$5 :
23 subprogram_head : PROCEDURE ID $$5 arguments SEMI
24 arguments : LP parameter_list RP
25 |
26 parameter_list : identifier_list COLON type
27 | parameter_list SEMI identifier_list COLON type
28 | VAR identifier_list COLON type
29 | parameter_list SEMI VAR identifier_list COLON type
30 |
31 compound_statement : MYBEGIN optional_statements END
32 optional_statements : statement_list SEMI
33 | statement_list
34 |
35 statement_list : statement
36 | statement_list SEMI statement
37 $$6 :
38 statement : variable ASSIGNOP $$6 expression
39 | procedure_statement
40 | compound_statement
41 | IF expression THEN statement ELSE statement
42 | WHILE expression DO statement
43 variable : ID
44 $$7 :
45 variable : ID $$7 LSP expression RSP
46 procedure_statement : ID
47 $$8 :
48 procedure_statement : ID $$8 LP expression_list RP
49 expression_list : expression
50 | expression_list COMMA expression
51 |
52 expression : simple_expression
53 | simple_expression relop simple_expression
54 simple_expression : term
55 | simple_expression addop term
56 term : factor
57 | sign factor
58 | term mulop factor
59 factor : ID
60 $$9 :
61 factor : ID $$9 LP expression_list RP
62 $$10 :
63 factor : ID $$10 LSP expression RSP
64 | NUM
65 | REALNUM
66 | MYTRUE
67 | MYFALSE
68 | LP expression RP
69 | NOT factor
70 relop : EQ
71 | NE
72 | LT
73 | LE
74 | GT
75 | GE
76 addop : PLUS
77 | MINUS
78 | OR
79 mulop : TIMES
80 | OVER
81 | DIV
82 | MOD
83 | AND
84 sign : PLUS
85 | MINUS
##############################################################################
# States
##############################################################################
state 0
$accept : . program $end
PROGRAM shift 1
program goto 2
state 1
program : PROGRAM . ID $$1 LP identifier_list RP SEMI declarations subprogram_declarations compound_statement
ID shift 3
state 2
$accept : program . $end (0)
$end accept
state 3
program : PROGRAM ID . $$1 LP identifier_list RP SEMI declarations subprogram_declarations compound_statement
$$1 : . (1)
. reduce 1
$$1 goto 4
state 4
program : PROGRAM ID $$1 . LP identifier_list RP SEMI declarations subprogram_declarations compound_statement
LP shift 5
state 5
program : PROGRAM ID $$1 LP . identifier_list RP SEMI declarations subprogram_declarations compound_statement
ID shift 6
identifier_list goto 7
state 6
identifier_list : ID . (3)
. reduce 3
state 7
program : PROGRAM ID $$1 LP identifier_list . RP SEMI declarations subprogram_declarations compound_statement
identifier_list : identifier_list . COMMA id
COMMA shift 8
RP shift 9
state 8
identifier_list : identifier_list COMMA . id
ID shift 10
id goto 11
state 9
program : PROGRAM ID $$1 LP identifier_list RP . SEMI declarations subprogram_declarations compound_statement
SEMI shift 12
state 10
id : ID . (5)
. reduce 5
state 11
identifier_list : identifier_list COMMA id . (4)
. reduce 4
state 12
program : PROGRAM ID $$1 LP identifier_list RP SEMI . declarations subprogram_declarations compound_statement
declarations : . (7)
VAR shift 13
. reduce 7
declarations goto 14
state 13
declarations : VAR . declaration SEMI
ID shift 6
identifier_list goto 15
declaration goto 16
state 14
program : PROGRAM ID $$1 LP identifier_list RP SEMI declarations . subprogram_declarations compound_statement
subprogram_declarations : . (18)
. reduce 18
subprogram_declarations goto 17
state 15
identifier_list : identifier_list . COMMA id
declaration : identifier_list . COLON type
COLON shift 18
COMMA shift 8
state 16
declarations : VAR declaration . SEMI
declaration : declaration . SEMI identifier_list COLON type
SEMI shift 19
state 17
program : PROGRAM ID $$1 LP identifier_list RP SEMI declarations subprogram_declarations . compound_statement
subprogram_declarations : subprogram_declarations . subprogram_declaration SEMI
FUNCTION shift 20
MYBEGIN shift 21
PROCEDURE shift 22
subprogram_declaration goto 23
subprogram_head goto 24
compound_statement goto 25
state 18
declaration : identifier_list COLON . type
ARRAY shift 26
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
type goto 30
standard_type goto 31
state 19
declarations : VAR declaration SEMI . (6)
declaration : declaration SEMI . identifier_list COLON type
ID shift 6
. reduce 6
identifier_list goto 32
state 20
subprogram_head : FUNCTION . ID $$4 arguments COLON standard_type SEMI
ID shift 33
state 21
compound_statement : MYBEGIN . optional_statements END
optional_statements : . (34)
IF shift 34
MYBEGIN shift 21
WHILE shift 35
ID shift 36
. reduce 34
compound_statement goto 37
optional_statements goto 38
statement_list goto 39
statement goto 40
variable goto 41
procedure_statement goto 42
state 22
subprogram_head : PROCEDURE . ID $$5 arguments SEMI
ID shift 43
state 23
subprogram_declarations : subprogram_declarations subprogram_declaration . SEMI
SEMI shift 44
state 24
subprogram_declaration : subprogram_head . declarations compound_statement
declarations : . (7)
VAR shift 13
. reduce 7
declarations goto 45
state 25
program : PROGRAM ID $$1 LP identifier_list RP SEMI declarations subprogram_declarations compound_statement . (2)
. reduce 2
state 26
type : ARRAY . LSP NUM $$2 DOT DOT NUM $$3 RSP OF standard_type
LSP shift 46
state 27
standard_type : BOOLEAN . (16)
. reduce 16
state 28
standard_type : INTEGER . (14)
. reduce 14
state 29
standard_type : REAL . (15)
. reduce 15
state 30
declaration : identifier_list COLON type . (9)
. reduce 9
state 31
type : standard_type . (10)
. reduce 10
state 32
identifier_list : identifier_list . COMMA id
declaration : declaration SEMI identifier_list . COLON type
COLON shift 47
COMMA shift 8
state 33
subprogram_head : FUNCTION ID . $$4 arguments COLON standard_type SEMI
$$4 : . (20)
. reduce 20
$$4 goto 48
state 34
statement : IF . expression THEN statement ELSE statement
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
expression goto 58
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 35
statement : WHILE . expression DO statement
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
expression goto 63
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 36
variable : ID . (43)
variable : ID . $$7 LSP expression RSP
procedure_statement : ID . (46)
procedure_statement : ID . $$8 LP expression_list RP
$$7 : . (44)
$$8 : . (47)
ASSIGNOP reduce 43
LSP reduce 44
LP reduce 47
. reduce 46
$$7 goto 64
$$8 goto 65
state 37
statement : compound_statement . (40)
. reduce 40
state 38
compound_statement : MYBEGIN optional_statements . END
END shift 66
state 39
optional_statements : statement_list . SEMI
optional_statements : statement_list . (33)
statement_list : statement_list . SEMI statement
SEMI shift 67
. reduce 33
state 40
statement_list : statement . (35)
. reduce 35
state 41
statement : variable . ASSIGNOP $$6 expression
ASSIGNOP shift 68
state 42
statement : procedure_statement . (39)
. reduce 39
state 43
subprogram_head : PROCEDURE ID . $$5 arguments SEMI
$$5 : . (22)
. reduce 22
$$5 goto 69
state 44
subprogram_declarations : subprogram_declarations subprogram_declaration SEMI . (17)
. reduce 17
state 45
subprogram_declaration : subprogram_head declarations . compound_statement
MYBEGIN shift 21
compound_statement goto 70
state 46
type : ARRAY LSP . NUM $$2 DOT DOT NUM $$3 RSP OF standard_type
NUM shift 71
state 47
declaration : declaration SEMI identifier_list COLON . type
ARRAY shift 26
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
type goto 72
standard_type goto 31
state 48
subprogram_head : FUNCTION ID $$4 . arguments COLON standard_type SEMI
arguments : . (25)
LP shift 73
. reduce 25
arguments goto 74
state 49
factor : MYFALSE . (67)
. reduce 67
state 50
factor : NOT . factor
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
factor goto 75
state 51
factor : MYTRUE . (66)
. reduce 66
state 52
factor : ID . (59)
factor : ID . $$9 LP expression_list RP
factor : ID . $$10 LSP expression RSP
$$9 : . (60)
$$10 : . (62)
LSP reduce 62
LP reduce 60
. reduce 59
$$9 goto 76
$$10 goto 77
state 53
factor : NUM . (64)
. reduce 64
state 54
factor : REALNUM . (65)
. reduce 65
state 55
factor : LP . expression RP
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
expression goto 78
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 56
sign : PLUS . (84)
. reduce 84
state 57
sign : MINUS . (85)
. reduce 85
state 58
statement : IF expression . THEN statement ELSE statement
THEN shift 79
state 59
expression : simple_expression . (52)
expression : simple_expression . relop simple_expression
simple_expression : simple_expression . addop term
OR shift 80
EQ shift 81
NE shift 82
LT shift 83
LE shift 84
GT shift 85
GE shift 86
PLUS shift 87
MINUS shift 88
. reduce 52
relop goto 89
addop goto 90
state 60
simple_expression : term . (54)
term : term . mulop factor
AND shift 91
TIMES shift 92
OVER shift 93
DIV shift 94
MOD shift 95
. reduce 54
mulop goto 96
state 61
term : factor . (56)
. reduce 56
state 62
term : sign . factor
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
factor goto 97
state 63
statement : WHILE expression . DO statement
DO shift 98
state 64
variable : ID $$7 . LSP expression RSP
LSP shift 99
state 65
procedure_statement : ID $$8 . LP expression_list RP
LP shift 100
state 66
compound_statement : MYBEGIN optional_statements END . (31)
. reduce 31
state 67
optional_statements : statement_list SEMI . (32)
statement_list : statement_list SEMI . statement
IF shift 34
MYBEGIN shift 21
WHILE shift 35
ID shift 36
. reduce 32
compound_statement goto 37
statement goto 101
variable goto 41
procedure_statement goto 42
state 68
statement : variable ASSIGNOP . $$6 expression
$$6 : . (37)
. reduce 37
$$6 goto 102
state 69
subprogram_head : PROCEDURE ID $$5 . arguments SEMI
arguments : . (25)
LP shift 73
. reduce 25
arguments goto 103
state 70
subprogram_declaration : subprogram_head declarations compound_statement . (19)
. reduce 19
state 71
type : ARRAY LSP NUM . $$2 DOT DOT NUM $$3 RSP OF standard_type
$$2 : . (11)
. reduce 11
$$2 goto 104
state 72
declaration : declaration SEMI identifier_list COLON type . (8)
. reduce 8
state 73
arguments : LP . parameter_list RP
parameter_list : . (30)
VAR shift 105
ID shift 6
. reduce 30
identifier_list goto 106
parameter_list goto 107
state 74
subprogram_head : FUNCTION ID $$4 arguments . COLON standard_type SEMI
COLON shift 108
state 75
factor : NOT factor . (69)
. reduce 69
state 76
factor : ID $$9 . LP expression_list RP
LP shift 109
state 77
factor : ID $$10 . LSP expression RSP
LSP shift 110
state 78
factor : LP expression . RP
RP shift 111
state 79
statement : IF expression THEN . statement ELSE statement
IF shift 34
MYBEGIN shift 21
WHILE shift 35
ID shift 36
compound_statement goto 37
statement goto 112
variable goto 41
procedure_statement goto 42
state 80
addop : OR . (78)
. reduce 78
state 81
relop : EQ . (70)
. reduce 70
state 82
relop : NE . (71)
. reduce 71
state 83
relop : LT . (72)
. reduce 72
state 84
relop : LE . (73)
. reduce 73
state 85
relop : GT . (74)
. reduce 74
state 86
relop : GE . (75)
. reduce 75
state 87
addop : PLUS . (76)
. reduce 76
state 88
addop : MINUS . (77)
. reduce 77
state 89
expression : simple_expression relop . simple_expression
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
simple_expression goto 113
term goto 60
factor goto 61
sign goto 62
state 90
simple_expression : simple_expression addop . term
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
term goto 114
factor goto 61
sign goto 62
state 91
mulop : AND . (83)
. reduce 83
state 92
mulop : TIMES . (79)
. reduce 79
state 93
mulop : OVER . (80)
. reduce 80
state 94
mulop : DIV . (81)
. reduce 81
state 95
mulop : MOD . (82)
. reduce 82
state 96
term : term mulop . factor
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
factor goto 115
state 97
term : sign factor . (57)
. reduce 57
state 98
statement : WHILE expression DO . statement
IF shift 34
MYBEGIN shift 21
WHILE shift 35
ID shift 36
compound_statement goto 37
statement goto 116
variable goto 41
procedure_statement goto 42
state 99
variable : ID $$7 LSP . expression RSP
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
expression goto 117
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 100
procedure_statement : ID $$8 LP . expression_list RP
expression_list : . (51)
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
. reduce 51
expression_list goto 118
expression goto 119
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 101
statement_list : statement_list SEMI statement . (36)
. reduce 36
state 102
statement : variable ASSIGNOP $$6 . expression
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
expression goto 120
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 103
subprogram_head : PROCEDURE ID $$5 arguments . SEMI
SEMI shift 121
state 104
type : ARRAY LSP NUM $$2 . DOT DOT NUM $$3 RSP OF standard_type
DOT shift 122
state 105
parameter_list : VAR . identifier_list COLON type
ID shift 6
identifier_list goto 123
state 106
identifier_list : identifier_list . COMMA id
parameter_list : identifier_list . COLON type
COLON shift 124
COMMA shift 8
state 107
arguments : LP parameter_list . RP
parameter_list : parameter_list . SEMI identifier_list COLON type
parameter_list : parameter_list . SEMI VAR identifier_list COLON type
SEMI shift 125
RP shift 126
state 108
subprogram_head : FUNCTION ID $$4 arguments COLON . standard_type SEMI
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
standard_type goto 127
state 109
factor : ID $$9 LP . expression_list RP
expression_list : . (51)
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
. reduce 51
expression_list goto 128
expression goto 119
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 110
factor : ID $$10 LSP . expression RSP
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
expression goto 129
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 111
factor : LP expression RP . (68)
. reduce 68
state 112
statement : IF expression THEN statement . ELSE statement
ELSE shift 130
state 113
expression : simple_expression relop simple_expression . (53)
simple_expression : simple_expression . addop term
OR shift 80
PLUS shift 87
MINUS shift 88
. reduce 53
addop goto 90
state 114
simple_expression : simple_expression addop term . (55)
term : term . mulop factor
AND shift 91
TIMES shift 92
OVER shift 93
DIV shift 94
MOD shift 95
. reduce 55
mulop goto 96
state 115
term : term mulop factor . (58)
. reduce 58
state 116
statement : WHILE expression DO statement . (42)
. reduce 42
state 117
variable : ID $$7 LSP expression . RSP
RSP shift 131
state 118
procedure_statement : ID $$8 LP expression_list . RP
expression_list : expression_list . COMMA expression
COMMA shift 132
RP shift 133
state 119
expression_list : expression . (49)
. reduce 49
state 120
statement : variable ASSIGNOP $$6 expression . (38)
. reduce 38
state 121
subprogram_head : PROCEDURE ID $$5 arguments SEMI . (23)
. reduce 23
state 122
type : ARRAY LSP NUM $$2 DOT . DOT NUM $$3 RSP OF standard_type
DOT shift 134
state 123
identifier_list : identifier_list . COMMA id
parameter_list : VAR identifier_list . COLON type
COLON shift 135
COMMA shift 8
state 124
parameter_list : identifier_list COLON . type
ARRAY shift 26
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
type goto 136
standard_type goto 31
state 125
parameter_list : parameter_list SEMI . identifier_list COLON type
parameter_list : parameter_list SEMI . VAR identifier_list COLON type
VAR shift 137
ID shift 6
identifier_list goto 138
state 126
arguments : LP parameter_list RP . (24)
. reduce 24
state 127
subprogram_head : FUNCTION ID $$4 arguments COLON standard_type . SEMI
SEMI shift 139
state 128
expression_list : expression_list . COMMA expression
factor : ID $$9 LP expression_list . RP
COMMA shift 132
RP shift 140
state 129
factor : ID $$10 LSP expression . RSP
RSP shift 141
state 130
statement : IF expression THEN statement ELSE . statement
IF shift 34
MYBEGIN shift 21
WHILE shift 35
ID shift 36
compound_statement goto 37
statement goto 142
variable goto 41
procedure_statement goto 42
state 131
variable : ID $$7 LSP expression RSP . (45)
. reduce 45
state 132
expression_list : expression_list COMMA . expression
MYFALSE shift 49
NOT shift 50
MYTRUE shift 51
ID shift 52
NUM shift 53
REALNUM shift 54
LP shift 55
PLUS shift 56
MINUS shift 57
expression goto 143
simple_expression goto 59
term goto 60
factor goto 61
sign goto 62
state 133
procedure_statement : ID $$8 LP expression_list RP . (48)
. reduce 48
state 134
type : ARRAY LSP NUM $$2 DOT DOT . NUM $$3 RSP OF standard_type
NUM shift 144
state 135
parameter_list : VAR identifier_list COLON . type
ARRAY shift 26
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
type goto 145
standard_type goto 31
state 136
parameter_list : identifier_list COLON type . (26)
. reduce 26
state 137
parameter_list : parameter_list SEMI VAR . identifier_list COLON type
ID shift 6
identifier_list goto 146
state 138
identifier_list : identifier_list . COMMA id
parameter_list : parameter_list SEMI identifier_list . COLON type
COLON shift 147
COMMA shift 8
state 139
subprogram_head : FUNCTION ID $$4 arguments COLON standard_type SEMI . (21)
. reduce 21
state 140
factor : ID $$9 LP expression_list RP . (61)
. reduce 61
state 141
factor : ID $$10 LSP expression RSP . (63)
. reduce 63
state 142
statement : IF expression THEN statement ELSE statement . (41)
. reduce 41
state 143
expression_list : expression_list COMMA expression . (50)
. reduce 50
state 144
type : ARRAY LSP NUM $$2 DOT DOT NUM . $$3 RSP OF standard_type
$$3 : . (12)
. reduce 12
$$3 goto 148
state 145
parameter_list : VAR identifier_list COLON type . (28)
. reduce 28
state 146
identifier_list : identifier_list . COMMA id
parameter_list : parameter_list SEMI VAR identifier_list . COLON type
COLON shift 149
COMMA shift 8
state 147
parameter_list : parameter_list SEMI identifier_list COLON . type
ARRAY shift 26
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
type goto 150
standard_type goto 31
state 148
type : ARRAY LSP NUM $$2 DOT DOT NUM $$3 . RSP OF standard_type
RSP shift 151
state 149
parameter_list : parameter_list SEMI VAR identifier_list COLON . type
ARRAY shift 26
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
type goto 152
standard_type goto 31
state 150
parameter_list : parameter_list SEMI identifier_list COLON type . (27)
. reduce 27
state 151
type : ARRAY LSP NUM $$2 DOT DOT NUM $$3 RSP . OF standard_type
OF shift 153
state 152
parameter_list : parameter_list SEMI VAR identifier_list COLON type . (29)
. reduce 29
state 153
type : ARRAY LSP NUM $$2 DOT DOT NUM $$3 RSP OF . standard_type
BOOLEAN shift 27
INTEGER shift 28
REAL shift 29
standard_type goto 154
state 154
type : ARRAY LSP NUM $$2 DOT DOT NUM $$3 RSP OF standard_type . (13)
. reduce 13
##############################################################################
# Summary
##############################################################################
47 token(s), 38 nonterminal(s)
86 grammar rule(s), 155 state(s)
##############################################################################
# End of File
##############################################################################