Mercurial > urweb
comparison src/lacweb.grm @ 92:1a4c51fa615c
XML tags with contents
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 03 Jul 2008 17:02:42 -0400 |
parents | 4327abd52997 |
children | 94afff1ff7f6 |
comparison
equal
deleted
inserted
replaced
91:4327abd52997 | 92:1a4c51fa615c |
---|---|
296 | xmlOne (xmlOne) | 296 | xmlOne (xmlOne) |
297 | 297 |
298 xmlOne : NOTAGS (EApp ((EVar (["Basis"], "cdata"), s (NOTAGSleft, NOTAGSright)), | 298 xmlOne : NOTAGS (EApp ((EVar (["Basis"], "cdata"), s (NOTAGSleft, NOTAGSright)), |
299 (EPrim (Prim.String NOTAGS), s (NOTAGSleft, NOTAGSright))), | 299 (EPrim (Prim.String NOTAGS), s (NOTAGSleft, NOTAGSright))), |
300 s (NOTAGSleft, NOTAGSright)) | 300 s (NOTAGSleft, NOTAGSright)) |
301 | BEGIN_TAG DIVIDE GT (EApp ((EApp ((EVar (["Basis"], "tag"), s (BEGIN_TAGleft, GTright)), | 301 | BEGIN_TAG DIVIDE GT (let |
302 (EVar ([], BEGIN_TAG), s (BEGIN_TAGleft, GTright))), | 302 val pos = s (BEGIN_TAGleft, GTright) |
303 s (BEGIN_TAGleft, GTright)), | 303 in |
304 (EApp ((EVar (["Basis"], "cdata"), s (BEGIN_TAGleft, GTright)), | 304 (EApp ((EApp ((EVar (["Basis"], "tag"), pos), |
305 (EPrim (Prim.String ""), s (BEGIN_TAGleft, GTright))), | 305 (EVar ([], BEGIN_TAG), pos)), |
306 s (BEGIN_TAGleft, GTright))), s (BEGIN_TAGleft, GTright)) | 306 pos), |
307 (EApp ((EVar (["Basis"], "cdata"), pos), | |
308 (EPrim (Prim.String ""), pos)), | |
309 pos)), pos) | |
310 end) | |
311 | |
312 | BEGIN_TAG GT xml END_TAG (let | |
313 val pos = s (BEGIN_TAGleft, GTright) | |
314 in | |
315 if BEGIN_TAG = END_TAG then | |
316 (EApp ((EApp ((EVar (["Basis"], "tag"), pos), | |
317 (EVar ([], BEGIN_TAG), pos)), | |
318 pos), | |
319 xml), pos) | |
320 else | |
321 (ErrorMsg.errorAt pos "Begin and end tags don't match."; | |
322 (EFold, pos)) | |
323 end) | |
324 |