File: A1_3.ml

package info (click to toggle)
hol88 2.02.19940316dfsg-5
  • links: PTS
  • area: main
  • in suites:
  • size: 65,816 kB
  • sloc: ml: 199,939; ansic: 9,666; sh: 6,913; makefile: 6,032; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (194 lines) | stat: -rw-r--r-- 9,706 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

% A1.3 DECLARATIONS %
declaration:=
   \lst whitespace prev result_list FIRST_CHARS CHARS expected.
    let (WORD,lst) = gnt lst whitespace prev in
    let TOKENS = explode WORD in
    debug_enter(`declaration`,expected,WORD);
   
    if WORD = `TYPE` then
        (let (typedec_0 , result_list , prev, lst) = typedec lst whitespace whitespace result_list FIRST_CHARS CHARS `nil` in
         let result_list = push typedec_0 result_list in
         let (more_typedecs_1 , result_list , prev, lst) = more_typedecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_typedecs_1 result_list in
         let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_2 , pop_list ) = (pop pop_list) in
         let tmp_3 = MK_one(`declaration`,POP_2) in
         let result_list = push tmp_3 result_list in
         do_return result_list whitespace `declaration` prev lst `nil`)
    else
         fail
  ?
    if WORD = `FN` then
        (let (fndec_0 , result_list , prev, lst) = fndec lst whitespace whitespace result_list FIRST_CHARS CHARS `nil` in
         let result_list = push fndec_0 result_list in
         let (more_fndecs_1 , result_list , prev, lst) = more_fndecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_fndecs_1 result_list in
         let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_2 , pop_list ) = (pop pop_list) in
         let tmp_3 = MK_one(`declaration`,POP_2) in
         let result_list = push tmp_3 result_list in
         do_return result_list whitespace `declaration` prev lst `nil`)
    else
         fail
  ?
    if WORD = `INT` then
        (let (intdec_0 , result_list , prev, lst) = intdec lst whitespace whitespace result_list FIRST_CHARS CHARS `nil` in
         let result_list = push intdec_0 result_list in
         let (more_intdecs_1 , result_list , prev, lst) = more_intdecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_intdecs_1 result_list in
         let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_2 , pop_list ) = (pop pop_list) in
         let tmp_3 = MK_one(`declaration`,POP_2) in
         let result_list = push tmp_3 result_list in
         do_return result_list whitespace `declaration` prev lst `nil`)
    else
         fail
  ?
    if WORD = `CONST` then
        (let (constdec_0 , result_list , prev, lst) = constdec lst whitespace whitespace result_list FIRST_CHARS CHARS `nil` in
         let result_list = push constdec_0 result_list in
         let (more_constdecs_1 , result_list , prev, lst) = more_constdecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_constdecs_1 result_list in
         let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_2 , pop_list ) = (pop pop_list) in
         let tmp_3 = MK_one(`declaration`,POP_2) in
         let result_list = push tmp_3 result_list in
         do_return result_list whitespace `declaration` prev lst `nil`)
    else
         fail
  ?
    if WORD = `MAC` then
        (let (macdec_0 , result_list , prev, lst) = macdec lst whitespace whitespace result_list FIRST_CHARS CHARS `nil` in
         let result_list = push macdec_0 result_list in
         let (more_macdecs_1 , result_list , prev, lst) = more_macdecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_macdecs_1 result_list in
         let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_2 , pop_list ) = (pop pop_list) in
         let tmp_3 = MK_one(`declaration`,POP_2) in
         let result_list = push tmp_3 result_list in
         do_return result_list whitespace `declaration` prev lst `nil`)
    else
         fail
  ? fail;;

more_typedecs:=
   \lst whitespace prev result_list FIRST_CHARS CHARS expected.
    let (WORD,lst) = gnt lst whitespace prev in
    let TOKENS = explode WORD in
    debug_enter(`more_typedecs`,expected,WORD);
   
    if WORD = `,` then
        (let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_0 , pop_list ) = (pop pop_list) in
         let (typedec_1 , result_list , prev, lst) =  typedec  lst whitespace  whitespace  result_list FIRST_CHARS CHARS `nil` in
         let tmp_2 = add_to_list(POP_0,typedec_1) in
         let result_list = push tmp_2 result_list in
         let (more_typedecs_2 , result_list , prev, lst) = more_typedecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_typedecs_2 result_list in
         do_return result_list whitespace `more_typedecs` prev lst `nil`)
    else
         fail
  ?
    (let (result_list,pop_list) = chop_off 1 [] result_list in
     let (POP_0 , pop_list ) = (pop pop_list) in
     let tmp_1 = MK_one(`typedecs`,POP_0) in
     let result_list = push tmp_1 result_list in
     do_return result_list whitespace `more_typedecs` WORD lst expected);;

