blob: 6b70377e6bb8de81889c792bdcb44ff3b2f54ad1 [file] [log] [blame]
package com.android.tools.idea.lang.aidl.lexer;
import com.intellij.lexer.*;
import com.intellij.psi.tree.IElementType;
import static com.android.tools.idea.lang.aidl.lexer.AidlTokenTypes.*;
%%
%{
public _AidlLexer() {
this((java.io.Reader)null);
}
%}
%public
%class _AidlLexer
%implements FlexLexer
%function advance
%type IElementType
%unicode
EOL="\r"|"\n"|"\r\n"
LINE_WS=[\ \t\f]
WHITE_SPACE=({LINE_WS}|{EOL})+
COMMENT="//"[^\r\n]*
BLOCK_COMMENT=[/][*][^*]*[*]+([^/*][^*]*[*]+)*[/]
IDVALUE=(0|[1-9][0-9]*)
IDENTIFIER=[_a-zA-Z][_a-zA-Z0-9]*
%%
<YYINITIAL> {
{WHITE_SPACE} { return com.intellij.psi.TokenType.WHITE_SPACE; }
"import" { return IMPORT_KEYWORD; }
"package" { return PACKAGE_KEYWORD; }
"parcelable" { return PARCELABLE_KEYWORD; }
"interface" { return INTERFACE_KEYWORD; }
"flattenable" { return FLATTENABLE_KEYWORD; }
"rpc" { return RPC_KEYWORD; }
"in" { return IN_KEYWORD; }
"out" { return OUT_KEYWORD; }
"inout" { return INOUT_KEYWORD; }
"oneway" { return ONEWAY_KEYWORD; }
"void" { return VOID_KEYWORD; }
"{" { return LCURLY; }
"}" { return RCURLY; }
"(" { return LPARENTH; }
")" { return RPARENTH; }
"[" { return LBRACKET; }
"]" { return RBRACKET; }
"," { return COMMA; }
"=" { return EQUALS; }
";" { return SEMICOLON; }
"<" { return LT; }
">" { return GT; }
"boolean" { return BOOLEAN_KEYWORD; }
"byte" { return BYTE_KEYWORD; }
"char" { return CHAR_KEYWORD; }
"short" { return SHORT_KEYWORD; }
"int" { return INT_KEYWORD; }
"long" { return LONG_KEYWORD; }
"float" { return FLOAT_KEYWORD; }
"double" { return DOUBLE_KEYWORD; }
"ONEWAY" { return ONEWAY; }
{COMMENT} { return COMMENT; }
{BLOCK_COMMENT} { return BLOCK_COMMENT; }
{IDVALUE} { return IDVALUE; }
{IDENTIFIER} { return IDENTIFIER; }
[^] { return com.intellij.psi.TokenType.BAD_CHARACTER; }
}