This commit is contained in:
Paul 2000-12-20 20:15:24 +00:00
parent fda1fc3ca7
commit b56cd688ae
16 changed files with 1569 additions and 849 deletions

View file

@ -12,29 +12,38 @@
8 | assign_expression END_STMT
9 | IF OPEN_PAR expression CLOSE_PAR statement
10 | IF OPEN_PAR expression CLOSE_PAR statement ELSE statement
11 | BEGIN_CS statement_list END_CS
12 | function END_STMT
11 | WHILE OPEN_PAR expression CLOSE_PAR statement
12 | DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT
13 | BEGIN_CS statement_list END_CS
14 | function END_STMT
13 assign_expression : variable ASSIGN value
15 assign_expression : variable ASSIGN value
14 expression : OPEN_PAR expression CLOSE_PAR
15 | equal_expression
16 | notequal_expression
16 expression : OPEN_PAR expression CLOSE_PAR
17 | equal_expression
18 | notequal_expression
19 | lessthan_expression
20 | greaterthan_expression
17 equal_expression : value EQUAL value
21 equal_expression : value EQUAL value
18 notequal_expression : value NOTEQUAL value
22 notequal_expression : value NOTEQUAL value
19 variable : VARIABLE
23 lessthan_expression : value LESSTHAN value
20 value : VALUE
21 | VARIABLE
22 | value PLUS value
23 | function
24 greaterthan_expression : value GREATERTHAN value
24 $$1 :
25 variable : VARIABLE
25 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR
26 value : VALUE
27 | VARIABLE
28 | value PLUS value
29 | value SUBTRACT value
30 | function
31 $$1 :
32 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR
state 0
@ -59,420 +68,649 @@ state 2
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
. reduce 1
statement goto 11
assign_expression goto 12
variable goto 13
function goto 14
statement goto 13
assign_expression goto 14
variable goto 15
function goto 16
state 3
statement : STOP . END_STMT
END_STMT shift 15
END_STMT shift 17
state 4
statement : IF . OPEN_PAR expression CLOSE_PAR statement
statement : IF . OPEN_PAR expression CLOSE_PAR statement ELSE statement
OPEN_PAR shift 16
state 5
statement : PAUSE . END_STMT
END_STMT shift 17
state 6
statement : PRINT . OPEN_PAR value CLOSE_PAR END_STMT
OPEN_PAR shift 18
state 5
statement : WHILE . OPEN_PAR expression CLOSE_PAR statement
OPEN_PAR shift 19
state 6
statement : DO . statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT
STOP shift 3
IF shift 4
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 20
assign_expression goto 14
variable goto 15
function goto 16
state 7
statement : PAUSE . END_STMT
END_STMT shift 21
state 8
statement : PRINT . OPEN_PAR value CLOSE_PAR END_STMT
OPEN_PAR shift 22
state 9
statement : END_STMT . (4)
. reduce 4
state 8
state 10
statement : BEGIN_CS . statement_list END_CS
statement_list : . (3)
. reduce 3
statement_list goto 19
state 9
variable : VARIABLE . (19)
. reduce 19
state 10
function : FUNCTION . OPEN_PAR $$1 CLOSE_PAR
OPEN_PAR shift 20
statement_list goto 23
state 11
variable : VARIABLE . (25)
. reduce 25
state 12
function : FUNCTION . OPEN_PAR $$1 CLOSE_PAR
OPEN_PAR shift 24
state 13
statement_list : statement_list statement . (2)
. reduce 2
state 12
state 14
statement : assign_expression . END_STMT
END_STMT shift 21
state 13
assign_expression : variable . ASSIGN value
ASSIGN shift 22
state 14
statement : function . END_STMT
END_STMT shift 23
END_STMT shift 25
state 15
assign_expression : variable . ASSIGN value
ASSIGN shift 26
state 16
statement : function . END_STMT
END_STMT shift 27
state 17
statement : STOP END_STMT . (5)
. reduce 5
state 16
state 18
statement : IF OPEN_PAR . expression CLOSE_PAR statement
statement : IF OPEN_PAR . expression CLOSE_PAR statement ELSE statement
OPEN_PAR shift 24
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 27
equal_expression goto 28
notequal_expression goto 29
value goto 30
function goto 31
expression goto 31
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 17
state 19
statement : WHILE OPEN_PAR . expression CLOSE_PAR statement
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 38
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 20
statement : DO statement . WHILE OPEN_PAR expression CLOSE_PAR END_STMT
WHILE shift 39
state 21
statement : PAUSE END_STMT . (6)
. reduce 6
state 18
state 22
statement : PRINT OPEN_PAR . value CLOSE_PAR END_STMT
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 32
function goto 31
value goto 40
function goto 37
state 19
state 23
statement_list : statement_list . statement
statement : BEGIN_CS statement_list . END_CS
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
END_CS shift 33
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
END_CS shift 41
VARIABLE shift 11
FUNCTION shift 12
statement goto 11
assign_expression goto 12
variable goto 13
function goto 14
statement goto 13
assign_expression goto 14
variable goto 15
function goto 16
state 20
state 24
function : FUNCTION OPEN_PAR . $$1 CLOSE_PAR
$$1 : . (24)
$$1 : . (31)
. reduce 24
. reduce 31
$$1 goto 34
$$1 goto 42
state 21
state 25
statement : assign_expression END_STMT . (8)
. reduce 8
state 22
state 26
assign_expression : variable ASSIGN . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 35
function goto 31
value goto 43
function goto 37
state 23
statement : function END_STMT . (12)
state 27
statement : function END_STMT . (14)
. reduce 12
. reduce 14
state 24
state 28
expression : OPEN_PAR . expression CLOSE_PAR
OPEN_PAR shift 24
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 36
equal_expression goto 28
notequal_expression goto 29
value goto 30
function goto 31
expression goto 44
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 25
value : VARIABLE . (21)
state 29
value : VARIABLE . (27)
. reduce 21
. reduce 27
state 26
value : VALUE . (20)
state 30
value : VALUE . (26)
. reduce 26
state 31
statement : IF OPEN_PAR expression . CLOSE_PAR statement
statement : IF OPEN_PAR expression . CLOSE_PAR statement ELSE statement
CLOSE_PAR shift 45
state 32
expression : equal_expression . (17)
. reduce 17
state 33
expression : notequal_expression . (18)
. reduce 18
state 34
expression : lessthan_expression . (19)
. reduce 19
state 35
expression : greaterthan_expression . (20)
. reduce 20
state 27
statement : IF OPEN_PAR expression . CLOSE_PAR statement
statement : IF OPEN_PAR expression . CLOSE_PAR statement ELSE statement
CLOSE_PAR shift 37
state 28
expression : equal_expression . (15)
. reduce 15
state 29
expression : notequal_expression . (16)
. reduce 16
state 30
state 36
equal_expression : value . EQUAL value
notequal_expression : value . NOTEQUAL value
lessthan_expression : value . LESSTHAN value
greaterthan_expression : value . GREATERTHAN value
value : value . PLUS value
value : value . SUBTRACT value
EQUAL shift 38
NOTEQUAL shift 39
PLUS shift 40
state 31
value : function . (23)
. reduce 23
state 32
statement : PRINT OPEN_PAR value . CLOSE_PAR END_STMT
value : value . PLUS value
PLUS shift 40
CLOSE_PAR shift 41
state 33
statement : BEGIN_CS statement_list END_CS . (11)
. reduce 11
state 34
function : FUNCTION OPEN_PAR $$1 . CLOSE_PAR
CLOSE_PAR shift 42
state 35
assign_expression : variable ASSIGN value . (13)
value : value . PLUS value
PLUS shift 40
. reduce 13
state 36
expression : OPEN_PAR expression . CLOSE_PAR
CLOSE_PAR shift 43
EQUAL shift 46
NOTEQUAL shift 47
LESSTHAN shift 48
GREATERTHAN shift 49
PLUS shift 50
SUBTRACT shift 51
state 37
value : function . (30)
. reduce 30
state 38
statement : WHILE OPEN_PAR expression . CLOSE_PAR statement
CLOSE_PAR shift 52
state 39
statement : DO statement WHILE . OPEN_PAR expression CLOSE_PAR END_STMT
OPEN_PAR shift 53
state 40
statement : PRINT OPEN_PAR value . CLOSE_PAR END_STMT
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
CLOSE_PAR shift 54
state 41
statement : BEGIN_CS statement_list END_CS . (13)
. reduce 13
state 42
function : FUNCTION OPEN_PAR $$1 . CLOSE_PAR
CLOSE_PAR shift 55
state 43
assign_expression : variable ASSIGN value . (15)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 15
state 44
expression : OPEN_PAR expression . CLOSE_PAR
CLOSE_PAR shift 56
state 45
statement : IF OPEN_PAR expression CLOSE_PAR . statement
statement : IF OPEN_PAR expression CLOSE_PAR . statement ELSE statement
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 44
assign_expression goto 12
variable goto 13
function goto 14
state 38
equal_expression : value EQUAL . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
value goto 45
function goto 31
state 39
notequal_expression : value NOTEQUAL . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
value goto 46
function goto 31
state 40
value : value PLUS . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
value goto 47
function goto 31
state 41
statement : PRINT OPEN_PAR value CLOSE_PAR . END_STMT
END_STMT shift 48
state 42
function : FUNCTION OPEN_PAR $$1 CLOSE_PAR . (25)
. reduce 25
state 43
expression : OPEN_PAR expression CLOSE_PAR . (14)
. reduce 14
44: shift-reduce conflict (shift 49, reduce 9) on ELSE
state 44
statement : IF OPEN_PAR expression CLOSE_PAR statement . (9)
statement : IF OPEN_PAR expression CLOSE_PAR statement . ELSE statement
ELSE shift 49
. reduce 9
state 45
equal_expression : value EQUAL value . (17)
value : value . PLUS value
PLUS shift 40
. reduce 17
statement goto 57
assign_expression goto 14
variable goto 15
function goto 16
state 46
notequal_expression : value NOTEQUAL value . (18)
value : value . PLUS value
equal_expression : value EQUAL . value
PLUS shift 40
. reduce 18
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 58
function goto 37
47: shift-reduce conflict (shift 40, reduce 22) on PLUS
state 47
value : value PLUS value . (22)
value : value . PLUS value
notequal_expression : value NOTEQUAL . value
PLUS shift 40
. reduce 22
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 59
function goto 37
state 48
lessthan_expression : value LESSTHAN . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 60
function goto 37
state 49
greaterthan_expression : value GREATERTHAN . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 61
function goto 37
state 50
value : value PLUS . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 62
function goto 37
state 51
value : value SUBTRACT . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 63
function goto 37
state 52
statement : WHILE OPEN_PAR expression CLOSE_PAR . statement
STOP shift 3
IF shift 4
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 64
assign_expression goto 14
variable goto 15
function goto 16
state 53
statement : DO statement WHILE OPEN_PAR . expression CLOSE_PAR END_STMT
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 65
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 54
statement : PRINT OPEN_PAR value CLOSE_PAR . END_STMT
END_STMT shift 66
state 55
function : FUNCTION OPEN_PAR $$1 CLOSE_PAR . (32)
. reduce 32
state 56
expression : OPEN_PAR expression CLOSE_PAR . (16)
. reduce 16
57: shift-reduce conflict (shift 67, reduce 9) on ELSE
state 57
statement : IF OPEN_PAR expression CLOSE_PAR statement . (9)
statement : IF OPEN_PAR expression CLOSE_PAR statement . ELSE statement
ELSE shift 67
. reduce 9
state 58
equal_expression : value EQUAL value . (21)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 21
state 59
notequal_expression : value NOTEQUAL value . (22)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 22
state 60
lessthan_expression : value LESSTHAN value . (23)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 23
state 61
greaterthan_expression : value GREATERTHAN value . (24)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 24
62: shift-reduce conflict (shift 50, reduce 28) on PLUS
62: shift-reduce conflict (shift 51, reduce 28) on SUBTRACT
state 62
value : value PLUS value . (28)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 28
63: shift-reduce conflict (shift 50, reduce 29) on PLUS
63: shift-reduce conflict (shift 51, reduce 29) on SUBTRACT
state 63
value : value . PLUS value
value : value SUBTRACT value . (29)
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 29
state 64
statement : WHILE OPEN_PAR expression CLOSE_PAR statement . (11)
. reduce 11
state 65
statement : DO statement WHILE OPEN_PAR expression . CLOSE_PAR END_STMT
CLOSE_PAR shift 68
state 66
statement : PRINT OPEN_PAR value CLOSE_PAR END_STMT . (7)
. reduce 7
state 49
state 67
statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE . statement
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 50
assign_expression goto 12
variable goto 13
function goto 14
statement goto 69
assign_expression goto 14
variable goto 15
function goto 16
state 50
state 68
statement : DO statement WHILE OPEN_PAR expression CLOSE_PAR . END_STMT
END_STMT shift 70
state 69
statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE statement . (10)
. reduce 10
State 44 contains 1 shift-reduce conflict
State 47 contains 1 shift-reduce conflict
state 70
statement : DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT . (12)
. reduce 12
19 tokens, 12 nonterminals
26 grammar rules, 51 states
State 57 contains 1 shift-reduce conflict
State 62 contains 2 shift-reduce conflicts
State 63 contains 2 shift-reduce conflicts
24 tokens, 14 nonterminals
33 grammar rules, 71 states