Add docstrings.
[cl-opossum.git] / pegparser-boot.lisp
blobeade63e549080af6619fab00b96797787eb9da40
1 ;; -*- mode:lisp -*-
2 (in-package :opossum-system)
3 (eval-when (:compile-toplevel :load-toplevel :execute)
4 (declaim (optimize (speed 0) (safety 3) (debug 3))))
5 (defun parse-file (f dst-package)
6 (let ((opossum:*context* (make-instance 'opossum:context :start-index 0
7 :dst-package dst-package
8 :input (opossum::read-file f))))
9 (funcall (|parse_program|) 0)))
11 (DEFUN |parse_program| ()
12 (opossum::BUILD-PARSER-FUNCTION "program"
13 (opossum::SEQ (opossum::MANY (|parse_ws|))
14 (opossum::MANY1
15 (|parse_rule|))
16 (LIST ':ACTION NIL
17 '|metapeg_action320|))))
19 (DEFUN |parse_rule| ()
20 (opossum::BUILD-PARSER-FUNCTION "rule"
21 (opossum::SEQ (|parse_id|)
22 (opossum::MANY (|parse_ws|))
23 (opossum::MATCH-STRING "<-")
24 (opossum::MANY (|parse_ws|))
25 (|parse_ordered-expr-list|)
26 (opossum::MANY
27 (|parse_ws_or_nl|))
28 (LIST ':ACTION NIL
29 '|metapeg_action321|))))
30 (DEFUN |parse_ordered-expr-list| ()
31 (opossum::BUILD-PARSER-FUNCTION "ordered-expr-list"
32 (opossum::EITHER
33 (opossum::SEQ (|parse_expr-list|)
34 (opossum::MANY (|parse_ws|))
35 (opossum::MATCH-STRING "/")
36 (opossum::MANY (|parse_ws|))
37 (|parse_ordered-expr-list|)
38 (LIST ':ACTION NIL
39 '|metapeg_action322|))
40 (opossum::SEQ (|parse_expr-list|)
41 (LIST ':ACTION NIL
42 '|metapeg_action323|)))))
43 (DEFUN |parse_expr-list| ()
44 (opossum::BUILD-PARSER-FUNCTION "expr-list"
45 (opossum::SEQ (|parse_expr|)
46 (opossum::MANY
47 (opossum::SEQ
48 (opossum::MANY1
49 (|parse_ws|))
50 (|parse_expr-list|)))
51 (LIST ':ACTION NIL
52 '|metapeg_action324|))))
53 (DEFUN |parse_expr| ()
54 (opossum::BUILD-PARSER-FUNCTION "expr"
55 (opossum::EITHER
56 (opossum::SEQ (|parse_simple-expr|)
57 (opossum::MATCH-STRING "*")
58 (LIST ':ACTION NIL
59 '|metapeg_action325|))
60 (opossum::SEQ (|parse_simple-expr|)
61 (opossum::MATCH-STRING "+")
62 (LIST ':ACTION NIL
63 '|metapeg_action326|))
64 (opossum::SEQ (|parse_simple-expr|)
65 (opossum::MATCH-STRING "?")
66 (LIST ':ACTION NIL
67 '|metapeg_action327|))
68 (opossum::SEQ (|parse_simple-expr|)
69 (LIST ':ACTION NIL
70 '|metapeg_action328|)))))
71 (DEFUN |parse_simple-expr| ()
72 (opossum::BUILD-PARSER-FUNCTION "simple-expr"
73 (opossum::EITHER
74 (opossum::SEQ (|parse_string|)
75 (LIST ':ACTION NIL
76 '|metapeg_action329|))
77 (|parse_action|)
78 (opossum::SEQ (opossum::MATCH-STRING "&")
79 (|parse_simple-expr|)
80 (LIST ':ACTION NIL
81 '|metapeg_action330|))
82 (opossum::SEQ (opossum::MATCH-STRING "@")
83 (|parse_id|)
84 (LIST ':action NIL
85 '|metapeg_action331|))
86 (opossum::SEQ (|parse_id|)
87 (LIST ':action NIL
88 '|metapeg_action332|))
89 (opossum::SEQ (|parse_bracketed-rule|)
90 (LIST ':action NIL
91 '|metapeg_action333|))
93 (opossum::SEQ (opossum::MATCH-STRING "!")
94 (|parse_expr|)
95 (LIST ':action NIL
96 '|metapeg_action334|))
97 (opossum::SEQ (|parse_character-class|)
98 (LIST ':action NIL
99 '|metapeg_action335|))
100 (opossum::SEQ (opossum::MATCH-STRING ".")
101 (LIST ':action NIL
102 '|metapeg_action336|)))))
103 (DEFUN |parse_bracketed-rule| ()
104 (opossum::BUILD-PARSER-FUNCTION "bracketed-rule"
105 (opossum::EITHER
106 (opossum::MATCH-STRING "()")
107 (opossum::SEQ (opossum::MATCH-STRING "(")
108 (opossum::MANY (|parse_ws|))
109 (|parse_ordered-expr-list|)
110 (opossum::MANY (|parse_ws|))
111 (opossum::MATCH-STRING ")")
112 (LIST ':action NIL
113 '|metapeg_action337|)))))
114 (DEFUN |parse_id| ()
115 (opossum::BUILD-PARSER-FUNCTION "id"
116 (opossum::SEQ
117 (opossum::MANY1
118 (opossum::MATCH-CHAR
119 '(#\A #\B #\C #\D #\E #\F #\G #\H #\I
120 #\J #\K #\L #\M #\N #\O #\P #\Q #\R
121 #\S #\T #\U #\V #\W #\X #\Y #\Z #\a
122 #\b #\c #\d #\e #\f #\g #\h #\i #\j
123 #\k #\l #\m #\n #\o #\p #\q #\r #\s
124 #\t #\u #\v #\w #\x #\y #\z #\- #\_)))
125 (LIST ':action NIL
126 '|metapeg_action338|))))
127 (DEFUN |parse_character-class| ()
128 (opossum::BUILD-PARSER-FUNCTION "character-class"
129 (opossum::SEQ (opossum::MATCH-STRING "[")
130 (opossum::MANY1
131 (opossum::SEQ
132 (|parse_not_right_bracket|)
133 (opossum::MATCH-ANY-CHAR)))
134 (opossum::MATCH-STRING "]")
135 (LIST ':action NIL
136 '|metapeg_action339|))))
137 (DEFUN |parse_string| ()
138 (opossum::BUILD-PARSER-FUNCTION "string"
139 (opossum::SEQ (opossum::MATCH-CHAR '(#\"))
140 (opossum::MANY
141 (opossum::SEQ
142 (opossum::NEGATE
143 (opossum::MATCH-CHAR
144 '(#\")))
145 (opossum::MATCH-ANY-CHAR)))
146 (opossum::MATCH-CHAR '(#\"))
147 (LIST ':action NIL
148 '|metapeg_action340|))))
149 (DEFUN |parse_action| ()
150 (opossum::BUILD-PARSER-FUNCTION "action"
151 (opossum::SEQ (opossum::MATCH-CHAR '(#\{))
152 (opossum::MANY
153 (opossum::SEQ
154 (opossum::NEGATE
155 (opossum::MATCH-CHAR
156 '(#\})))
157 (opossum::MATCH-ANY-CHAR)))
158 (opossum::MATCH-CHAR '(#\}))
159 (LIST ':action NIL
160 '|metapeg_action341|
161 opossum:*context*))))
162 (DEFUN |parse_not_right_bracket| ()
163 (opossum::BUILD-PARSER-FUNCTION "not_right_bracket"
164 (opossum::NEGATE
165 (opossum::MATCH-STRING "]"))))
166 (Defun |parse_comment| ()
167 (opossum::BUILD-PARSER-FUNCTION "comment" (opossum::seq
168 (opossum::match-char '(#\#))
169 (opossum::many
170 (opossum::seq
171 (opossum::negate
172 (opossum::match-char '(#\Newline)))
173 (opossum::match-any-char)))
174 (opossum::optional
175 (opossum::match-char '(#\Newline))))))
176 (DEFUN |parse_ws| ()
177 (opossum::BUILD-PARSER-FUNCTION "ws" (opossum::either
178 (opossum::MATCH-CHAR '(#\Space #\Tab))
179 (|parse_comment|))))
180 (DEFUN |parse_nl| ()
181 (opossum::BUILD-PARSER-FUNCTION "nl" (opossum::MATCH-CHAR '(#\Newline))))
182 (DEFUN |parse_ws_or_nl| ()
183 (opossum::BUILD-PARSER-FUNCTION "ws_or_nl"
184 (opossum::EITHER (|parse_ws|)
185 (|parse_nl|)
189 (defun |metapeg_action341| (data)
190 (let* ((action-sans-{ (second data))
191 (action-code (coerce
192 (opossum::fix-escape-sequences
193 (mapcar #'second action-sans-{))
194 'string))
195 (action-name (opossum::make-action-name)))
196 (opossum::store-action opossum:*context*
197 `(,action-name ,action-code))
198 `(list ':action nil ',action-name)))
200 (defun |metapeg_action340| (data) `(opossum::match-string ,(coerce (opossum::fix-escape-sequences (mapcar #'second (second data))) 'string)))
202 (defun |metapeg_action339| (data)
203 ;; FIXME: this is character-class matching and needs to use cl-ppcre
204 `(opossum::match-char-class ,(coerce (mapcar #'second (second data)) 'string)))
206 (defun |metapeg_action338| (data) (coerce (first data) 'string) )
207 (defun |metapeg_action337| (data) (third data) )
208 (defun |metapeg_action336| (data) (declare (ignore data)) `(opossum::match-any-char) )
209 (defun |metapeg_action335| (data) (first data) )
210 (defun |metapeg_action334| (data) `(opossum::negate ,(second data)) )
211 (defun |metapeg_action333| (data) (first data) )
212 (defun |metapeg_action332| (data)
213 `(,(opossum::make-name (first data)))
215 (defun |metapeg_action331| (data) `(opossum::match ,(second data)) )
216 (defun |metapeg_action330| (data) `(opossum::follow ,(second data)) )
217 (defun |metapeg_action329| (data) (first data) )
218 (defun |metapeg_action328| (data) (first data) )
219 (defun |metapeg_action327| (data) `(opossum::optional ,(first data)) )
220 (defun |metapeg_action326| (data) `(opossum::many1 ,(first data)) )
221 (defun |metapeg_action325| (data) `(opossum::many ,(first data)) )
222 (defun |metapeg_action324| (data) (if (or (equal (second data) "") (null (second data)))
223 (first data)
224 (let ((tail (second (first (second data)))))
225 (if (equal (first tail) 'seq)
226 `(opossum::seq ,(first data) ,@(rest tail))
227 `(opossum::seq ,(first data) ,tail)))) )
228 (defun |metapeg_action323| (data) (first data) )
229 (defun |metapeg_action322| (data)
230 (let ((tail (fifth data)))
231 (if (equal (first tail) 'either)
232 `(opossum::either ,(first data) ,@(rest tail))
233 `(opossum::either ,(first data) ,(fifth data))))
235 (defun |metapeg_action321| (data) `(defun ,(opossum::make-name (first data)) ()
236 (opossum::build-parser-function ,(first data) ,(fifth data))) )
237 (defun |metapeg_action320| (data)
238 `( ,@(second data))