1 parent
b695ecf0df
commit
ac775918ee
4 files changed
+76
-4
No files matched your search
+33
-4
@@ -376,6 +376,34 @@ module Oga
|
||||
any;
|
||||
*|;
|
||||
|
||||
# XML declaration tags
|
||||
#
|
||||
# http://www.w3.org/TR/REC-xml/#sec-prolog-dtd
|
||||
#
|
||||
xml_decl_start = '<?xml';
|
||||
xml_decl_end = '?>';
|
||||
|
||||
action start_xml_decl {
|
||||
emit_buffer
|
||||
add_token(:T_XML_DECL_START, nil)
|
||||
|
||||
start_buffer
|
||||
|
||||
fcall xml_decl;
|
||||
}
|
||||
|
||||
# Machine that processes the contents of an XML declaration tag.
|
||||
xml_decl := |*
|
||||
xml_decl_end => {
|
||||
emit_buffer
|
||||
add_token(:T_XML_DECL_END, nil)
|
||||
|
||||
fret;
|
||||
};
|
||||
|
||||
any;
|
||||
*|;
|
||||
|
||||
# Elements
|
||||
#
|
||||
# http://www.w3.org/TR/html-markup/syntax.html#syntax-elements
|
||||
@@ -433,10 +461,11 @@ module Oga
|
||||
*|;
|
||||
|
||||
main := |*
|
||||
element_start => start_element;
|
||||
doctype_start => start_doctype;
|
||||
cdata_start => start_cdata;
|
||||
comment_start => start_comment;
|
||||
element_start => start_element;
|
||||
doctype_start => start_doctype;
|
||||
cdata_start => start_cdata;
|
||||
comment_start => start_comment;
|
||||
xml_decl_start => start_xml_decl;
|
||||
|
||||
# Enter the body of the tag. If HTML mode is enabled and the current
|
||||
# element is a void element we'll close it and bail out.
|
||||
|
||||
@@ -14,6 +14,7 @@ token T_DOCTYPE_START T_DOCTYPE_END T_DOCTYPE_TYPE
|
||||
token T_CDATA_START T_CDATA_END
|
||||
token T_COMMENT_START T_COMMENT_END
|
||||
token T_ELEM_START T_ELEM_NAME T_ELEM_NS T_ELEM_END T_ATTR
|
||||
token T_XML_DECL_START T_XML_DECL_END
|
||||
|
||||
options no_result_var
|
||||
|
||||
@@ -35,6 +36,7 @@ rule
|
||||
| comment
|
||||
| element
|
||||
| text
|
||||
| xmldecl
|
||||
;
|
||||
|
||||
# Doctypes
|
||||
@@ -119,6 +121,11 @@ rule
|
||||
| T_ATTR T_STRING { s(:attribute, val[0], val[1]) }
|
||||
;
|
||||
|
||||
# XML declarations
|
||||
xmldecl
|
||||
: T_XML_DECL_START T_XML_DECL_END { s(:xml_decl) }
|
||||
| T_XML_DECL_START text T_XML_DECL_END { s(:xml_decl, val[1]) }
|
||||
|
||||
# Plain text
|
||||
|
||||
text
|
||||
|
||||
Reference in new issue
Block a user