Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /smlnj-lib/trunk/HTML4/html4.g
ViewVC logotype

Annotation of /smlnj-lib/trunk/HTML4/html4.g

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3528 - (view) (download)

1 : jriehl 3528 (* ______________________________________________________________________
2 :     html4.g
3 :     ______________________________________________________________________ *)
4 :    
5 :     %name HTML4;
6 :    
7 :     %tokens : OPENTAG of Atom.atom * string
8 :     | CLOSETAG of Atom.atom
9 :     | COMMENT of string
10 :     | PCDATA of string
11 :     | DOCTYPE of string
12 :     | CHAR_REF of Atom.atom
13 :     | ENTITY_REF of Atom.atom
14 :     | XML_PROCESSING of string
15 :     (* HTML 4 element tokens. *)
16 :     | STARTA of string
17 :     | ENDA
18 :     | STARTABBR of string
19 :     | ENDABBR
20 :     | STARTACRONYM of string
21 :     | ENDACRONYM
22 :     | STARTADDRESS of string
23 :     | ENDADDRESS
24 :     | STARTAPPLET of string
25 :     | ENDAPPLET
26 :     | STARTAREA of string
27 :     (* No END tag for AREA element. *)
28 :     | STARTB of string
29 :     | ENDB
30 :     | STARTBASE of string
31 :     (* No END tag for BASE element. *)
32 :     | STARTBASEFONT of string
33 :     (* No END tag for BASEFONT element. *)
34 :     | STARTBDO of string
35 :     | ENDBDO
36 :     | STARTBIG of string
37 :     | ENDBIG
38 :     | STARTBLOCKQUOTE of string
39 :     | ENDBLOCKQUOTE
40 :     | STARTBODY of string
41 :     | ENDBODY
42 :     | STARTBR of string
43 :     (* No END tag for BR element. *)
44 :     | STARTBUTTON of string
45 :     | ENDBUTTON
46 :     | STARTCAPTION of string
47 :     | ENDCAPTION
48 :     | STARTCENTER of string
49 :     | ENDCENTER
50 :     | STARTCITE of string
51 :     | ENDCITE
52 :     | STARTCODE of string
53 :     | ENDCODE
54 :     | STARTCOL of string
55 :     (* No END tag for COL element. *)
56 :     | STARTCOLGROUP of string
57 :     | ENDCOLGROUP
58 :     | STARTDD of string
59 :     | ENDDD
60 :     | STARTDEL of string
61 :     | ENDDEL
62 :     | STARTDFN of string
63 :     | ENDDFN
64 :     | STARTDIR of string
65 :     | ENDDIR
66 :     | STARTDIV of string
67 :     | ENDDIV
68 :     | STARTDL of string
69 :     | ENDDL
70 :     | STARTDT of string
71 :     | ENDDT
72 :     | STARTEM of string
73 :     | ENDEM
74 :     | STARTFIELDSET of string
75 :     | ENDFIELDSET
76 :     | STARTFONT of string
77 :     | ENDFONT
78 :     | STARTFORM of string
79 :     | ENDFORM
80 :     | STARTFRAME of string
81 :     (* No END tag for FRAME element. *)
82 :     | STARTFRAMESET of string
83 :     | ENDFRAMESET
84 :     | STARTH1 of string
85 :     | ENDH1
86 :     | STARTH2 of string
87 :     | ENDH2
88 :     | STARTH3 of string
89 :     | ENDH3
90 :     | STARTH4 of string
91 :     | ENDH4
92 :     | STARTH5 of string
93 :     | ENDH5
94 :     | STARTH6 of string
95 :     | ENDH6
96 :     | STARTHEAD of string
97 :     | ENDHEAD
98 :     | STARTHR of string
99 :     (* No END tag for HR element. *)
100 :     | STARTHTML of string
101 :     | ENDHTML
102 :     | STARTI of string
103 :     | ENDI
104 :     | STARTIFRAME of string
105 :     | ENDIFRAME
106 :     | STARTIMG of string
107 :     (* No END tag for IMG element. *)
108 :     | STARTINPUT of string
109 :     (* No END tag for INPUT element. *)
110 :     | STARTINS of string
111 :     | ENDINS
112 :     | STARTISINDEX of string
113 :     (* No END tag for ISINDEX element. *)
114 :     | STARTKBD of string
115 :     | ENDKBD
116 :     | STARTLABEL of string
117 :     | ENDLABEL
118 :     | STARTLEGEND of string
119 :     | ENDLEGEND
120 :     | STARTLI of string
121 :     | ENDLI
122 :     | STARTLINK of string
123 :     (* No END tag for LINK element. *)
124 :     | STARTMAP of string
125 :     | ENDMAP
126 :     | STARTMENU of string
127 :     | ENDMENU
128 :     | STARTMETA of string
129 :     (* No END tag for META element. *)
130 :     | STARTNOFRAMES of string
131 :     | ENDNOFRAMES
132 :     | STARTNOSCRIPT of string
133 :     | ENDNOSCRIPT
134 :     | STARTOBJECT of string
135 :     | ENDOBJECT
136 :     | STARTOL of string
137 :     | ENDOL
138 :     | STARTOPTGROUP of string
139 :     | ENDOPTGROUP
140 :     | STARTOPTION of string
141 :     | ENDOPTION
142 :     | STARTP of string
143 :     | ENDP
144 :     | STARTPARAM of string
145 :     (* No END tag for PARAM element. *)
146 :     | STARTPRE of string
147 :     | ENDPRE
148 :     | STARTQ of string
149 :     | ENDQ
150 :     | STARTS of string
151 :     | ENDS
152 :     | STARTSAMP of string
153 :     | ENDSAMP
154 :     | STARTSCRIPT of string
155 :     | ENDSCRIPT
156 :     | STARTSELECT of string
157 :     | ENDSELECT
158 :     | STARTSMALL of string
159 :     | ENDSMALL
160 :     | STARTSPAN of string
161 :     | ENDSPAN
162 :     | STARTSTRIKE of string
163 :     | ENDSTRIKE
164 :     | STARTSTRONG of string
165 :     | ENDSTRONG
166 :     | STARTSTYLE of string
167 :     | ENDSTYLE
168 :     | STARTSUB of string
169 :     | ENDSUB
170 :     | STARTSUP of string
171 :     | ENDSUP
172 :     | STARTTABLE of string
173 :     | ENDTABLE
174 :     | STARTTBODY of string
175 :     | ENDTBODY
176 :     | STARTTD of string
177 :     | ENDTD
178 :     | STARTTEXTAREA of string
179 :     | ENDTEXTAREA
180 :     | STARTTFOOT of string
181 :     | ENDTFOOT
182 :     | STARTTH of string
183 :     | ENDTH
184 :     | STARTTHEAD of string
185 :     | ENDTHEAD
186 :     | STARTTITLE of string
187 :     | ENDTITLE
188 :     | STARTTR of string
189 :     | ENDTR
190 :     | STARTTT of string
191 :     | ENDTT
192 :     | STARTU of string
193 :     | ENDU
194 :     | STARTUL of string
195 :     | ENDUL
196 :     | STARTVAR of string
197 :     | ENDVAR
198 :     ;
199 :    
200 :     %start document;
201 :    
202 :     (*
203 :     %entry document, body, flow, block, inline;
204 :     *)
205 :    
206 :     document : cdata_opt (DOCTYPE cdata_opt)? (STARTHTML cdata_opt)? head
207 :     (body | frameset)
208 :     (ENDHTML cdata_opt)?
209 :     ;
210 :    
211 :     (* ______________________________________________________________________
212 :     HEAD and related elements
213 :     ______________________________________________________________________ *)
214 :    
215 :     head : (STARTHEAD cdata_opt)?
216 :     (head_content cdata_opt)*
217 :     (ENDHEAD cdata_opt)?
218 :     ;
219 :    
220 :     head_content : title | base | script | style | meta | link | object
221 :    
222 :     ;
223 :    
224 :     title : STARTTITLE cdata_opt ENDTITLE
225 :     ;
226 :    
227 :     base : STARTBASE
228 :     ;
229 :    
230 :     script : STARTSCRIPT cdata_opt ENDSCRIPT
231 :     ;
232 :    
233 :     style : STARTSTYLE cdata_opt ENDSTYLE
234 :     ;
235 :    
236 :     meta : STARTMETA
237 :     ;
238 :    
239 :     link : STARTLINK
240 :     ;
241 :    
242 :     object : STARTOBJECT (param | flow)* ENDOBJECT
243 :     ;
244 :    
245 :     param : STARTPARAM
246 :     ;
247 :    
248 :     (* ______________________________________________________________________
249 :     BODY and related elements
250 :     ______________________________________________________________________ *)
251 :    
252 :     body : STARTBODY body_rest
253 :     | (block | ins | del) body_rest
254 :     ;
255 :    
256 :     body_rest : (block | script | ins | del | cdata)* (ENDBODY cdata_opt)?
257 :     ;
258 :    
259 :     flow : block
260 :     | inline
261 :     ;
262 :    
263 :     block : p
264 :     | heading
265 :     | list
266 :     | preformatted
267 :     | dl
268 :     | div
269 :     | noscript
270 :     | blockquote
271 :     | form
272 :     | hr
273 :     | table
274 :     | fieldset
275 :     | address
276 :     | block_loose
277 :     ;
278 :    
279 :     block_loose : center
280 :     | isindex
281 :     ;
282 :    
283 :     heading : h1
284 :     | h2
285 :     | h3
286 :     | h4
287 :     | h5
288 :     | h6
289 :     ;
290 :    
291 :     list : ul
292 :     | ol
293 :     | list_loose
294 :     ;
295 :    
296 :     list_loose : dir
297 :     | menu
298 :     ;
299 :    
300 :     preformatted : pre
301 :     ;
302 :    
303 :     inline : fontstyle
304 :     | phrase
305 :     | special
306 :     | formctrl
307 :     | cdata
308 :     ;
309 :    
310 :     fontstyle : tt
311 :     | i
312 :     | b
313 :     | big
314 :     | small
315 :     | fontstyle_loose
316 :     ;
317 :    
318 :     fontstyle_loose : u
319 :     | s
320 :     | strike
321 :     ;
322 :    
323 :     phrase : em
324 :     | strong
325 :     | dfn
326 :     | code
327 :     | samp
328 :     | kbd
329 :     | var
330 :     | cite
331 :     | abbr
332 :     | acronym
333 :     ;
334 :    
335 :     special : a
336 :     | img
337 :     | object
338 :     | br
339 :     | script
340 :     | map
341 :     | q
342 :     | sub
343 :     | sup
344 :     | span
345 :     | bdo
346 :     | special_loose
347 :     ;
348 :    
349 :     special_loose : applet
350 :     | basefont
351 :     | font
352 :     | iframe
353 :     ;
354 :    
355 :     formctrl : input
356 :     | select
357 :     | textarea
358 :     | label
359 :     | button
360 :     ;
361 :    
362 :     (* Actual elements *)
363 :    
364 :     a : STARTA inline* ENDA ;
365 :    
366 :     abbr : STARTABBR inline* ENDABBR ;
367 :    
368 :     acronym : STARTACRONYM inline* ENDACRONYM ;
369 :    
370 :     address : STARTADDRESS inline* ENDADDRESS ;
371 :    
372 :     applet : STARTAPPLET (param | flow)* ENDAPPLET ;
373 :    
374 :     area : STARTAREA ;
375 :    
376 :     b : STARTB inline* ENDB ;
377 :    
378 :     basefont : STARTBASEFONT ;
379 :    
380 :     bdo : STARTBDO inline* ENDBDO ;
381 :    
382 :     big : STARTBIG inline* ENDBIG ;
383 :    
384 :     blockquote : STARTBLOCKQUOTE (block | script | cdata)+ ENDBLOCKQUOTE ;
385 :    
386 :     br : STARTBR ;
387 :    
388 :     button : STARTBUTTON flow* ENDBUTTON ;
389 :    
390 :     caption : STARTCAPTION inline* ENDCAPTION ;
391 :    
392 :     center : STARTCENTER flow* ENDCENTER ;
393 :    
394 :     cite : STARTCITE inline* ENDCITE ;
395 :    
396 :     code : STARTCODE inline* ENDCODE ;
397 :    
398 :     col : STARTCOL ;
399 :    
400 :     colgroup : STARTCOLGROUP cdata_opt (col cdata_opt)* ENDCOLGROUP? ;
401 :    
402 :     dd : STARTDD flow* ENDDD? ;
403 :    
404 :     del : STARTDEL flow* ENDDEL ;
405 :    
406 :     dfn : STARTDFN inline* ENDDFN ;
407 :    
408 :     dir : STARTDIR cdata_opt li+ ENDDIR ;
409 :    
410 :     div : STARTDIV flow* ENDDIV ;
411 :    
412 :     dl : STARTDL cdata_opt (dt | dd)+ ENDDL ;
413 :    
414 :     dt : STARTDT inline* ENDDT? ;
415 :    
416 :     em : STARTEM inline* ENDEM ;
417 :    
418 :     fieldset : STARTFIELDSET cdata_opt legend flow* ENDFIELDSET ;
419 :    
420 :     font : STARTFONT inline* ENDFONT ;
421 :    
422 :     form : STARTFORM (cdata | block | script)+ ENDFORM ;
423 :    
424 :     frame : STARTFRAME ;
425 :    
426 :     frameset : STARTFRAMESET (frameset | frame | noframes | cdata)+ ENDFRAMESET ;
427 :    
428 :     h1 : STARTH1 inline* ENDH1 ;
429 :    
430 :     h2 : STARTH2 inline* ENDH2 ;
431 :    
432 :     h3 : STARTH3 inline* ENDH3 ;
433 :    
434 :     h4 : STARTH4 inline* ENDH4 ;
435 :    
436 :     h5 : STARTH5 inline* ENDH5 ;
437 :    
438 :     h6 : STARTH6 inline* ENDH6 ;
439 :    
440 :     hr : STARTHR ;
441 :    
442 :     i : STARTI inline* ENDI ;
443 :    
444 :     iframe : STARTIFRAME flow* ENDIFRAME ;
445 :    
446 :     img : STARTIMG ;
447 :    
448 :     input : STARTINPUT ;
449 :    
450 :     ins : STARTINS flow* ENDINS ;
451 :    
452 :     isindex : STARTISINDEX ;
453 :    
454 :     kbd : STARTKBD inline* ENDKBD ;
455 :    
456 :     label : STARTLABEL inline* ENDLABEL ;
457 :    
458 :     legend : STARTLEGEND inline* ENDLEGEND ;
459 :    
460 :     li : STARTLI flow* ENDLI? ;
461 :    
462 :     map : STARTMAP (cdata | block | area)+ ENDMAP ;
463 :    
464 :     menu : STARTMENU cdata_opt li+ ENDMENU ;
465 :    
466 :     noframes : STARTNOFRAMES body ENDNOFRAMES ;
467 :    
468 :     noscript : STARTNOSCRIPT (cdata | block)+ ENDNOSCRIPT ;
469 :    
470 :     ol : STARTOL cdata_opt li+ ENDOL ;
471 :    
472 :     optgroup : STARTOPTGROUP cdata_opt option+ ENDOPTGROUP ;
473 :    
474 :     option : STARTOPTION cdata_opt ENDOPTION? ;
475 :    
476 :     p : STARTP inline* ENDP ;
477 :    
478 :     pre : STARTPRE inline* ENDPRE ;
479 :    
480 :     q : STARTQ inline* ENDQ ;
481 :    
482 :     s : STARTS inline* ENDS ;
483 :    
484 :     samp : STARTSAMP inline* ENDSAMP ;
485 :    
486 :     select : STARTSELECT cdata_opt (optgroup cdata_opt | option)+ ENDSELECT ;
487 :    
488 :     small : STARTSMALL inline* ENDSMALL ;
489 :    
490 :     span : STARTSPAN inline* ENDSPAN ;
491 :    
492 :     strike : STARTSTRIKE inline* ENDSTRIKE ;
493 :    
494 :     strong : STARTSTRONG inline* ENDSTRONG ;
495 :    
496 :     sub : STARTSUB inline* ENDSUB ;
497 :    
498 :     sup : STARTSUP inline* ENDSUP ;
499 :    
500 :     (* My reading of the HTML DTD indicates the following order of
501 :     elements is enforceable: *)
502 :    
503 :     table : STARTTABLE cdata_opt (caption cdata_opt)? col_or_colgroups
504 :     table_content ENDTABLE
505 :     ;
506 :    
507 :     (* The whole tr+ thing makes the original table production ambiguous:
508 :     STARTTABLE ... thead? tfoot? tbody+ ENDTABLE *)
509 :    
510 :     table_content
511 :     : thead tfoot? tbodies
512 :     | tfoot tbodies
513 :     | tbodies_nostart
514 :     ;
515 :    
516 :     col_or_colgroups : (* empty *)
517 :     | (col cdata_opt)+
518 :     | colgroup+
519 :     ;
520 :    
521 :     (*
522 :     tbody : (STARTTBODY cdata_opt)? tr+ ENDTBODY? ;
523 :     *)
524 :    
525 :     tbodies_nostart : (STARTTBODY cdata_opt)? tr+ tbodies_rest?
526 :     ;
527 :    
528 :     tbodies : STARTTBODY cdata_opt tr+ tbodies_rest
529 :     ;
530 :    
531 :     tbodies_rest : ENDTBODY cdata_opt tbodies?
532 :     | STARTBODY cdata_opt tr+ tbodies_rest?
533 :     ;
534 :    
535 :     td : STARTTD flow* (ENDTD cdata_opt)? ;
536 :    
537 :     textarea : STARTTEXTAREA cdata_opt ENDTEXTAREA ;
538 :    
539 :     tfoot : STARTTFOOT cdata_opt tr+ (ENDTFOOT cdata_opt)? ;
540 :    
541 :     th : STARTTH flow* (ENDTH cdata_opt)? ;
542 :    
543 :     thead : STARTTHEAD cdata_opt tr+ (ENDTHEAD cdata_opt)? ;
544 :    
545 :     tr : STARTTR cdata_opt (th | td)+ (ENDTR cdata_opt)? ;
546 :    
547 :     tt : STARTTT inline* ENDTT ;
548 :    
549 :     u : STARTU inline* ENDU ;
550 :    
551 :     ul : STARTUL cdata_opt li+ ENDUL ;
552 :    
553 :     var : STARTVAR inline* ENDVAR ;
554 :    
555 :     (* ______________________________________________________________________
556 :     Miscellaneous data nonterminals
557 :     ______________________________________________________________________ *)
558 :    
559 :     cdata : (PCDATA | CHAR_REF | ENTITY_REF | COMMENT)
560 :     ;
561 :    
562 :     cdata_opt : cdata*
563 :     ;
564 :    
565 :     (* ______________________________________________________________________
566 :     End of html4.g
567 :     ______________________________________________________________________ *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0