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

📄 htmltokenmaker.flex

📁 具有不同语法高亮的编辑器实例
💻 FLEX
📖 第 1 页 / 共 2 页
字号:
JS_FloatHelper2			= ([eE][+-]?{Digit}+{JS_FloatHelper1})
JS_FloatLiteral1			= ({Digit}+"."({JS_FloatHelper1}|{JS_FloatHelper2}|{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2})))
JS_FloatLiteral2			= ("."{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2}))
JS_FloatLiteral3			= ({Digit}+{JS_FloatHelper2})
JS_FloatLiteral			= ({JS_FloatLiteral1}|{JS_FloatLiteral2}|{JS_FloatLiteral3}|({Digit}+[fFdD]))
JS_ErrorNumberFormat		= (({JS_IntegerLiteral}|{JS_HexLiteral}|{JS_FloatLiteral}){NonSeparator}+)
JS_Separator				= ([\(\)\{\}\[\]\]])
JS_Separator2				= ([\;,.])
JS_NonAssignmentOperator		= ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"&&"|">>>")
JS_AssignmentOperator		= ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=")
JS_Operator				= ({JS_NonAssignmentOperator}|{JS_AssignmentOperator})
JS_Identifier				= ({IdentifierStart}{IdentifierPart}*)
JS_ErrorIdentifier			= ({NonSeparator}+)


%state COMMENT
%state PI
%state DTD
%state INTAG
%state INTAG_SCRIPT
%state JAVASCRIPT
%state JS_MLC


%%

<YYINITIAL> {
	"<!--"					{ start = zzMarkedPos-4; yybegin(COMMENT); }
	"<script"					{
							  addToken(zzStartRead,zzStartRead, Token.SEPARATOR);
							  addToken(zzMarkedPos-6,zzMarkedPos-1, Token.RESERVED_WORD);
							  start = zzMarkedPos; yybegin(INTAG_SCRIPT);
							}
	"<!"						{ start = zzMarkedPos-2; yybegin(DTD); }
	"<?"						{ start = zzMarkedPos-2; yybegin(PI); }
	"<"						{ addToken(Token.SEPARATOR); yybegin(INTAG); }
	{LineTerminator}			{ addNullToken(); return firstToken; }
	{Identifier}				{ addToken(Token.IDENTIFIER); } // Catches everything.
	{AmperItem}				{ addToken(Token.DATA_TYPE); }
	{Whitespace}+				{ addToken(Token.WHITESPACE); }
	<<EOF>>					{ addNullToken(); return firstToken; }
}

<COMMENT> {
	[^\n\-]+					{}
	{LineTerminator}			{ addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; }
	"-->"					{ yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.COMMENT_MULTILINE); }
	"-"						{}
	<<EOF>>					{ addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; }
}

<PI> {
	[^\n\?]+					{}
	{LineTerminator}			{ addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken; }
	"?>"						{ yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.PREPROCESSOR); }
	"?"						{}
	<<EOF>>					{ addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken; }
}

<DTD> {
	[^\n>]+					{}
	{LineTerminator}			{ addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken; }
	">"						{ yybegin(YYINITIAL); addToken(start,zzStartRead, Token.VARIABLE); }
	<<EOF>>					{ addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken; }
}

