⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xml.g

📁 antlr最新版本V3源代码
💻 G
字号:
/** XML parser by Oliver Zeigermann October 10, 2005 */lexer grammar XML;options {    language = Python;}@header {import sys}DOCUMENT    :  XMLDECL? WS? DOCTYPE? WS? ELEMENT WS?     ;fragment DOCTYPE    :        '<!DOCTYPE' WS rootElementName=GENERIC_ID         {sys.stdout.write("ROOTELEMENT: "+rootElementName.text + "\n")}           WS        (             ( 'SYSTEM' WS sys1=VALUE                {sys.stdout.write("SYSTEM: "+sys1.text + "\n")}                               | 'PUBLIC' WS pub=VALUE WS sys2=VALUE                {sys.stdout.write("PUBLIC: "+pub.text + "\n")}                   {sys.stdout.write("SYSTEM: "+sys2.text + "\n")}               )            ( WS )?        )?        ( dtd=INTERNAL_DTD            {sys.stdout.write("INTERNAL DTD: "+dtd.text + "\n")}           )?		'>'	;fragment INTERNAL_DTD : '[' (options {greedy=false;} : .)* ']' ;fragment PI :        '<?' target=GENERIC_ID WS?           {sys.stdout.write("PI: "+target.text + "\n")}        ( ATTRIBUTE WS? )*  '?>'	;fragment XMLDECL :        '<?' ('x'|'X') ('m'|'M') ('l'|'L') WS?           {sys.stdout.write("XML declaration" + "\n")}        ( ATTRIBUTE WS? )*  '?>'	;fragment ELEMENT    : ( START_TAG            (ELEMENT            | t=PCDATA                {sys.stdout.write("PCDATA: \""+$t.text+"\"" + "\n")}            | t=CDATA                {sys.stdout.write("CDATA: \""+$t.text+"\"" + "\n")}            | t=COMMENT                {sys.stdout.write("Comment: \""+$t.text+"\"" + "\n")}            | pi=PI            )*            END_TAG        | EMPTY_ELEMENT        )    ;fragment START_TAG     : '<' WS? name=GENERIC_ID WS?          {sys.stdout.write("Start Tag: "+name.text + "\n")}        ( ATTRIBUTE WS? )* '>'    ;fragment EMPTY_ELEMENT     : '<' WS? name=GENERIC_ID WS?          {sys.stdout.write("Empty Element: "+name.text + "\n")}        ( ATTRIBUTE WS? )* '/>'    ;fragment ATTRIBUTE     : name=GENERIC_ID WS? '=' WS? value=VALUE        {sys.stdout.write("Attr: "+name.text+"="+value.text + "\n")}    ;fragment END_TAG     : '</' WS? name=GENERIC_ID WS? '>'        {sys.stdout.write("End Tag: "+name.text + "\n")}    ;fragment COMMENT	:	'<!--' (options {greedy=false;} : .)* '-->'	;fragment CDATA	:	'<![CDATA[' (options {greedy=false;} : .)* ']]>'	;fragment PCDATA : (~'<')+ ; fragment VALUE :         ( '\"' (~'\"')* '\"'        | '\'' (~'\'')* '\''        )	;fragment GENERIC_ID     : ( LETTER | '_' | ':')         ( options {greedy=true;} : LETTER | '0'..'9' | '.' | '-' | '_' | ':' )*	;fragment LETTER	: 'a'..'z' 	| 'A'..'Z'	;fragment WS  :        (   ' '        |   '\t'        |  ( '\n'            |	'\r\n'            |	'\r'            )        )+    ;    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -