blob: 0869996e5e6eac95902b28e2afae52d5735e0b2d [file] [log] [blame]
/* It's an automatically generated code. Do not modify it. */
package com.intellij.lexer;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.*;
import com.intellij.psi.xml.*;
%%
%{
private boolean isHighlightModeOn = false;
public _DtdLexer(boolean highlightModeOn) {
this((java.io.Reader)null);
isHighlightModeOn = highlightModeOn;
}
%}
%unicode
%class _DtdLexer
%public
%implements FlexLexer
%function advance
%type IElementType
%eof{ return;
%eof}
%state DECL
%state DECL_ATTR
%state DECL_ATTR_VALUE_DQ
%state DECL_ATTR_VALUE_SQ
%state TAG_NAME
%state TAG_ATTRIBUTES
%state COMMENT
%state ATTRIBUTE_VALUE_START
%state ATTRIBUTE_VALUE_DQ
%state ATTRIBUTE_VALUE_SQ
%state PROCESSING_INSTRUCTION
%state DOCTYPE_MARKUP_STARTED
%state DOCTYPE
%state DOCTYPE_EXTERNAL_ID
%state DOCTYPE_MARKUP
%state DOCTYPE_MARKUP_DQ
%state DOCTYPE_MARKUP_SQ
%state CDATA
%state CONDITIONAL
%state DOCTYPE_COMMENT
ALPHA=[:letter:]
DIGIT=[0-9]
WS=[\ \n\r\t\f]
S={WS}+
TAG_NAME=({ALPHA}|"_"|":")({ALPHA}|{DIGIT}|"_"|":"|"."|"-")*
NAME=({ALPHA}|"_"|":")({ALPHA}|{DIGIT}|"_"|":"|"."|"-")*
NMTOKEN=({ALPHA}|{DIGIT}|"_"|":"|"."|"-")+
%%
"<![CDATA[" {yybegin(CDATA); return XmlTokenType.XML_CDATA_START; }
<CDATA> "]]>" {yybegin(YYINITIAL); return XmlTokenType.XML_CDATA_END; }
<CDATA> [^] {return XmlTokenType.XML_DATA_CHARACTERS; }
<CDATA> "<!--" { return XmlTokenType.XML_DATA_CHARACTERS; }
"<![" {yybegin(CONDITIONAL); return XmlTokenType.XML_CONDITIONAL_SECTION_START; }
<CONDITIONAL> "INCLUDE" { return XmlTokenType.XML_CONDITIONAL_INCLUDE; }
<CONDITIONAL> "IGNORE" { return XmlTokenType.XML_CONDITIONAL_IGNORE; }
"]]>" { yybegin(YYINITIAL); return XmlTokenType.XML_CONDITIONAL_SECTION_END; }
"&"{NAME}";" { return XmlTokenType.XML_ENTITY_REF_TOKEN; }
"%"{NAME}";" { return XmlTokenType.XML_ENTITY_REF_TOKEN; }
"&#"{DIGIT}+";" { return XmlTokenType.XML_CHAR_ENTITY_REF; }
"&#x"({DIGIT}|[a-fA-F])+";" { return XmlTokenType.XML_CHAR_ENTITY_REF; }
<YYINITIAL> "<?xml " { yybegin(DECL); return XmlTokenType.XML_DECL_START; }
<DECL> {NAME} { yybegin(DECL_ATTR); return XmlTokenType.XML_NAME; }
<DECL_ATTR> "=" { return XmlTokenType.XML_EQ;}
<DECL_ATTR> "'" { yybegin(DECL_ATTR_VALUE_SQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER;}
<DECL_ATTR> "\"" { yybegin(DECL_ATTR_VALUE_DQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER;}
<DECL_ATTR_VALUE_DQ> [^\"]* { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN;}
<DECL_ATTR_VALUE_SQ> [^']* { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN;}
<DECL_ATTR_VALUE_DQ> "\"" { yybegin(DECL); return XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER;}
<DECL_ATTR_VALUE_SQ> "'" { yybegin(DECL); return XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER;}
<DECL> "?>" { yybegin(YYINITIAL); return XmlTokenType.XML_DECL_END;}
<DECL> ">" { yybegin(YYINITIAL); return XmlTokenType.XML_BAD_CHARACTER;}
<YYINITIAL> "<!DOCTYPE" { yybegin(DOCTYPE); return XmlTokenType.XML_DOCTYPE_START; }
<DOCTYPE> "SYSTEM" { yybegin(DOCTYPE_EXTERNAL_ID); return XmlTokenType.XML_DOCTYPE_SYSTEM; }
<DOCTYPE> "PUBLIC" { yybegin(DOCTYPE_EXTERNAL_ID); return XmlTokenType.XML_DOCTYPE_PUBLIC; }
<DOCTYPE> {NAME} { return XmlTokenType.XML_NAME; }
<DOCTYPE_EXTERNAL_ID> "\""[^\"]*"\"" { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN;}
<DOCTYPE_EXTERNAL_ID> "'"[^']*"'" { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN;}
<DOCTYPE, DOCTYPE_EXTERNAL_ID,CONDITIONAL> "[" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_MARKUP_START;}
<DOCTYPE_MARKUP, YYINITIAL> "<!ELEMENT" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_ELEMENT_DECL_START;}
<DOCTYPE_MARKUP, YYINITIAL> "<!NOTATION" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_NOTATION_DECL_START;}
<DOCTYPE_MARKUP, YYINITIAL> "<!ATTLIST" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_ATTLIST_DECL_START;}
<DOCTYPE_MARKUP, YYINITIAL> "<!ENTITY" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_ENTITY_DECL_START;}
<DOCTYPE_MARKUP> "SYSTEM" { return XmlTokenType.XML_DOCTYPE_SYSTEM; }
<DOCTYPE_MARKUP> "PUBLIC" { return XmlTokenType.XML_DOCTYPE_PUBLIC; }
<DOCTYPE_MARKUP> "#PCDATA" { return XmlTokenType.XML_PCDATA;}
<DOCTYPE_MARKUP> "EMPTY" { return XmlTokenType.XML_CONTENT_EMPTY;}
<DOCTYPE_MARKUP> "ANY" { return XmlTokenType.XML_CONTENT_ANY;}
<DOCTYPE_MARKUP> "(" { return XmlTokenType.XML_LEFT_PAREN;}
<DOCTYPE_MARKUP> ")" { return XmlTokenType.XML_RIGHT_PAREN;}
<DOCTYPE_MARKUP> "?" { return XmlTokenType.XML_QUESTION;}
<DOCTYPE_MARKUP> "+" { return XmlTokenType.XML_PLUS;}
<DOCTYPE_MARKUP> "*" { return XmlTokenType.XML_STAR;}
<DOCTYPE_MARKUP> "%" { return XmlTokenType.XML_PERCENT;}
<DOCTYPE_MARKUP> "--" ([^\-]|(\-[^\-]))* "--" { yybegin(DOCTYPE_MARKUP_STARTED); yypushback(yylength()); }
<DOCTYPE_MARKUP_STARTED> "--" { yybegin(DOCTYPE_COMMENT); return XmlTokenType.XML_COMMENT_START;}
<DOCTYPE_COMMENT> ([^\-]|(\-[^\-]))* { return XmlTokenType.XML_COMMENT_CHARACTERS; }
<DOCTYPE_COMMENT> "--" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_COMMENT_END;}
<DOCTYPE_MARKUP> \| { return XmlTokenType.XML_BAR;}
<DOCTYPE_MARKUP> "," { return XmlTokenType.XML_COMMA;}
<DOCTYPE_MARKUP> "&" { return XmlTokenType.XML_AMP;}
<DOCTYPE_MARKUP> ";" { return XmlTokenType.XML_SEMI;}
<DOCTYPE_MARKUP> "#IMPLIED" { return XmlTokenType.XML_ATT_IMPLIED;}
<DOCTYPE_MARKUP> "#REQUIRED" { return XmlTokenType.XML_ATT_REQUIRED;}
<DOCTYPE_MARKUP> "#FIXED" { return XmlTokenType.XML_ATT_FIXED;}
<DOCTYPE_MARKUP> {NMTOKEN} { return XmlTokenType.XML_NAME;}
<DOCTYPE_MARKUP> ">" { return XmlTokenType.XML_TAG_END;}
<DOCTYPE_MARKUP> "]" { yybegin(DOCTYPE); return XmlTokenType.XML_MARKUP_END;}
<DOCTYPE_MARKUP> "\"" { yybegin(DOCTYPE_MARKUP_DQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; }
<DOCTYPE_MARKUP> "'" { yybegin(DOCTYPE_MARKUP_SQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; }
<DOCTYPE_MARKUP_DQ> "\"" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; }
<DOCTYPE_MARKUP_SQ> "'" { yybegin(DOCTYPE_MARKUP); return XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; }
<DOCTYPE_MARKUP_DQ> [^\"]+ { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; }
<DOCTYPE_MARKUP_SQ> [^']+ { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; }
<DOCTYPE,DOCTYPE_EXTERNAL_ID> ">" { yybegin(YYINITIAL); return XmlTokenType.XML_DOCTYPE_END; }
<YYINITIAL> "<?" { yybegin(PROCESSING_INSTRUCTION); return XmlTokenType.XML_PI_START; }
<PROCESSING_INSTRUCTION> "?>" { yybegin(YYINITIAL); return XmlTokenType.XML_PI_END; }
<PROCESSING_INSTRUCTION> [^] { return XmlTokenType.XML_PI_TARGET; }
<YYINITIAL,TAG_NAME,TAG_ATTRIBUTES,ATTRIBUTE_VALUE_START,ATTRIBUTE_VALUE_DQ,ATTRIBUTE_VALUE_SQ>"<" { yybegin(TAG_NAME); return XmlTokenType.XML_START_TAG_START; }
<YYINITIAL,TAG_NAME,TAG_ATTRIBUTES,ATTRIBUTE_VALUE_START,ATTRIBUTE_VALUE_DQ,ATTRIBUTE_VALUE_SQ>"</" { yybegin(TAG_NAME); return XmlTokenType.XML_END_TAG_START; }
<TAG_NAME> {TAG_NAME} { yybegin(TAG_ATTRIBUTES); return isHighlightModeOn ? XmlTokenType.XML_TAG_NAME:XmlTokenType.XML_NAME; }
<TAG_ATTRIBUTES> ">" { yybegin(YYINITIAL); return XmlTokenType.XML_TAG_END; }
<TAG_ATTRIBUTES> "/>" { yybegin(YYINITIAL); return XmlTokenType.XML_EMPTY_ELEMENT_END; }
<TAG_ATTRIBUTES> {NAME} { return XmlTokenType.XML_NAME; }
<TAG_ATTRIBUTES> "=" { yybegin(ATTRIBUTE_VALUE_START); return XmlTokenType.XML_EQ; }
<ATTRIBUTE_VALUE_START> ">" { yybegin(YYINITIAL); return XmlTokenType.XML_TAG_END; }
<ATTRIBUTE_VALUE_START> "/>" { yybegin(YYINITIAL); return XmlTokenType.XML_EMPTY_ELEMENT_END; }
<ATTRIBUTE_VALUE_START> "\"" { yybegin(ATTRIBUTE_VALUE_DQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; }
<ATTRIBUTE_VALUE_START> "'" { yybegin(ATTRIBUTE_VALUE_SQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER; }
<ATTRIBUTE_VALUE_DQ> "\"" { yybegin(TAG_ATTRIBUTES); return XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; }
<ATTRIBUTE_VALUE_SQ> "'" { yybegin(TAG_ATTRIBUTES); return XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER; }
<ATTRIBUTE_VALUE_DQ> [^\"] { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; }
<ATTRIBUTE_VALUE_SQ> [^'] { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN; }
"<!--" { yybegin(COMMENT); return XmlTokenType.XML_COMMENT_START; }
<COMMENT> "-->" { yybegin(YYINITIAL); return XmlTokenType.XML_COMMENT_END; }
<COMMENT> ([^\-]|(-[^\-]))* { return XmlTokenType.XML_COMMENT_CHARACTERS; }
<YYINITIAL,DECL,DECL_ATTR,TAG_NAME,TAG_ATTRIBUTES,COMMENT,ATTRIBUTE_VALUE_START,
DOCTYPE,DOCTYPE_EXTERNAL_ID,DOCTYPE_MARKUP,CONDITIONAL>{S} { return XmlTokenType.XML_WHITE_SPACE; }
<YYINITIAL> [^<&] { return XmlTokenType.XML_DATA_CHARACTERS; }
[^] { return XmlTokenType.XML_BAD_CHARACTER; }