<INTAG> {
	"a"						{ addToken(Token.RESERVED_WORD); }
	"abbr"					{ addToken(Token.RESERVED_WORD); }
	"acronym"					{ addToken(Token.RESERVED_WORD); }
	"address"					{ addToken(Token.RESERVED_WORD); }
	"applet"					{ addToken(Token.RESERVED_WORD); }
	"area"					{ addToken(Token.RESERVED_WORD); }
	"b"						{ addToken(Token.RESERVED_WORD); }
	"base"					{ addToken(Token.RESERVED_WORD); }
	"basefont"				{ addToken(Token.RESERVED_WORD); }
	"bdo"					{ addToken(Token.RESERVED_WORD); }
	"bgsound"					{ addToken(Token.RESERVED_WORD); }
	"big"					{ addToken(Token.RESERVED_WORD); }
	"blink"					{ addToken(Token.RESERVED_WORD); }
	"blockquote"				{ addToken(Token.RESERVED_WORD); }
	"body"					{ addToken(Token.RESERVED_WORD); }
	"br"						{ addToken(Token.RESERVED_WORD); }
	"button"					{ addToken(Token.RESERVED_WORD); }
	"caption"					{ addToken(Token.RESERVED_WORD); }
	"center"					{ addToken(Token.RESERVED_WORD); }
	"cite"					{ addToken(Token.RESERVED_WORD); }
	"code"					{ addToken(Token.RESERVED_WORD); }
	"col"					{ addToken(Token.RESERVED_WORD); }
	"colgroup"				{ addToken(Token.RESERVED_WORD); }
	"comment"					{ addToken(Token.RESERVED_WORD); }
	"dd"						{ addToken(Token.RESERVED_WORD); }
	"del"					{ addToken(Token.RESERVED_WORD); }
	"dfn"					{ addToken(Token.RESERVED_WORD); }
	"dir"					{ addToken(Token.RESERVED_WORD); }
	"div"					{ addToken(Token.RESERVED_WORD); }
	"dl"						{ addToken(Token.RESERVED_WORD); }
	"dt"						{ addToken(Token.RESERVED_WORD); }
	"em"						{ addToken(Token.RESERVED_WORD); }
	"embed"					{ addToken(Token.RESERVED_WORD); }
	"fieldset"				{ addToken(Token.RESERVED_WORD); }
	"font"					{ addToken(Token.RESERVED_WORD); }
	"form"					{ addToken(Token.RESERVED_WORD); }
	"frame"					{ addToken(Token.RESERVED_WORD); }
	"frameset"				{ addToken(Token.RESERVED_WORD); }
	"h1"						{ addToken(Token.RESERVED_WORD); }
	"h2"						{ addToken(Token.RESERVED_WORD); }
	"h3"						{ addToken(Token.RESERVED_WORD); }
	"h4"						{ addToken(Token.RESERVED_WORD); }
	"h5"						{ addToken(Token.RESERVED_WORD); }
	"h6"						{ addToken(Token.RESERVED_WORD); }
	"head"					{ addToken(Token.RESERVED_WORD); }
	"hr"						{ addToken(Token.RESERVED_WORD); }
	"html"					{ addToken(Token.RESERVED_WORD); }
	"i"						{ addToken(Token.RESERVED_WORD); }
	"iframe"					{ addToken(Token.RESERVED_WORD); }
	"ilayer"					{ addToken(Token.RESERVED_WORD); }
	"img"					{ addToken(Token.RESERVED_WORD); }
	"input"					{ addToken(Token.RESERVED_WORD); }
	"ins"					{ addToken(Token.RESERVED_WORD); }
	"isindex"					{ addToken(Token.RESERVED_WORD); }
	"kbd"					{ addToken(Token.RESERVED_WORD); }
	"keygen"					{ addToken(Token.RESERVED_WORD); }
	"label"					{ addToken(Token.RESERVED_WORD); }
	"layer"					{ addToken(Token.RESERVED_WORD); }
	"legend"					{ addToken(Token.RESERVED_WORD); }
	"li"						{ addToken(Token.RESERVED_WORD); }
	"link"					{ addToken(Token.RESERVED_WORD); }
	"map"					{ addToken(Token.RESERVED_WORD); }
	"marquee"					{ addToken(Token.RESERVED_WORD); }
	"menu"					{ addToken(Token.RESERVED_WORD); }
	"meta"					{ addToken(Token.RESERVED_WORD); }
	"multicol"				{ addToken(Token.RESERVED_WORD); }
	"nobr"					{ addToken(Token.RESERVED_WORD); }
	"noembed"					{ addToken(Token.RESERVED_WORD); }
	"noframes"				{ addToken(Token.RESERVED_WORD); }
	"nolayer"					{ addToken(Token.RESERVED_WORD); }
	"noscript"				{ addToken(Token.RESERVED_WORD); }
	"object"					{ addToken(Token.RESERVED_WORD); }
	"ol"						{ addToken(Token.RESERVED_WORD); }
	"optgroup"				{ addToken(Token.RESERVED_WORD); }
	"option"					{ addToken(Token.RESERVED_WORD); }
	"p"						{ addToken(Token.RESERVED_WORD); }
	"param"					{ addToken(Token.RESERVED_WORD); }
	"plaintext"				{ addToken(Token.RESERVED_WORD); }
	"pre"					{ addToken(Token.RESERVED_WORD); }
	"q"						{ addToken(Token.RESERVED_WORD); }
	"s"						{ addToken(Token.RESERVED_WORD); }
	"samp"					{ addToken(Token.RESERVED_WORD); }
	"script"					{ addToken(Token.RESERVED_WORD); }
	"select"					{ addToken(Token.RESERVED_WORD); }
	"server"					{ addToken(Token.RESERVED_WORD); }
	"small"					{ addToken(Token.RESERVED_WORD); }
	"spacer"					{ addToken(Token.RESERVED_WORD); }
	"span"					{ addToken(Token.RESERVED_WORD); }
	"strike"					{ addToken(Token.RESERVED_WORD); }
	"strong"					{ addToken(Token.RESERVED_WORD); }
	"style"					{ addToken(Token.RESERVED_WORD); }
	"sub"					{ addToken(Token.RESERVED_WORD); }
	"sup"					{ addToken(Token.RESERVED_WORD); }
	"table"					{ addToken(Token.RESERVED_WORD); }
	"tbody"					{ addToken(Token.RESERVED_WORD); }
	"td"						{ addToken(Token.RESERVED_WORD); }
	"textarea"				{ addToken(Token.RESERVED_WORD); }
	"tfoot"					{ addToken(Token.RESERVED_WORD); }
	"th"						{ addToken(Token.RESERVED_WORD); }
	"thead"					{ addToken(Token.RESERVED_WORD); }
	"title"					{ addToken(Token.RESERVED_WORD); }
	"tr"						{ addToken(Token.RESERVED_WORD); }
	"tt"						{ addToken(Token.RESERVED_WORD); }
	"u"						{ addToken(Token.RESERVED_WORD); }
	"ul"						{ addToken(Token.RESERVED_WORD); }
	"var"					{ addToken(Token.RESERVED_WORD); }
	"/"						{ addToken(Token.RESERVED_WORD); }
	{InTagIdentifier}			{ addToken(Token.IDENTIFIER); }
	{Whitespace}+				{ addToken(Token.WHITESPACE); }
	"="						{ addToken(Token.OPERATOR); }
	">"						{ yybegin(YYINITIAL); addToken(Token.SEPARATOR); }
	{UnclosedStringLiteral}		{ addToken(Token.ERROR_STRING_DOUBLE); }
	{StringLiteral}			{ addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); }
	{UnclosedCharLiteral}		{ addToken(Token.ERROR_CHAR); }
	{CharLiteral}				{ addToken(Token.LITERAL_CHAR); }
	<<EOF>>					{ addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; }
}

