111 lines
2.3 KiB
Factor
111 lines
2.3 KiB
Factor
! Copyright (C) 2005, 2006 Daniel Ehrenberg
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: accessors classes classes.tuple classes.tuple.parser
|
|
classes.tuple.private combinators generalizations kernel math
|
|
namespaces parser sequences vocabs.loader words xml.state ;
|
|
IN: xml.errors
|
|
|
|
<<
|
|
|
|
PREDICATE: generated-xml-error < tuple class-of "xml-error-class" word-prop ;
|
|
|
|
: define-xml-error-class ( class superclass slots -- )
|
|
{ "line" "column" } prepend error-slots {
|
|
[ define-tuple-class ]
|
|
[ 2drop reset-generic ]
|
|
[ 2drop t "error-class" set-word-prop ]
|
|
[ 2drop t "xml-error-class" set-word-prop ]
|
|
[
|
|
[
|
|
length 1 - nip dupd
|
|
[ [ get-line get-column ] swap ndip boa throw ]
|
|
2curry
|
|
]
|
|
[ 2drop all-slots 2 head* thrower-effect ] 3bi define-declared
|
|
]
|
|
} 3cleave ;
|
|
|
|
SYNTAX: XML-ERROR:
|
|
parse-tuple-definition pick save-location
|
|
define-xml-error-class ;
|
|
|
|
>>
|
|
|
|
XML-ERROR: expected should-be was ;
|
|
|
|
XML-ERROR: unexpected-end ;
|
|
|
|
XML-ERROR: missing-close ;
|
|
|
|
XML-ERROR: disallowed-char char ;
|
|
|
|
ERROR: multitags ;
|
|
|
|
ERROR: pre/post-content string pre? ;
|
|
|
|
XML-ERROR: no-entity thing ;
|
|
|
|
XML-ERROR: mismatched open close ;
|
|
|
|
TUPLE: unclosed line column tags ;
|
|
|
|
: throw-unclosed ( -- * )
|
|
get-line get-column
|
|
xml-stack get rest-slice [ first name>> ] map
|
|
unclosed boa throw ;
|
|
|
|
XML-ERROR: bad-uri string ;
|
|
|
|
XML-ERROR: nonexist-ns name ;
|
|
|
|
! this should give which tag was unopened
|
|
XML-ERROR: unopened ;
|
|
|
|
XML-ERROR: not-yes/no text ;
|
|
|
|
! this should actually print the names
|
|
XML-ERROR: extra-attrs attrs ;
|
|
|
|
XML-ERROR: bad-version num ;
|
|
|
|
ERROR: notags ;
|
|
|
|
XML-ERROR: bad-prolog prolog ;
|
|
|
|
XML-ERROR: capitalized-prolog name ;
|
|
|
|
XML-ERROR: versionless-prolog ;
|
|
|
|
XML-ERROR: bad-directive dir ;
|
|
|
|
XML-ERROR: bad-decl ;
|
|
|
|
XML-ERROR: bad-external-id ;
|
|
|
|
XML-ERROR: misplaced-directive dir ;
|
|
|
|
XML-ERROR: bad-name name ;
|
|
|
|
XML-ERROR: unclosed-quote ;
|
|
|
|
XML-ERROR: quoteless-attr ;
|
|
|
|
XML-ERROR: attr-w/< ;
|
|
|
|
XML-ERROR: text-w/]]> ;
|
|
|
|
XML-ERROR: duplicate-attr key values ;
|
|
|
|
XML-ERROR: bad-cdata ;
|
|
|
|
XML-ERROR: not-enough-characters ;
|
|
|
|
XML-ERROR: bad-doctype contents ;
|
|
|
|
XML-ERROR: bad-encoding encoding ;
|
|
|
|
UNION: xml-error
|
|
unclosed multitags notags pre/post-content generated-xml-error ;
|
|
|
|
{ "xml.errors" "debugger" } "xml.errors.debugger" require-when
|