more_fndecs:=
   \lst whitespace prev result_list FIRST_CHARS CHARS expected.
    let (WORD,lst) = gnt lst whitespace prev in
    let TOKENS = explode WORD in
    debug_enter(`more_fndecs`,expected,WORD);
   
    if WORD = `,` then
        (let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_0 , pop_list ) = (pop pop_list) in
         let (fndec_1 , result_list , prev, lst) =  fndec  lst whitespace  whitespace  result_list FIRST_CHARS CHARS `nil` in
         let tmp_2 = add_to_list(POP_0,fndec_1) in
         let result_list = push tmp_2 result_list in
         let (more_fndecs_2 , result_list , prev, lst) = more_fndecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_fndecs_2 result_list in
         do_return result_list whitespace `more_fndecs` prev lst `nil`)
    else
         fail
  ?
    (let (result_list,pop_list) = chop_off 1 [] result_list in
     let (POP_0 , pop_list ) = (pop pop_list) in
     let tmp_1 = MK_one(`fndecs`,POP_0) in
     let result_list = push tmp_1 result_list in
     do_return result_list whitespace `more_fndecs` WORD lst expected);;

more_intdecs:=
   \lst whitespace prev result_list FIRST_CHARS CHARS expected.
    let (WORD,lst) = gnt lst whitespace prev in
    let TOKENS = explode WORD in
    debug_enter(`more_intdecs`,expected,WORD);
   
    if WORD = `,` then
        (let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_0 , pop_list ) = (pop pop_list) in
         let (intdec_1 , result_list , prev, lst) =  intdec  lst whitespace  whitespace  result_list FIRST_CHARS CHARS `nil` in
         let tmp_2 = add_to_list(POP_0,intdec_1) in
         let result_list = push tmp_2 result_list in
         let (more_intdecs_2 , result_list , prev, lst) = more_intdecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_intdecs_2 result_list in
         do_return result_list whitespace `more_intdecs` prev lst `nil`)
    else
         fail
  ?
    (let (result_list,pop_list) = chop_off 1 [] result_list in
     let (POP_0 , pop_list ) = (pop pop_list) in
     let tmp_1 = MK_one(`intdecs`,POP_0) in
     let result_list = push tmp_1 result_list in
     do_return result_list whitespace `more_intdecs` WORD lst expected);;

more_constdecs:=
   \lst whitespace prev result_list FIRST_CHARS CHARS expected.
    let (WORD,lst) = gnt lst whitespace prev in
    let TOKENS = explode WORD in
    debug_enter(`more_constdecs`,expected,WORD);
   
    if WORD = `,` then
        (let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_0 , pop_list ) = (pop pop_list) in
         let (constdec_1 , result_list , prev, lst) =  constdec  lst whitespace  whitespace  result_list FIRST_CHARS CHARS `nil` in
         let tmp_2 = add_to_list(POP_0,constdec_1) in
         let result_list = push tmp_2 result_list in
         let (more_constdecs_2 , result_list , prev, lst) = more_constdecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_constdecs_2 result_list in
         do_return result_list whitespace `more_constdecs` prev lst `nil`)
    else
         fail
  ?
    (let (result_list,pop_list) = chop_off 1 [] result_list in
     let (POP_0 , pop_list ) = (pop pop_list) in
     let tmp_1 = MK_one(`constdecs`,POP_0) in
     let result_list = push tmp_1 result_list in
     do_return result_list whitespace `more_constdecs` WORD lst expected);;

more_macdecs:=
   \lst whitespace prev result_list FIRST_CHARS CHARS expected.
    let (WORD,lst) = gnt lst whitespace prev in
    let TOKENS = explode WORD in
    debug_enter(`more_macdecs`,expected,WORD);
   
    if WORD = `,` then
        (let (result_list,pop_list) = chop_off 1 [] result_list in
         let (POP_0 , pop_list ) = (pop pop_list) in
         let (macdec_1 , result_list , prev, lst) =  macdec  lst whitespace  whitespace  result_list FIRST_CHARS CHARS `nil` in
         let tmp_2 = add_to_list(POP_0,macdec_1) in
         let result_list = push tmp_2 result_list in
         let (more_macdecs_2 , result_list , prev, lst) = more_macdecs lst whitespace prev result_list FIRST_CHARS CHARS expected in
         let result_list = push more_macdecs_2 result_list in
         do_return result_list whitespace `more_macdecs` prev lst `nil`)
    else
         fail
  ?
    (let (result_list,pop_list) = chop_off 1 [] result_list in
     let (POP_0 , pop_list ) = (pop pop_list) in
     let tmp_1 = MK_one(`macdecs`,POP_0) in
     let result_list = push tmp_1 result_list in
     do_return result_list whitespace `more_macdecs` WORD lst expected);;