<INTAG_SCRIPT> {
	{InTagIdentifier}			{ addToken(Token.IDENTIFIER); }
	"/"						{ addToken(Token.RESERVED_WORD); } // Won't appear in valid HTML.
	{Whitespace}+				{ addToken(Token.WHITESPACE); }
	"="						{ addToken(Token.OPERATOR); }
	">"						{ yybegin(JAVASCRIPT); addToken(Token.SEPARATOR); }
	{UnclosedStringLiteral}		{ addToken(Token.ERROR_STRING_DOUBLE); }
	{StringLiteral}			{ addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); }
	{UnclosedCharLiteral}		{ addToken(Token.ERROR_CHAR); }
	{CharLiteral}				{ addToken(Token.LITERAL_CHAR); }
	<<EOF>>					{ addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; }
}

<JAVASCRIPT> {

	/*
	 * NOTE: This state is essentially RText's Java token maker
	 * copy-and-pasted.
	 */

	{EndScriptTag}					{
								  yybegin(YYINITIAL);
								  addToken(zzStartRead,zzStartRead, Token.SEPARATOR);
								  addToken(zzMarkedPos-8,zzMarkedPos-2, Token.RESERVED_WORD);
								  addToken(zzMarkedPos-1,zzMarkedPos-1, Token.SEPARATOR);
								}

	// ECMA keywords.
	"break"						{ addToken(Token.RESERVED_WORD); }
	"continue"					{ addToken(Token.RESERVED_WORD); }
	"delete"						{ addToken(Token.RESERVED_WORD); }
	"else"						{ addToken(Token.RESERVED_WORD); }
	"for"						{ addToken(Token.RESERVED_WORD); }
	"function"					{ addToken(Token.RESERVED_WORD); }
	"if"							{ addToken(Token.RESERVED_WORD); }
	"in"							{ addToken(Token.RESERVED_WORD); }
	"new"						{ addToken(Token.RESERVED_WORD); }
	"return"						{ addToken(Token.RESERVED_WORD); }
	"this"						{ addToken(Token.RESERVED_WORD); }
	"typeof"						{ addToken(Token.RESERVED_WORD); }
	"var"						{ addToken(Token.RESERVED_WORD); }
	"void"						{ addToken(Token.RESERVED_WORD); }
	"while"						{ addToken(Token.RESERVED_WORD); }
	"with"						{ addToken(Token.RESERVED_WORD); }

	// Reserved (but not yet used) ECMA keywords.
	"abstract"					{ addToken(Token.RESERVED_WORD); }
	"boolean"						{ addToken(Token.DATA_TYPE); }
	"byte"						{ addToken(Token.DATA_TYPE); }
	"case"						{ addToken(Token.RESERVED_WORD); }
	"catch"						{ addToken(Token.RESERVED_WORD); }
	"char"						{ addToken(Token.DATA_TYPE); }
	"class"						{ addToken(Token.RESERVED_WORD); }
	"const"						{ addToken(Token.RESERVED_WORD); }
	"debugger"					{ addToken(Token.RESERVED_WORD); }
	"default"						{ addToken(Token.RESERVED_WORD); }
	"do"							{ addToken(Token.RESERVED_WORD); }
	"double"						{ addToken(Token.DATA_TYPE); }
	"enum"						{ addToken(Token.RESERVED_WORD); }
	"export"						{ addToken(Token.RESERVED_WORD); }
	"extends"						{ addToken(Token.RESERVED_WORD); }
	"final"						{ addToken(Token.RESERVED_WORD); }
	"finally"						{ addToken(Token.RESERVED_WORD); }
	"float"						{ addToken(Token.DATA_TYPE); }
	"goto"						{ addToken(Token.RESERVED_WORD); }
	"implements"					{ addToken(Token.RESERVED_WORD); }
	"import"						{ addToken(Token.RESERVED_WORD); }
	"instanceof"					{ addToken(Token.RESERVED_WORD); }
	"int"						{ addToken(Token.DATA_TYPE); }
	"interface"					{ addToken(Token.RESERVED_WORD); }
	"long"						{ addToken(Token.DATA_TYPE); }
	"native"						{ addToken(Token.RESERVED_WORD); }
	"package"						{ addToken(Token.RESERVED_WORD); }
	"private"						{ addToken(Token.RESERVED_WORD); }
	"protected"					{ addToken(Token.RESERVED_WORD); }
	"public"						{ addToken(Token.RESERVED_WORD); }
	"short"						{ addToken(Token.DATA_TYPE); }
	"static"						{ addToken(Token.RESERVED_WORD); }
	"super"						{ addToken(Token.RESERVED_WORD); }
	"switch"						{ addToken(Token.RESERVED_WORD); }
	"synchronized"					{ addToken(Token.RESERVED_WORD); }
	"throw"						{ addToken(Token.RESERVED_WORD); }
	"throws"						{ addToken(Token.RESERVED_WORD); }
	"transient"					{ addToken(Token.RESERVED_WORD); }
	"try"						{ addToken(Token.RESERVED_WORD); }
	"volatile"					{ addToken(Token.RESERVED_WORD); }
	"null"						{ addToken(Token.RESERVED_WORD); }

	// Literals.
	"false"						{ addToken(Token.LITERAL_BOOLEAN); }
	"true"						{ addToken(Token.LITERAL_BOOLEAN); }
	"NaN"						{ addToken(Token.RESERVED_WORD); }
	"Infinity"					{ addToken(Token.RESERVED_WORD); }

	// Functions.
	"eval"						{ addToken(Token.FUNCTION); }
	"parseInt"					{ addToken(Token.FUNCTION); }
	"parseFloat"					{ addToken(Token.FUNCTION); }
	"escape"						{ addToken(Token.FUNCTION); }
	"unescape"					{ addToken(Token.FUNCTION); }
	"isNaN"						{ addToken(Token.FUNCTION); }
	"isFinite"					{ addToken(Token.FUNCTION); }

	{LineTerminator}				{ addEndToken(INTERNAL_IN_JS); return firstToken; }
	{JS_Identifier}				{ addToken(Token.IDENTIFIER); }
	{Whitespace}+					{ addToken(Token.WHITESPACE); }

	/* String/Character literals. */
	{JS_CharLiteral}				{ addToken(Token.LITERAL_CHAR); }
	{JS_UnclosedCharLiteral}			{ addToken(Token.ERROR_CHAR); }
	{JS_UnclosedErrorCharLiteral}		{ addToken(Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; }
	{JS_ErrorCharLiteral}			{ addToken(Token.ERROR_CHAR); }
	{JS_StringLiteral}				{ addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); }
	{JS_UnclosedStringLiteral}		{ addToken(Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; }
	{JS_UnclosedErrorStringLiteral}	{ addToken(Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; }
	{JS_ErrorStringLiteral}			{ addToken(Token.ERROR_STRING_DOUBLE); }

	/* Comment literals. */
	"/**/"						{ /* Silly we have to do this. */ addToken(Token.COMMENT_MULTILINE); }
	{JS_MLCBegin}					{ start = zzMarkedPos-2; yybegin(JS_MLC); }
	{JS_LineCommentBegin}.*			{ addToken(Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; }

	/* Separators. */
	{JS_Separator}					{ addToken(Token.SEPARATOR); }
	{JS_Separator2}				{ addToken(Token.IDENTIFIER); }

	/* Operators. */
	{JS_Operator}					{ addToken(Token.OPERATOR); }

	/* Numbers */
	{JS_IntegerLiteral}				{ addToken(Token.LITERAL_NUMBER_DECIMAL_INT); }
	{JS_HexLiteral}				{ addToken(Token.LITERAL_NUMBER_HEXADECIMAL); }
	{JS_FloatLiteral}				{ addToken(Token.LITERAL_NUMBER_FLOAT); }
	{JS_ErrorNumberFormat}			{ addToken(Token.ERROR_NUMBER_FORMAT); }

	{JS_ErrorIdentifier}			{ addToken(Token.ERROR_IDENTIFIER); }

	/* Ended with a line not in a string or comment. */
	<<EOF>>						{ addEndToken(INTERNAL_IN_JS); return firstToken; }

	/* Catch any other (unhandled) characters and flag them as bad. */
	.							{ addToken(Token.ERROR_IDENTIFIER); }

}

<JS_MLC> {
	// JavaScript MLC's.  This state is essentially Java's MLC state.
	[^\n\*]+						{}
	\n							{ addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; }
	{JS_MLCEnd}					{ yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); }
	\*							{}
	<<EOF>>						{ addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; }
}

⌨️ 快捷键说明

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