Select Git revision
JastAddAspect.flex
JastAddAspect.flex 5.77 KiB
package org.jastadd.tooling.aspect.lexer;
import com.intellij.lexer.FlexLexer;
import com.intellij.psi.tree.IElementType;
import org.jastadd.tooling.aspect.psi.JastAddAspectTypes;
import com.intellij.psi.TokenType;
%%
%class JastAddAspectLexer
%implements FlexLexer
%unicode
%function advance
%type IElementType
%eof{ return;
%eof}
%{
private int counter = 0;
%}
WhiteSpace = [ ] | \t | \f | \n | \r | \r\n
//ID = [a-zA-Z$_][a-zA-Z0-9$_]*
//MultiLineComment = [/][*][^*]+[*]+([^*/][^*]*[*]+)*[/]
//DocComment = [/][*][*][^*]*[*]+([^*/][^*]*[*]+)*[/]
//SingleLineComment = [/][/] [^\n\r]* (\n | \r | \r\n)
NotParenthesis = [^{}]*
%state JAVA
%%
<YYINITIAL> {
{WhiteSpace}+ {}
"EQ" { yybegin(YYINITIAL); return JastAddAspectTypes.EQ; }
"{" { yybegin(JAVA); counter = 1; }
}
<JAVA_PARENTHESIS_BLOCK> {
{NotParenthesis} {}
"{" { counter++; yybegin(JAVA); }
"}" { counter--; if (counter==0) { yybegin(YYINITIAL); return JastAddAspectTypes.JAVABLOCK; } }
}
<JAVATOKENS> {
"abstract" { return JastAddAspectTypes.ABSTRACT; }
"assert" { return JastAddAspectTypes.ASSERT; }
"boolean" { return JastAddAspectTypes.BOOLEAN; }
"break" { return JastAddAspectTypes.BREAK; }
"byte" { return JastAddAspectTypes.BYTE; }
"case" { return JastAddAspectTypes.CASE; }
"catch" { return JastAddAspectTypes.CATCH; }
"char" { return JastAddAspectTypes.CHAR; }
"class" { return JastAddAspectTypes.CLASS; }
"const" { return JastAddAspectTypes.CONST; }
"continue" { return JastAddAspectTypes.CONTINUE; }
"default" { return JastAddAspectTypes._DEFAULT; }
"do" { return JastAddAspectTypes.DO; }
"double" { return JastAddAspectTypes.DOUBLE; }
"else" { return JastAddAspectTypes.ELSE; }
"enum" { return JastAddAspectTypes.ENUM; }
"extends" { return JastAddAspectTypes.EXTENDS; }
"false" { return JastAddAspectTypes.FALSE; }
"final" { return JastAddAspectTypes.FINAL; }
"finally" { return JastAddAspectTypes.FINALLY; }
"float" { return JastAddAspectTypes.FLOAT; }
"for" { return JastAddAspectTypes.FOR; }
"goto" { return JastAddAspectTypes.GOTO; }
"if" { return JastAddAspectTypes.IF; }
"implements" { return JastAddAspectTypes.IMPLEMENTS; }
"import" { return JastAddAspectTypes.IMPORT; }
"instanceof" { return JastAddAspectTypes.INSTANCEOF; }
"int" { return JastAddAspectTypes.INT; }
"interface" { return JastAddAspectTypes.INTERFACE; }
"long" { return JastAddAspectTypes.LONG; }
"native" { return JastAddAspectTypes.NATIVE; }
"new" { return JastAddAspectTypes.NEW; }
"null" { return JastAddAspectTypes.NULL; }
"package" { return JastAddAspectTypes.PACKAGE; }
"private" { return JastAddAspectTypes.PRIVATE; }
"protected" { return JastAddAspectTypes.PROTECTED; }
"public" { return JastAddAspectTypes.PUBLIC; }
"return" { return JastAddAspectTypes.RETURN; }
"short" { return JastAddAspectTypes.SHORT; }
"static" { return JastAddAspectTypes.STATIC; }
"strictfp" { return JastAddAspectTypes.STRICTFP; }
"super" { return JastAddAspectTypes.SUPER; }
"switch" { return JastAddAspectTypes.SWITCH; }
"synchronized" { return JastAddAspectTypes.SYNCHRONIZED; }
"this" { return JastAddAspectTypes.THIS; }
"throw" { return JastAddAspectTypes.THROW; }
"throws" { return JastAddAspectTypes.THROWS; }
"transient" { return JastAddAspectTypes.TRANSIENT; }
"true" { return JastAddAspectTypes.TRUE; }
"try" { return JastAddAspectTypes.TRY; }
"void" { return JastAddAspectTypes.VOID; }
"volatile" { return JastAddAspectTypes.VOLATILE; }
"while" { return JastAddAspectTypes.WHILE; }
// JastAdd
"inh" { return JastAddAspectTypes.INH; }
"syn" { return JastAddAspectTypes.SYN; }
"lazy" { return JastAddAspectTypes.LAZY; }
"rewrite" { return JastAddAspectTypes.REWRITE; }
"to" { return JastAddAspectTypes.TO; }
"when" { return JastAddAspectTypes.WHEN; }
"aspect" { return JastAddAspectTypes.ASPECT; }
"eq" { return JastAddAspectTypes.EQUATION; }
"circular" { return JastAddAspectTypes.CIRCULAR; }
"refine" { return JastAddAspectTypes.REFINE; }
"contributes" { return JastAddAspectTypes.CONTRIBUTES; }
"each" { return JastAddAspectTypes.EACH; }
"nta" { return JastAddAspectTypes.NTA; }
"cache" { return JastAddAspectTypes.CACHE; }
"uncache" { return JastAddAspectTypes.UNCACHE; }
}