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

📄 javatokenmaker.flex

📁 具有不同语法高亮的编辑器实例
💻 FLEX
📖 第 1 页 / 共 2 页
字号:
ErrorNumberFormat			= (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+)
BooleanLiteral				= ("true"|"false")

Separator					= ([\(\)\{\}\[\]\]])
Separator2				= ([\;,.])

NonAssignmentOperator		= ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"&&"|">>>")
AssignmentOperator			= ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=")
Operator					= ({NonAssignmentOperator}|{AssignmentOperator})

DocumentationKeyword		= ("author"|"deprecated"|"exception"|"link"|"param"|"return"|"see"|"serial"|"serialData"|"serialField"|"since"|"throws"|"version")

Identifier				= ({IdentifierStart}{IdentifierPart}*)
ErrorIdentifier			= ({NonSeparator}+)

Annotation				= ("@"{Identifier}?)
/*
URLCharacter				= ([A-Za-z_0-9:/\.\?=&\-])
URLCharacters				= ({URLCharacter}+)
URL						= (("http://"|"www."){URLCharacters})
*/

%state MLC
%state DOCCOMMENT

%%

/* Keywords */
<YYINITIAL> "abstract"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "assert"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "break"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "case"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "catch"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "class"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "const"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "continue"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "default"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "do"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "else"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "enum"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "extends"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "final"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "finally"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "for"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "goto"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "if"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "implements"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "import"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "instanceof"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "interface"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "native"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "new"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "null"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "package"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "private"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "protected"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "public"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "return"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "static"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "strictfp"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "super"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "switch"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "synchronized"			{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "this"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "throw"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "throws"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "transient"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "try"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "void"					{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "volatile"				{ addToken(Token.RESERVED_WORD); }
<YYINITIAL> "while"					{ addToken(Token.RESERVED_WORD); }

/* Data types. */
<YYINITIAL> "boolean"				{ addToken(Token.DATA_TYPE); }
<YYINITIAL> "byte"					{ addToken(Token.DATA_TYPE); }
<YYINITIAL> "char"					{ addToken(Token.DATA_TYPE); }
<YYINITIAL> "double"				{ addToken(Token.DATA_TYPE); }
<YYINITIAL> "float"					{ addToken(Token.DATA_TYPE); }
<YYINITIAL> "int"					{ addToken(Token.DATA_TYPE); }
<YYINITIAL> "long"					{ addToken(Token.DATA_TYPE); }
<YYINITIAL> "short"					{ addToken(Token.DATA_TYPE); }

/* Booleans. */
<YYINITIAL> {BooleanLiteral}			{ addToken(Token.LITERAL_BOOLEAN); }

/* Standard functions */
<YYINITIAL> "Boolean"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Byte"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "Character"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Class"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "ClassLoader"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "Compiler"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Double"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Float"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "InheritableThreadLocal"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "Integer"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Long"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "Math"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "Number"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Object"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Package"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Process"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Runtime"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "RuntimePermission"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "SecurityManager"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "Short"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "StackTraceElement"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "StrictMath"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "String"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "StringBuffer"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "System"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Thread"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "ThreadGroup"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "ThreadLocal"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "Throwable"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Void"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "ArithmeticException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "ArrayIndexOutOfBoundsException"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "ArrayStoreException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "ClassCastException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "ClassNotFoundException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "CloneNotSupportedException"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "Exception"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "IllegalAccessException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "IllegalArgumentException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "IllegalMonitorStateException"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "IllegalStateException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "IllegalThreadStateException"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "IndexOutOfBoundsException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "InstantiationException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "InterruptedException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "NegativeArraySizeException"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "NoSuchFieldException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "NoSuchMethodException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "NullPointerException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "NumberFormatException"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "RuntimeException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "SecurityException"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "StringIndexOutOfBoundsException"	{ addToken(Token.FUNCTION); }
<YYINITIAL> "UnsupportedOperationException"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "AbstractMethodError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "AssertionError"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "ClassCircularityError"			{ addToken(Token.FUNCTION); }
<YYINITIAL> "ClassFormatError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "Error"							{ addToken(Token.FUNCTION); }
<YYINITIAL> "ExceptionInInitializerError"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "IllegalAccessError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "IllegalAccessError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "IncompatibleClassChangeError"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "InternalError"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "LinkageError"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "NoClassDefFoundError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "NoSuchFieldError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "NoSuchMethodError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "OutOfMemoryError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "StackOverflowError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "ThreadDeath"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "UnknownError"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "UnsatisfiedLinkError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "UnsupportedClassVersionError"		{ addToken(Token.FUNCTION); }
<YYINITIAL> "VerifyError"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "VirtualMachineError"				{ addToken(Token.FUNCTION); }
<YYINITIAL> "CharSequence"					{ addToken(Token.FUNCTION); }
<YYINITIAL> "Cloneable"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Comparable"						{ addToken(Token.FUNCTION); }
<YYINITIAL> "Runnable"						{ addToken(Token.FUNCTION); }

<YYINITIAL> {

	{LineTerminator}				{ addNullToken(); return firstToken; }


	{Identifier}					{ addToken(Token.IDENTIFIER); }

/*
 * How should we handle generics?
"<"[^\[\]\{\}\(\)\+\-\*\/\%\&\|\!\~]+">" {addToken(Token.PREPROCESSOR); }
*/

	{WhiteSpace}+					{ addToken(Token.WHITESPACE); }

	/* String/Character literals. */
	{CharLiteral}					{ addToken(Token.LITERAL_CHAR); }
	{UnclosedCharLiteral}			{ addToken(Token.ERROR_CHAR); }
	{UnclosedErrorCharLiteral}		{ addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; }
	{ErrorCharLiteral}				{ addToken(Token.ERROR_CHAR); }
	{StringLiteral}				{ addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); }
	{UnclosedStringLiteral}			{ addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; }
	{UnclosedErrorStringLiteral}		{ addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; }
	{ErrorStringLiteral}			{ addToken(Token.ERROR_STRING_DOUBLE); }

	/* Comment literals. */
	"/**/"						{ /* Silly we have to do this. */ addToken(Token.COMMENT_MULTILINE); }
	{MLCBegin}					{ start = zzMarkedPos-2; yybegin(MLC); }
	{DocCommentBegin}				{ start = zzMarkedPos-3; yybegin(DOCCOMMENT); }
	{LineCommentBegin}.*			{ addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; }

	/* Annotations. */
	{Annotation}					{ addToken(Token.VARIABLE); /* FIXME:  Add token type to Token? */ }

	/* Separators. */
	{Separator}					{ addToken(Token.SEPARATOR); }
	{Separator2}					{ addToken(Token.IDENTIFIER); }

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

	/* Numbers */
	{IntegerLiteral}				{ addToken(Token.LITERAL_NUMBER_DECIMAL_INT); }
	{HexLiteral}					{ addToken(Token.LITERAL_NUMBER_HEXADECIMAL); }
	{FloatLiteral}					{ addToken(Token.LITERAL_NUMBER_FLOAT); }
	{ErrorNumberFormat}				{ addToken(Token.ERROR_NUMBER_FORMAT); }

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

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

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

}


<MLC> {

	[^\n\*]+					{}
/*	[^\h\w\n\*]+				{}
	{URL}					{ int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addToken(temp,zzMarkedPos-1, Token.HYPERLINK); start = zzMarkedPos; }
	"h"						{}
	"w"						{}
*/
	\n						{ addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; }
	{MLCEnd}					{ yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); }
	\*						{}
	<<EOF>>					{ addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; }

}


<DOCCOMMENT> {

	[^\@\n\<\*]+				{}
/*	[^\h\w\@\n\<\*]+			{}
	{URL}					{ int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.HYPERLINK); start = zzMarkedPos; }
	"h"						{}
	"w"						{}
*/
	"@"{DocumentationKeyword}	{ int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; }
	"@"						{}
	\n						{ addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); return firstToken; }
	"<"[/]?({Letter}[^\>]*)?">"	{ int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.PREPROCESSOR); start = zzMarkedPos; }
	\<						{}
	{DocCommentEnd}			{ yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); }
	\*						{}
	<<EOF>>					{ yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; }

}

⌨️ 快捷键说明

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