comparison src/urweb.grm @ 360:c1e96b387115

Syntax highlighting for embedded XML
author Adam Chlipala <adamc@hcoop.net>
date Tue, 14 Oct 2008 16:37:43 -0400
parents 383c72d11db8
children 260b680a6a04
comparison
equal deleted inserted replaced
359:465593c024ca 360:c1e96b387115
191 | FN | PLUSPLUS | MINUSMINUS | DOLLAR | TWIDDLE 191 | FN | PLUSPLUS | MINUSMINUS | DOLLAR | TWIDDLE
192 | STRUCTURE | SIGNATURE | STRUCT | SIG | END | FUNCTOR | WHERE | EXTERN | WITH | SQL 192 | STRUCTURE | SIGNATURE | STRUCT | SIG | END | FUNCTOR | WHERE | EXTERN | WITH | SQL
193 | INCLUDE | OPEN | CONSTRAINT | CONSTRAINTS | EXPORT | TABLE | SEQUENCE 193 | INCLUDE | OPEN | CONSTRAINT | CONSTRAINTS | EXPORT | TABLE | SEQUENCE
194 | CASE | IF | THEN | ELSE 194 | CASE | IF | THEN | ELSE
195 195
196 | XML_BEGIN of string | XML_END 196 | XML_BEGIN of string | XML_END | XML_BEGIN_END of string
197 | NOTAGS of string 197 | NOTAGS of string
198 | BEGIN_TAG of string | END_TAG of string 198 | BEGIN_TAG of string | END_TAG of string
199 199
200 | SELECT | FROM | AS | CWHERE | GROUP | ORDER | BY | HAVING 200 | SELECT | FROM | AS | CWHERE | GROUP | ORDER | BY | HAVING
201 | UNION | INTERSECT | EXCEPT 201 | UNION | INTERSECT | EXCEPT
799 (EField (e, ident), loc)) 799 (EField (e, ident), loc))
800 (EVar path, s (pathleft, pathright)) idents 800 (EVar path, s (pathleft, pathright)) idents
801 end) 801 end)
802 | FOLD (EFold, s (FOLDleft, FOLDright)) 802 | FOLD (EFold, s (FOLDleft, FOLDright))
803 803
804 | XML_BEGIN xml XML_END (xml) 804 | XML_BEGIN xml XML_END (let
805 | XML_BEGIN XML_END (EApp ((EVar (["Basis"], "cdata"), s (XML_BEGINleft, XML_ENDright)), 805 val loc = s (XML_BEGINleft, XML_ENDright)
806 (EPrim (Prim.String ""), s (XML_BEGINleft, XML_ENDright))), 806 in
807 s (XML_BEGINleft, XML_ENDright)) 807 if XML_BEGIN = "xml" then
808 ()
809 else
810 ErrorMsg.errorAt loc "Initial XML tag pair aren't both tagged \"xml\".";
811 xml
812 end)
813 | XML_BEGIN XML_END (let
814 val loc = s (XML_BEGINleft, XML_ENDright)
815 in
816 if XML_BEGIN = "xml" then
817 ()
818 else
819 ErrorMsg.errorAt loc "Initial XML tag pair aren't both tagged \"xml\".";
820 (EApp ((EVar (["Basis"], "cdata"), loc),
821 (EPrim (Prim.String ""), loc)),
822 loc)
823 end)
824 | XML_BEGIN_END (let
825 val loc = s (XML_BEGIN_ENDleft, XML_BEGIN_ENDright)
826 in
827 if XML_BEGIN_END = "xml" then
828 ()
829 else
830 ErrorMsg.errorAt loc "Initial XML tag pair aren't both tagged \"xml\".";
831 (EApp ((EVar (["Basis"], "cdata"), loc),
832 (EPrim (Prim.String ""), loc)),
833 loc)
834 end)
808 835
809 | LPAREN query RPAREN (query) 836 | LPAREN query RPAREN (query)
810 | LPAREN CWHERE sqlexp RPAREN (sqlexp) 837 | LPAREN CWHERE sqlexp RPAREN (sqlexp)
811 | LPAREN SQL sqlexp RPAREN (sqlexp) 838 | LPAREN SQL sqlexp RPAREN (sqlexp)
812 839