Commit 776207cf authored by Tesla Ice Zhang's avatar Tesla Ice Zhang Committed by Xianwen Chen

Improve IDEA plugin (#363)

* Added:

+ brace matcher
+ highlight for keywords

* Revert license

* Fix nullability bug

* Update version
parent f29210d5
out/
*~
resources/META-INF
\ No newline at end of file
......@@ -13,10 +13,10 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<idea-plugin version="2">
<idea-plugin>
<id>com.dropbox.djinni.ideaplugin</id>
<name>Djinni IDL file support</name>
<version>0.8</version>
<version>0.8.1</version>
<vendor url="https://github.com/dropbox/djinni">Dropbox Djinni Github Project</vendor>
<description><![CDATA[
......@@ -70,6 +70,7 @@
<lang.psiStructureViewFactory language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniStructureViewFactory"/>
<lang.formatter language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniFormattingModelBuilder"/>
<lang.commenter language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniCommenter"/>
<lang.braceMatcher language="Djinni" implementationClass="com.dropbox.djinni.ideaplugin.DjinniBraceMatcher"/>
</extensions>
<application-components>
......
......@@ -122,7 +122,7 @@ public class DjinniParser implements PsiParser, LightPsiParser {
public static boolean basicType(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "basicType")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<basic type>");
Marker m = enter_section_(b, l, _NONE_, BASIC_TYPE, "<basic type>");
r = consumeToken(b, "bool");
if (!r) r = consumeToken(b, "i8");
if (!r) r = consumeToken(b, "i16");
......@@ -133,24 +133,25 @@ public class DjinniParser implements PsiParser, LightPsiParser {
if (!r) r = consumeToken(b, "string");
if (!r) r = consumeToken(b, "binary");
if (!r) r = consumeToken(b, "date");
exit_section_(b, l, m, BASIC_TYPE, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// 'const' constNamedValue COLON typeReference EQ constValue SEMICOLON
// const constNamedValue COLON typeReference EQ constValue SEMICOLON
public static boolean constMember(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constMember")) return false;
if (!nextTokenIs(b, CONST)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<const member>");
r = consumeToken(b, "const");
Marker m = enter_section_(b);
r = consumeToken(b, CONST);
r = r && constNamedValue(b, l + 1);
r = r && consumeToken(b, COLON);
r = r && typeReference(b, l + 1);
r = r && consumeToken(b, EQ);
r = r && constValue(b, l + 1);
r = r && consumeToken(b, SEMICOLON);
exit_section_(b, l, m, CONST_MEMBER, r, false, null);
exit_section_(b, m, CONST_MEMBER, r);
return r;
}
......@@ -253,24 +254,25 @@ public class DjinniParser implements PsiParser, LightPsiParser {
public static boolean constValue(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constValue")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<const value>");
Marker m = enter_section_(b, l, _NONE_, CONST_VALUE, "<const value>");
r = consumeToken(b, STRING_LITERAL);
if (!r) r = consumeToken(b, NUMBER_LITERAL);
if (!r) r = constReference(b, l + 1);
if (!r) r = constRecord(b, l + 1);
exit_section_(b, l, m, CONST_VALUE, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// 'eq' | 'ord'
// eq_keyword | ord
public static boolean derivingParam(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "derivingParam")) return false;
if (!nextTokenIs(b, "<deriving param>", EQ_KEYWORD, ORD)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<deriving param>");
r = consumeToken(b, "eq");
if (!r) r = consumeToken(b, "ord");
exit_section_(b, l, m, DERIVING_PARAM, r, false, null);
Marker m = enter_section_(b, l, _NONE_, DERIVING_PARAM, "<deriving param>");
r = consumeToken(b, EQ_KEYWORD);
if (!r) r = consumeToken(b, ORD);
exit_section_(b, l, m, r, false, null);
return r;
}
......@@ -278,11 +280,12 @@ public class DjinniParser implements PsiParser, LightPsiParser {
// (derivingParam ',' derivingParamList) | derivingParam
public static boolean derivingParamList(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "derivingParamList")) return false;
if (!nextTokenIs(b, "<deriving param list>", EQ_KEYWORD, ORD)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<deriving param list>");
Marker m = enter_section_(b, l, _NONE_, DERIVING_PARAM_LIST, "<deriving param list>");
r = derivingParamList_0(b, l + 1);
if (!r) r = derivingParam(b, l + 1);
exit_section_(b, l, m, DERIVING_PARAM_LIST, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
......@@ -315,6 +318,7 @@ public class DjinniParser implements PsiParser, LightPsiParser {
// enumTypeVariant LEFT_BLOCK_BRACE enumMember* RIGHT_BLOCK_BRACE
static boolean enumDescription(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "enumDescription")) return false;
if (!nextTokenIs(b, ENUM)) return false;
boolean r;
Marker m = enter_section_(b);
r = enumTypeVariant(b, l + 1);
......@@ -351,13 +355,14 @@ public class DjinniParser implements PsiParser, LightPsiParser {
}
/* ********************************************************** */
// 'enum'
// enum
public static boolean enumTypeVariant(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "enumTypeVariant")) return false;
if (!nextTokenIs(b, ENUM)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<enum type variant>");
r = consumeToken(b, "enum");
exit_section_(b, l, m, ENUM_TYPE_VARIANT, r, false, null);
Marker m = enter_section_(b);
r = consumeToken(b, ENUM);
exit_section_(b, m, ENUM_TYPE_VARIANT, r);
return r;
}
......@@ -374,15 +379,13 @@ public class DjinniParser implements PsiParser, LightPsiParser {
}
/* ********************************************************** */
// AT'extern' string_literal
// AT extern string_literal
public static boolean externStatement(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "externStatement")) return false;
if (!nextTokenIs(b, AT)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, AT);
r = r && consumeToken(b, "extern");
r = r && consumeToken(b, STRING_LITERAL);
r = consumeTokens(b, 0, AT, EXTERN, STRING_LITERAL);
exit_section_(b, m, EXTERN_STATEMENT, r);
return r;
}
......@@ -439,10 +442,10 @@ public class DjinniParser implements PsiParser, LightPsiParser {
public static boolean genericBasicType(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "genericBasicType")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<generic basic type>");
Marker m = enter_section_(b, l, _NONE_, GENERIC_BASIC_TYPE, "<generic basic type>");
r = genericBasicTypeSingleParameter(b, l + 1);
if (!r) r = genericBasicTypeDualParameter(b, l + 1);
exit_section_(b, l, m, GENERIC_BASIC_TYPE, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
......@@ -467,13 +470,13 @@ public class DjinniParser implements PsiParser, LightPsiParser {
public static boolean genericBasicTypeSingleParameter(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "genericBasicTypeSingleParameter")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<generic basic type single parameter>");
Marker m = enter_section_(b, l, _NONE_, GENERIC_BASIC_TYPE_SINGLE_PARAMETER, "<generic basic type single parameter>");
r = genericBasicTypeSingleParameter_0(b, l + 1);
r = r && genericBasicTypeSingleParameter_1(b, l + 1);
r = r && consumeToken(b, LEFT_GENERICS_BRACE);
r = r && typeReference(b, l + 1);
r = r && consumeToken(b, RIGHT_GENERICS_BRACE);
exit_section_(b, l, m, GENERIC_BASIC_TYPE_SINGLE_PARAMETER, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
......@@ -493,22 +496,20 @@ public class DjinniParser implements PsiParser, LightPsiParser {
private static boolean genericBasicTypeSingleParameter_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "genericBasicTypeSingleParameter_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_, null);
Marker m = enter_section_(b, l, _NOT_);
r = !consumeToken(b, SPACE);
exit_section_(b, l, m, null, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// AT'import' string_literal
// AT import string_literal
public static boolean importStatement(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importStatement")) return false;
if (!nextTokenIs(b, AT)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, AT);
r = r && consumeToken(b, "import");
r = r && consumeToken(b, STRING_LITERAL);
r = consumeTokens(b, 0, AT, IMPORT, STRING_LITERAL);
exit_section_(b, m, IMPORT_STATEMENT, r);
return r;
}
......@@ -517,6 +518,7 @@ public class DjinniParser implements PsiParser, LightPsiParser {
// interfaceTypeVariant LEFT_BLOCK_BRACE interfaceMember* RIGHT_BLOCK_BRACE
static boolean interfaceDescription(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "interfaceDescription")) return false;
if (!nextTokenIs(b, INTERFACE)) return false;
boolean r;
Marker m = enter_section_(b);
r = interfaceTypeVariant(b, l + 1);
......@@ -582,33 +584,34 @@ public class DjinniParser implements PsiParser, LightPsiParser {
public static boolean interfaceMember(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "interfaceMember")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<interface member>");
Marker m = enter_section_(b, l, _NONE_, INTERFACE_MEMBER, "<interface member>");
r = constMember(b, l + 1);
if (!r) r = interfaceMemberFunction(b, l + 1);
exit_section_(b, l, m, INTERFACE_MEMBER, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// ['static'] identifier LEFT_PARAM_BRACE interfaceFunctionParamList? RIGHT_PARAM_BRACE [COLON typeReference] SEMICOLON
// [static] identifier LEFT_PARAM_BRACE interfaceFunctionParamList? RIGHT_PARAM_BRACE [COLON typeReference] SEMICOLON
public static boolean interfaceMemberFunction(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "interfaceMemberFunction")) return false;
if (!nextTokenIs(b, "<interface member function>", IDENTIFIER, STATIC)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<interface member function>");
Marker m = enter_section_(b, l, _NONE_, INTERFACE_MEMBER_FUNCTION, "<interface member function>");
r = interfaceMemberFunction_0(b, l + 1);
r = r && consumeTokens(b, 0, IDENTIFIER, LEFT_PARAM_BRACE);
r = r && interfaceMemberFunction_3(b, l + 1);
r = r && consumeToken(b, RIGHT_PARAM_BRACE);
r = r && interfaceMemberFunction_5(b, l + 1);
r = r && consumeToken(b, SEMICOLON);
exit_section_(b, l, m, INTERFACE_MEMBER_FUNCTION, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
// ['static']
// [static]
private static boolean interfaceMemberFunction_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "interfaceMemberFunction_0")) return false;
consumeToken(b, "static");
consumeToken(b, STATIC);
return true;
}
......@@ -638,14 +641,15 @@ public class DjinniParser implements PsiParser, LightPsiParser {
}
/* ********************************************************** */
// 'interface' generator*
// interface generator*
public static boolean interfaceTypeVariant(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "interfaceTypeVariant")) return false;
if (!nextTokenIs(b, INTERFACE)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<interface type variant>");
r = consumeToken(b, "interface");
Marker m = enter_section_(b);
r = consumeToken(b, INTERFACE);
r = r && interfaceTypeVariant_1(b, l + 1);
exit_section_(b, l, m, INTERFACE_TYPE_VARIANT, r, false, null);
exit_section_(b, m, INTERFACE_TYPE_VARIANT, r);
return r;
}
......@@ -680,10 +684,10 @@ public class DjinniParser implements PsiParser, LightPsiParser {
public static boolean predefinedType(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "predefinedType")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<predefined type>");
Marker m = enter_section_(b, l, _NONE_, PREDEFINED_TYPE, "<predefined type>");
r = basicType(b, l + 1);
if (!r) r = genericBasicType(b, l + 1);
exit_section_(b, l, m, PREDEFINED_TYPE, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
......@@ -691,6 +695,7 @@ public class DjinniParser implements PsiParser, LightPsiParser {
// recordTypeVariant LEFT_BLOCK_BRACE recordMember* RIGHT_BLOCK_BRACE ['deriving' LEFT_PARAM_BRACE derivingParamList RIGHT_PARAM_BRACE]
static boolean recordDescription(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordDescription")) return false;
if (!nextTokenIs(b, RECORD)) return false;
boolean r;
Marker m = enter_section_(b);
r = recordTypeVariant(b, l + 1);
......@@ -738,11 +743,12 @@ public class DjinniParser implements PsiParser, LightPsiParser {
// constMember | recordMemberVariable
public static boolean recordMember(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordMember")) return false;
if (!nextTokenIs(b, "<record member>", CONST, IDENTIFIER)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<record member>");
Marker m = enter_section_(b, l, _NONE_, RECORD_MEMBER, "<record member>");
r = constMember(b, l + 1);
if (!r) r = recordMemberVariable(b, l + 1);
exit_section_(b, l, m, RECORD_MEMBER, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
......@@ -761,14 +767,15 @@ public class DjinniParser implements PsiParser, LightPsiParser {
}
/* ********************************************************** */
// 'record' generator*
// record generator*
public static boolean recordTypeVariant(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordTypeVariant")) return false;
if (!nextTokenIs(b, RECORD)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<record type variant>");
r = consumeToken(b, "record");
Marker m = enter_section_(b);
r = consumeToken(b, RECORD);
r = r && recordTypeVariant_1(b, l + 1);
exit_section_(b, l, m, RECORD_TYPE_VARIANT, r, false, null);
exit_section_(b, m, RECORD_TYPE_VARIANT, r);
return r;
}
......@@ -815,10 +822,10 @@ public class DjinniParser implements PsiParser, LightPsiParser {
public static boolean typeReference(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typeReference")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, "<type reference>");
Marker m = enter_section_(b, l, _NONE_, TYPE_REFERENCE, "<type reference>");
r = predefinedType(b, l + 1);
if (!r) r = consumeToken(b, IDENTIFIER);
exit_section_(b, l, m, TYPE_REFERENCE, r, false, null);
exit_section_(b, l, m, r, false, null);
return r;
}
......
......@@ -25,4 +25,7 @@ public interface DjinniConstMember extends PsiElement {
@NotNull
PsiElement getSemicolon();
@NotNull
PsiElement getConst();
}
......@@ -7,4 +7,10 @@ import com.intellij.psi.PsiElement;
public interface DjinniDerivingParam extends PsiElement {
@Nullable
PsiElement getEqKeyword();
@Nullable
PsiElement getOrd();
}
......@@ -7,4 +7,7 @@ import com.intellij.psi.PsiElement;
public interface DjinniEnumTypeVariant extends PsiElement {
@NotNull
PsiElement getEnum();
}
......@@ -12,6 +12,9 @@ public interface DjinniExternStatement extends PsiNamedElement {
@NotNull
PsiElement getAt();
@NotNull
PsiElement getExtern();
@NotNull
PsiElement getStringLiteral();
......
......@@ -12,6 +12,9 @@ public interface DjinniImportStatement extends PsiNamedElement {
@NotNull
PsiElement getAt();
@NotNull
PsiElement getImport();
@NotNull
PsiElement getStringLiteral();
......
......@@ -28,4 +28,7 @@ public interface DjinniInterfaceMemberFunction extends PsiElement {
@NotNull
PsiElement getIdentifier();
@Nullable
PsiElement getStatic();
}
......@@ -10,4 +10,7 @@ public interface DjinniInterfaceTypeVariant extends PsiElement {
@NotNull
List<DjinniGenerator> getGeneratorList();
@NotNull
PsiElement getInterface();
}
......@@ -10,4 +10,7 @@ public interface DjinniRecordTypeVariant extends PsiElement {
@NotNull
List<DjinniGenerator> getGeneratorList();
@NotNull
PsiElement getRecord();
}
......@@ -40,8 +40,14 @@ public interface DjinniTypes {
IElementType AT = new DjinniTokenType("@");
IElementType COLON = new DjinniTokenType(":");
IElementType COMMENT = new DjinniTokenType("comment");
IElementType CONST = new DjinniTokenType("const");
IElementType ENUM = new DjinniTokenType("enum");
IElementType EQ = new DjinniTokenType("=");
IElementType EQ_KEYWORD = new DjinniTokenType("eq");
IElementType EXTERN = new DjinniTokenType("extern");
IElementType IDENTIFIER = new DjinniTokenType("identifier");
IElementType IMPORT = new DjinniTokenType("import");
IElementType INTERFACE = new DjinniTokenType("interface");
IElementType LEFT_BLOCK_BRACE = new DjinniTokenType("{");
IElementType LEFT_GENERICS_BRACE = new DjinniTokenType("<");
IElementType LEFT_PARAM_BRACE = new DjinniTokenType("(");
......@@ -50,13 +56,16 @@ public interface DjinniTypes {
IElementType MAP = new DjinniTokenType("map");
IElementType NUMBER_LITERAL = new DjinniTokenType("number_literal");
IElementType OPTIONAL = new DjinniTokenType("optional");
IElementType ORD = new DjinniTokenType("ord");
IElementType PLUS = new DjinniTokenType("+");
IElementType RECORD = new DjinniTokenType("record");
IElementType RIGHT_BLOCK_BRACE = new DjinniTokenType("}");
IElementType RIGHT_GENERICS_BRACE = new DjinniTokenType(">");
IElementType RIGHT_PARAM_BRACE = new DjinniTokenType(")");
IElementType SEMICOLON = new DjinniTokenType(";");
IElementType SET = new DjinniTokenType("set");
IElementType SPACE = new DjinniTokenType("space");
IElementType STATIC = new DjinniTokenType("static");
IElementType STRING_LITERAL = new DjinniTokenType("string_literal");
IElementType TEXT = new DjinniTokenType("text");
......
......@@ -17,8 +17,12 @@ public class DjinniBasicTypeImpl extends ASTWrapperPsiElement implements DjinniB
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitBasicType(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitBasicType(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniConstMemberImpl extends ASTWrapperPsiElement implements Djinn
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstMember(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......@@ -58,4 +62,10 @@ public class DjinniConstMemberImpl extends ASTWrapperPsiElement implements Djinn
return findNotNullChildByType(SEMICOLON);
}
@Override
@NotNull
public PsiElement getConst() {
return findNotNullChildByType(CONST);
}
}
......@@ -16,8 +16,12 @@ public class DjinniConstNamedValueImpl extends DjinniReferenceImpl implements Dj
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstNamedValue(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstNamedValue(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniConstRecordMemberElementImpl extends ASTWrapperPsiElement imp
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstRecordMemberElement(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstRecordMemberElement(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -16,8 +16,12 @@ public class DjinniConstReferenceImpl extends DjinniReferenceImpl implements Dji
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstReference(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstReference(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniConstValueImpl extends ASTWrapperPsiElement implements Djinni
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitConstValue(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitConstValue(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,9 +17,25 @@ public class DjinniDerivingParamImpl extends ASTWrapperPsiElement implements Dji
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitDerivingParam(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitDerivingParam(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
@Override
@Nullable
public PsiElement getEqKeyword() {
return findChildByType(EQ_KEYWORD);
}
@Override
@Nullable
public PsiElement getOrd() {
return findChildByType(ORD);
}
}
......@@ -17,8 +17,12 @@ public class DjinniDerivingParamListImpl extends ASTWrapperPsiElement implements
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitDerivingParamList(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitDerivingParamList(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniEnumMemberImpl extends ASTWrapperPsiElement implements Djinni
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitEnumMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitEnumMember(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,9 +17,19 @@ public class DjinniEnumTypeVariantImpl extends ASTWrapperPsiElement implements D
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitEnumTypeVariant(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitEnumTypeVariant(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
@Override
@NotNull
public PsiElement getEnum() {
return findNotNullChildByType(ENUM);
}
}
......@@ -16,8 +16,12 @@ public class DjinniEnumValueImpl extends DjinniReferenceImpl implements DjinniEn
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitEnumValue(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitEnumValue(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniExternStatementImpl extends DjinniImportStatementBaseImpl imp
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitExternStatement(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitExternStatement(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......@@ -28,6 +32,12 @@ public class DjinniExternStatementImpl extends DjinniImportStatementBaseImpl imp
return findNotNullChildByType(AT);
}
@Override
@NotNull
public PsiElement getExtern() {
return findNotNullChildByType(EXTERN);
}
@Override
@NotNull
public PsiElement getStringLiteral() {
......
......@@ -17,8 +17,12 @@ public class DjinniGeneratorImpl extends ASTWrapperPsiElement implements DjinniG
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenerator(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenerator(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeDualParameterImpl extends ASTWrapperPsiElemen
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenericBasicTypeDualParameter(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenericBasicTypeDualParameter(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeImpl extends ASTWrapperPsiElement implements
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenericBasicType(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenericBasicType(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniGenericBasicTypeSingleParameterImpl extends ASTWrapperPsiElem
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitGenericBasicTypeSingleParameter(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitGenericBasicTypeSingleParameter(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniImportStatementImpl extends DjinniImportStatementBaseImpl imp
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitImportStatement(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitImportStatement(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......@@ -28,6 +32,12 @@ public class DjinniImportStatementImpl extends DjinniImportStatementBaseImpl imp
return findNotNullChildByType(AT);
}
@Override
@NotNull
public PsiElement getImport() {
return findNotNullChildByType(IMPORT);
}
@Override
@NotNull
public PsiElement getStringLiteral() {
......
......@@ -17,8 +17,12 @@ public class DjinniInterfaceFunctionParamImpl extends ASTWrapperPsiElement imple
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceFunctionParam(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceFunctionParam(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniInterfaceFunctionParamListImpl extends ASTWrapperPsiElement i
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceFunctionParamList(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceFunctionParamList(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniInterfaceMemberFunctionImpl extends ASTWrapperPsiElement impl
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceMemberFunction(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceMemberFunction(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......@@ -64,4 +68,10 @@ public class DjinniInterfaceMemberFunctionImpl extends ASTWrapperPsiElement impl
return findNotNullChildByType(IDENTIFIER);
}
@Override
@Nullable
public PsiElement getStatic() {
return findChildByType(STATIC);
}
}
......@@ -17,8 +17,12 @@ public class DjinniInterfaceMemberImpl extends ASTWrapperPsiElement implements D
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceMember(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniInterfaceTypeVariantImpl extends ASTWrapperPsiElement impleme
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitInterfaceTypeVariant(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitInterfaceTypeVariant(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......@@ -28,4 +32,10 @@ public class DjinniInterfaceTypeVariantImpl extends ASTWrapperPsiElement impleme
return PsiTreeUtil.getChildrenOfTypeAsList(this, DjinniGenerator.class);
}
@Override
@NotNull
public PsiElement getInterface() {
return findNotNullChildByType(INTERFACE);
}
}
......@@ -17,8 +17,12 @@ public class DjinniPredefinedTypeImpl extends ASTWrapperPsiElement implements Dj
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitPredefinedType(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitPredefinedType(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniRecordMemberImpl extends ASTWrapperPsiElement implements Djin
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitRecordMember(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitRecordMember(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniRecordMemberVariableImpl extends ASTWrapperPsiElement impleme
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitRecordMemberVariable(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitRecordMemberVariable(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -17,8 +17,12 @@ public class DjinniRecordTypeVariantImpl extends ASTWrapperPsiElement implements
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitRecordTypeVariant(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitRecordTypeVariant(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......@@ -28,4 +32,10 @@ public class DjinniRecordTypeVariantImpl extends ASTWrapperPsiElement implements
return PsiTreeUtil.getChildrenOfTypeAsList(this, DjinniGenerator.class);
}
@Override
@NotNull
public PsiElement getRecord() {
return findNotNullChildByType(RECORD);
}
}
......@@ -18,8 +18,12 @@ public class DjinniTypeDefinitionImpl extends DjinniNamedElementImpl implements
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitTypeDefinition(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitTypeDefinition(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -16,8 +16,12 @@ public class DjinniTypeReferenceImpl extends DjinniReferenceImpl implements Djin
super(node);
}
public void accept(@NotNull DjinniVisitor visitor) {
visitor.visitTypeReference(this);
}
public void accept(@NotNull PsiElementVisitor visitor) {
if (visitor instanceof DjinniVisitor) ((DjinniVisitor)visitor).visitTypeReference(this);
if (visitor instanceof DjinniVisitor) accept((DjinniVisitor)visitor);
else super.accept(visitor);
}
......
......@@ -46,6 +46,15 @@
space="regexp:\s+"
comment="regexp:#.*"
enum="enum"
record="record"
eq_keyword="eq"
ord="ord"
interface="interface"
static="static"
const="const"
extern="extern"
import="import"
string_literal="regexp:('([^'\\]|\\.)*'|\"([^\"\\]|\\\"|\\\'|\\)*\")"
number_literal="regexp:-?(\d+(\.\d*)?)|(\.\d+)"
identifier="regexp:\p{Alpha}\w*"
......@@ -72,7 +81,7 @@ generator ::= (PLUS 'c') | (PLUS 'j') | (PLUS 'o')
private enumDescription ::= enumTypeVariant LEFT_BLOCK_BRACE enumMember* RIGHT_BLOCK_BRACE
enumTypeVariant ::= 'enum'
enumTypeVariant ::= enum
enumMember ::= enumValue SEMICOLON
......@@ -86,11 +95,11 @@ enumValue ::= identifier {
private recordDescription ::= recordTypeVariant LEFT_BLOCK_BRACE recordMember* RIGHT_BLOCK_BRACE ['deriving' LEFT_PARAM_BRACE derivingParamList RIGHT_PARAM_BRACE]
recordTypeVariant ::= 'record' generator*
recordTypeVariant ::= record generator*
derivingParamList ::= (derivingParam ',' derivingParamList) | derivingParam
derivingParam ::= 'eq' | 'ord'
derivingParam ::= eq_keyword | ord
recordMember ::= constMember | recordMemberVariable
......@@ -100,11 +109,11 @@ recordMemberVariable ::= identifier COLON typeReference SEMICOLON
private interfaceDescription ::= interfaceTypeVariant LEFT_BLOCK_BRACE interfaceMember* RIGHT_BLOCK_BRACE
interfaceTypeVariant ::= 'interface' generator*
interfaceTypeVariant ::= interface generator*
interfaceMember ::= constMember | interfaceMemberFunction
interfaceMemberFunction ::= ['static'] identifier LEFT_PARAM_BRACE interfaceFunctionParamList? RIGHT_PARAM_BRACE [COLON typeReference] SEMICOLON
interfaceMemberFunction ::= [static] identifier LEFT_PARAM_BRACE interfaceFunctionParamList? RIGHT_PARAM_BRACE [COLON typeReference] SEMICOLON
interfaceFunctionParamList ::= (interfaceFunctionParam ',' interfaceFunctionParamList) | interfaceFunctionParam
......@@ -134,7 +143,7 @@ genericBasicTypeDualParameter ::= map LEFT_GENERICS_BRACE typeReference LIST_SEP
//
// const definitions
//
constMember ::= 'const' constNamedValue COLON typeReference EQ constValue SEMICOLON
constMember ::= const constNamedValue COLON typeReference EQ constValue SEMICOLON
constNamedValue ::= identifier {
mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniReferenceImpl"
......@@ -159,7 +168,7 @@ constRecordMemberElement ::= identifier EQ constValue
//
// import
//
importStatement ::= AT'import' string_literal {
importStatement ::= AT import string_literal {
mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniImportStatementBaseImpl"
implements="com.intellij.psi.PsiNamedElement"
methods=[getName setName getRangeOfPath getPath]
......@@ -168,7 +177,7 @@ importStatement ::= AT'import' string_literal {
//
// extern
//
externStatement ::= AT'extern' string_literal {
externStatement ::= AT extern string_literal {
mixin="com.dropbox.djinni.ideaplugin.psi.impl.DjinniImportStatementBaseImpl"
implements="com.intellij.psi.PsiNamedElement"
methods=[getName setName getRangeOfPath getPath]
......
package com.dropbox.djinni.ideaplugin;
import com.dropbox.djinni.ideaplugin.psi.DjinniTypes;
import com.intellij.lang.BracePair;
import com.intellij.lang.PairedBraceMatcher;
import com.intellij.psi.PsiFile;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class DjinniBraceMatcher implements PairedBraceMatcher {
public static @NotNull
BracePair[] PAIRS = new BracePair[]{
new BracePair(DjinniTypes.LEFT_BLOCK_BRACE, DjinniTypes.RIGHT_BLOCK_BRACE, false),
new BracePair(DjinniTypes.LEFT_GENERICS_BRACE, DjinniTypes.RIGHT_GENERICS_BRACE, false),
new BracePair(DjinniTypes.LEFT_PARAM_BRACE, DjinniTypes.RIGHT_PARAM_BRACE, false),
};
@NotNull
@Override
public BracePair[] getPairs() {
return PAIRS;
}
@Override
public boolean isPairedBracesAllowedBeforeType(@NotNull IElementType lbraceType, @Nullable IElementType contextType) {
return true;
}
@Override
public int getCodeConstructStart(PsiFile file, int openingBraceOffset) {
return openingBraceOffset;
}
}
......@@ -33,6 +33,7 @@ public class DjinniColorSettingsPage implements ColorSettingsPage {
private static final AttributesDescriptor[] DESCRIPTORS = new AttributesDescriptor[] {
new AttributesDescriptor("Comment", DjinniSyntaxHighlighter.COMMENT),
new AttributesDescriptor("Identifier", DjinniSyntaxHighlighter.IDENTIFIER),
new AttributesDescriptor("Keywords", DjinniSyntaxHighlighter.KEYWORDS),
new AttributesDescriptor("String literal", DjinniSyntaxHighlighter.STRING_LITERAL),
new AttributesDescriptor("Number literal", DjinniSyntaxHighlighter.NUMBER_LITERAL),
};
......
......@@ -23,6 +23,7 @@ import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull;
import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAttributesKey;
......@@ -31,14 +32,25 @@ import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAtt
* Created by jaetzold on 7/23/15.
*/
public class DjinniSyntaxHighlighter extends SyntaxHighlighterBase {
public static TokenSet KEYWORD_TOKENS = TokenSet.create(DjinniTypes.EQ_KEYWORD,
DjinniTypes.ENUM,
DjinniTypes.INTERFACE,
DjinniTypes.CONST,
DjinniTypes.EXTERN,
DjinniTypes.IMPORT,
DjinniTypes.ORD,
DjinniTypes.RECORD,
DjinniTypes.STATIC);
public static final TextAttributesKey STRING_LITERAL = createTextAttributesKey("DJINNI_STRING_LITERAL", DefaultLanguageHighlighterColors.STRING);
public static final TextAttributesKey KEYWORDS = createTextAttributesKey("DJINNI_KEYWORDS", DefaultLanguageHighlighterColors.KEYWORD);
public static final TextAttributesKey NUMBER_LITERAL = createTextAttributesKey("DJINNI_NUMBER_LITERAL", DefaultLanguageHighlighterColors.NUMBER);
public static final TextAttributesKey IDENTIFIER = createTextAttributesKey("DJINNI_IDENTIFIER", DefaultLanguageHighlighterColors.IDENTIFIER);
public static final TextAttributesKey COMMENT = createTextAttributesKey("DJINNI_COMMENT", DefaultLanguageHighlighterColors.LINE_COMMENT);
public static final TextAttributesKey BAD_CHARACTER = createTextAttributesKey("DJINNI_BAD_CHARACTER", HighlighterColors.BAD_CHARACTER);
private static final TextAttributesKey[] STRING_LITERAL_KEYS = new TextAttributesKey[]{STRING_LITERAL};
private static final TextAttributesKey[] KEYWORD_KEYS = new TextAttributesKey[]{KEYWORDS};
private static final TextAttributesKey[] NUMBER_LITERAL_KEYS = new TextAttributesKey[]{NUMBER_LITERAL};
private static final TextAttributesKey[] IDENTIFIER_KEYS = new TextAttributesKey[]{IDENTIFIER};
private static final TextAttributesKey[] COMMENT_KEYS = new TextAttributesKey[]{COMMENT};
......@@ -64,6 +76,8 @@ public class DjinniSyntaxHighlighter extends SyntaxHighlighterBase {
return COMMENT_KEYS;
} else if (tokenType.equals(TokenType.BAD_CHARACTER)) {
return BAD_CHAR_KEYS;
} else if (KEYWORD_TOKENS.contains(tokenType)) {
return KEYWORD_KEYS;
} else {
return EMPTY_KEYS;
}
......
......@@ -17,11 +17,9 @@ package com.dropbox.djinni.ideaplugin;
import com.dropbox.djinni.ideaplugin.psi.*;
import com.dropbox.djinni.ideaplugin.psi.impl.DjinniPsiImplUtil;
import com.intellij.lang.Language;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiManagerImpl;
import com.intellij.psi.search.FileTypeIndex;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiTreeUtil;
......@@ -30,8 +28,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by jaetzold on 7/27/15.
......@@ -123,7 +119,7 @@ public class DjinniUtil {
}
@NotNull
public static List<PsiElement> findAllExternalTypes(Project project, PsiElement visibilityContext) {
public static List<PsiElement> findAllExternalTypes(Project project, @Nullable PsiElement visibilityContext) {
List<PsiElement> result = new ArrayList<PsiElement>();
List<PsiFile> allExternalFiles = findAllExternalFiles(project, visibilityContext);
......@@ -273,7 +269,7 @@ public class DjinniUtil {
}
@NotNull
public static List<DjinniFile> findAllDjinniFiles(Project project, PsiElement visibilityContext) {
public static List<DjinniFile> findAllDjinniFiles(Project project, @Nullable PsiElement visibilityContext) {
List<DjinniFile> result = new ArrayList<DjinniFile>();
if (visibilityContext == null) {
......@@ -315,7 +311,7 @@ public class DjinniUtil {
}
@NotNull
public static List<PsiFile> findAllExternalFiles(Project project, @NotNull PsiElement visibilityContext) {
public static List<PsiFile> findAllExternalFiles(Project project, @Nullable PsiElement visibilityContext) {
List<PsiFile> result = new ArrayList<PsiFile>();
List<DjinniFile> visibleDjinniFiles = findAllDjinniFiles(project, visibilityContext);
......
......@@ -63,6 +63,12 @@ TEXT=[a-zA-Z_0-9]+
"set" { return SET; }
"optional" { return OPTIONAL; }
"map" { return MAP; }
"enum" { return ENUM; }
"record" { return RECORD; }
"eq" { return EQ_KEYWORD; }
"ord" { return ORD; }
"interface" { return INTERFACE; }
"static" { return STATIC; }
{SPACE} { return SPACE; }
{COMMENT} { return COMMENT; }
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
/* The following code was generated by JFlex 1.4.3 on 8/12/15 1:36 PM */
/* The following code was generated by JFlex 1.7.0 tweaked for IntelliJ platform */
package com.dropbox.djinni.ideaplugin;
import com.intellij.lexer.*;
......@@ -24,11 +24,14 @@ import static com.dropbox.djinni.ideaplugin.psi.DjinniTypes.*;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 8/12/15 1:36 PM from the specification file
* <tt>/Users/jaetzold/src/idea/plugins/djinni/src/com/dropbox/djinni/ideaplugin/_DjinniLexer.flex</tt>
* <a href="http://www.jflex.de/">JFlex</a> 1.7.0
* from the specification file <tt>_DjinniLexer.flex</tt>
*/
public class _DjinniLexer implements FlexLexer {
/** This character denotes the end of file */
public static final int YYEOF = -1;
/** initial size of the lookahead buffer */
private static final int ZZ_BUFFERSIZE = 16384;
......@@ -47,74 +50,125 @@ public class _DjinniLexer implements FlexLexer {
/**
* Translates characters to character classes
* Chosen bits are [11, 6, 4]
* Total runtime size is 14112 bytes
*/
private static final String ZZ_CMAP_PACKED =
"\11\0\1\1\1\2\1\3\1\1\1\1\22\0\1\1\1\0\1\7"+
"\1\4\3\0\1\5\1\27\1\30\1\0\1\22\1\21\1\10\1\12"+
"\1\0\12\11\1\17\1\20\1\25\1\16\1\26\1\0\1\31\32\15"+
"\1\0\1\6\2\0\1\14\1\0\1\42\3\15\1\36\3\15\1\33"+
"\2\15\1\32\1\43\1\41\1\37\1\40\2\15\1\34\1\35\6\15"+
"\1\23\1\0\1\24\54\0\1\13\12\0\1\13\4\0\1\13\5\0"+
"\27\13\1\0\37\13\1\0\u013f\13\31\0\162\13\4\0\14\13\16\0"+
"\5\13\11\0\1\13\213\0\1\13\13\0\1\13\1\0\3\13\1\0"+
"\1\13\1\0\24\13\1\0\54\13\1\0\46\13\1\0\5\13\4\0"+
"\202\13\10\0\105\13\1\0\46\13\2\0\2\13\6\0\20\13\41\0"+
"\46\13\2\0\1\13\7\0\47\13\110\0\33\13\5\0\3\13\56\0"+
"\32\13\5\0\13\13\43\0\2\13\1\0\143\13\1\0\1\13\17\0"+
"\2\13\7\0\2\13\12\0\3\13\2\0\1\13\20\0\1\13\1\0"+
"\36\13\35\0\3\13\60\0\46\13\13\0\1\13\u0152\0\66\13\3\0"+
"\1\13\22\0\1\13\7\0\12\13\43\0\10\13\2\0\2\13\2\0"+
"\26\13\1\0\7\13\1\0\1\13\3\0\4\13\3\0\1\13\36\0"+
"\2\13\1\0\3\13\16\0\2\13\23\0\6\13\4\0\2\13\2\0"+
"\26\13\1\0\7\13\1\0\2\13\1\0\2\13\1\0\2\13\37\0"+
"\4\13\1\0\1\13\23\0\3\13\20\0\11\13\1\0\3\13\1\0"+
"\26\13\1\0\7\13\1\0\2\13\1\0\5\13\3\0\1\13\22\0"+
"\1\13\17\0\2\13\43\0\10\13\2\0\2\13\2\0\26\13\1\0"+
"\7\13\1\0\2\13\1\0\5\13\3\0\1\13\36\0\2\13\1\0"+
"\3\13\17\0\1\13\21\0\1\13\1\0\6\13\3\0\3\13\1\0"+
"\4\13\3\0\2\13\1\0\1\13\1\0\2\13\3\0\2\13\3\0"+
"\3\13\3\0\10\13\1\0\3\13\113\0\10\13\1\0\3\13\1\0"+
"\27\13\1\0\12\13\1\0\5\13\46\0\2\13\43\0\10\13\1\0"+
"\3\13\1\0\27\13\1\0\12\13\1\0\5\13\3\0\1\13\40\0"+
"\1\13\1\0\2\13\43\0\10\13\1\0\3\13\1\0\27\13\1\0"+
"\20\13\46\0\2\13\43\0\22\13\3\0\30\13\1\0\11\13\1\0"+
"\1\13\2\0\7\13\72\0\60\13\1\0\2\13\14\0\7\13\72\0"+
"\2\13\1\0\1\13\2\0\2\13\1\0\1\13\2\0\1\13\6\0"+
"\4\13\1\0\7\13\1\0\3\13\1\0\1\13\1\0\1\13\2\0"+
"\2\13\1\0\4\13\1\0\2\13\11\0\1\13\2\0\5\13\1\0"+
"\1\13\25\0\2\13\42\0\1\13\77\0\10\13\1\0\42\13\35\0"+
"\4\13\164\0\42\13\1\0\5\13\1\0\2\13\45\0\6\13\112\0"+
"\46\13\12\0\51\13\7\0\132\13\5\0\104\13\5\0\122\13\6\0"+
"\7\13\1\0\77\13\1\0\1\13\1\0\4\13\2\0\7\13\1\0"+
"\1\13\1\0\4\13\2\0\47\13\1\0\1\13\1\0\4\13\2\0"+
"\37\13\1\0\1\13\1\0\4\13\2\0\7\13\1\0\1\13\1\0"+
"\4\13\2\0\7\13\1\0\7\13\1\0\27\13\1\0\37\13\1\0"+
"\1\13\1\0\4\13\2\0\7\13\1\0\47\13\1\0\23\13\105\0"+
"\125\13\14\0\u026c\13\2\0\10\13\12\0\32\13\5\0\113\13\25\0"+
"\15\13\1\0\4\13\16\0\22\13\16\0\22\13\16\0\15\13\1\0"+
"\3\13\17\0\64\13\43\0\1\13\4\0\1\13\103\0\130\13\10\0"+
"\51\13\127\0\35\13\63\0\36\13\2\0\5\13\u038b\0\154\13\224\0"+
"\234\13\4\0\132\13\6\0\26\13\2\0\6\13\2\0\46\13\2\0"+
"\6\13\2\0\10\13\1\0\1\13\1\0\1\13\1\0\1\13\1\0"+
"\37\13\2\0\65\13\1\0\7\13\1\0\1\13\3\0\3\13\1\0"+
"\7\13\3\0\4\13\2\0\6\13\4\0\15\13\5\0\3\13\1\0"+
"\7\13\164\0\1\13\15\0\1\13\202\0\1\13\4\0\1\13\2\0"+
"\12\13\1\0\1\13\3\0\5\13\6\0\1\13\1\0\1\13\1\0"+
"\1\13\1\0\4\13\1\0\3\13\1\0\7\13\3\0\3\13\5\0"+
"\5\13\u0ebb\0\2\13\52\0\5\13\5\0\2\13\4\0\126\13\6\0"+
"\3\13\1\0\132\13\1\0\4\13\5\0\50\13\4\0\136\13\21\0"+
"\30\13\70\0\20\13\u0200\0\u19b6\13\112\0\u51a6\13\132\0\u048d\13\u0773\0"+
"\u2ba4\13\u215c\0\u012e\13\2\0\73\13\225\0\7\13\14\0\5\13\5\0"+
"\1\13\1\0\12\13\1\0\15\13\1\0\5\13\1\0\1\13\1\0"+
"\2\13\1\0\2\13\1\0\154\13\41\0\u016b\13\22\0\100\13\2\0"+
"\66\13\50\0\14\13\164\0\5\13\1\0\207\13\44\0\32\13\6\0"+
"\32\13\13\0\131\13\3\0\6\13\2\0\6\13\2\0\6\13\2\0"+
"\3\13\43\0";
/**
* Translates characters to character classes
*/
private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
public static int ZZ_CMAP(int ch) {
return ZZ_CMAP_A[(ZZ_CMAP_Y[(ZZ_CMAP_Z[ch>>10]<<6)|((ch>>4)&0x3f)]<<4)|(ch&0xf)];
}
/* The ZZ_CMAP_Z table has 1088 entries */
static final char ZZ_CMAP_Z[] = zzUnpackCMap(
"\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\2\11\1\12\1\13\6\14\1\15\23\14\1\16"+
"\1\14\1\17\1\20\12\14\1\21\10\11\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1"+
"\32\1\33\1\34\1\35\2\11\1\14\1\36\3\11\1\37\10\11\1\40\1\41\5\14\1\42\1\43"+
"\11\11\1\44\2\11\1\45\5\11\1\46\4\11\1\47\1\50\4\11\51\14\1\51\3\14\1\52\1"+
"\53\4\14\1\54\12\11\1\55\u0381\11");
/* The ZZ_CMAP_Y table has 2944 entries */
static final char ZZ_CMAP_Y[] = zzUnpackCMap(
"\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\1\1\11\1\12\1\13\1\14\1\13\1\14\34"+
"\13\1\15\1\16\1\17\10\1\1\20\1\21\1\13\1\22\4\13\1\23\10\13\1\24\12\13\1\25"+
"\1\13\1\26\1\25\1\13\1\27\4\1\1\13\1\30\1\31\2\1\2\13\1\30\1\1\1\32\1\25\5"+
"\13\1\33\1\34\1\35\1\1\1\36\1\13\1\1\1\37\5\13\1\40\1\41\1\42\1\13\1\30\1"+
"\43\1\13\1\44\1\45\1\1\1\13\1\46\4\1\1\13\1\47\4\1\1\50\2\13\1\51\1\1\1\52"+
"\1\16\1\25\1\53\1\54\1\55\1\56\1\57\1\60\2\16\1\61\1\54\1\55\1\62\1\1\1\63"+
"\1\1\1\64\1\65\1\22\1\55\1\66\1\1\1\67\1\16\1\70\1\71\1\54\1\55\1\66\1\1\1"+
"\60\1\16\1\41\1\72\1\73\1\74\1\75\1\1\1\67\2\1\1\76\1\36\1\55\1\51\1\1\1\77"+
"\1\16\1\1\1\100\1\36\1\55\1\101\1\1\1\57\1\16\1\102\1\76\1\36\1\13\1\103\1"+
"\57\1\104\1\16\1\42\1\105\1\106\1\13\1\107\1\110\3\1\1\25\2\13\1\111\1\110"+
"\3\1\1\112\1\113\1\114\1\115\1\116\1\117\2\1\1\67\3\1\1\120\1\13\1\121\1\1"+
"\1\122\7\1\2\13\1\30\1\123\1\1\1\124\1\125\1\126\1\127\1\1\2\13\1\130\2\13"+
"\1\131\24\13\1\132\1\133\2\13\1\132\2\13\1\134\1\135\1\14\3\13\1\135\3\13"+
"\1\30\2\1\1\13\1\1\5\13\1\136\1\25\45\13\1\137\1\13\1\25\1\30\4\13\1\30\1"+
"\140\1\141\1\16\1\13\1\16\1\13\1\16\1\141\1\67\3\13\1\142\1\1\1\143\4\1\5"+
"\13\1\27\1\144\1\13\1\145\4\13\1\40\1\13\1\146\3\1\1\13\1\147\1\150\2\13\1"+
"\151\1\13\1\75\3\1\1\13\1\110\3\13\1\150\4\1\1\152\5\1\1\105\2\13\1\142\1"+
"\153\3\1\1\154\1\13\1\155\1\42\2\13\1\40\1\1\2\13\1\142\1\1\1\37\1\42\1\13"+
"\1\147\1\46\5\1\1\156\1\157\14\13\4\1\21\13\1\136\2\13\1\136\1\160\1\13\1"+
"\147\3\13\1\161\1\162\1\163\1\121\1\162\2\1\1\164\4\1\1\165\1\1\1\121\6\1"+
"\1\166\1\167\1\170\1\171\1\172\3\1\1\173\147\1\2\13\1\146\2\13\1\146\10\13"+
"\1\174\1\175\2\13\1\130\3\13\1\176\1\1\1\13\1\110\4\177\4\1\1\123\35\1\1\200"+
"\2\1\1\201\1\25\4\13\1\202\1\25\4\13\1\131\1\105\1\13\1\147\1\25\4\13\1\146"+
"\1\1\1\13\1\30\3\1\1\13\40\1\133\13\1\40\4\1\135\13\1\40\2\1\10\13\1\121\4"+
"\1\2\13\1\147\20\13\1\121\1\13\1\203\1\1\2\13\1\146\1\123\1\13\1\147\4\13"+
"\1\40\2\1\1\204\1\205\5\13\1\206\1\13\1\146\1\27\3\1\1\204\1\207\1\13\1\31"+
"\1\1\3\13\1\142\1\205\2\13\1\142\3\1\1\210\1\42\1\13\1\40\1\13\1\110\1\1\1"+
"\13\1\121\1\50\2\13\1\31\1\123\1\1\1\211\1\212\2\13\1\46\1\1\1\213\1\1\1\13"+
"\1\214\3\13\1\215\1\216\1\217\1\30\1\64\1\220\1\221\1\177\2\13\1\131\1\40"+
"\7\13\1\31\1\1\72\13\1\142\1\13\1\222\2\13\1\151\20\1\26\13\1\147\6\13\1\75"+
"\2\1\1\110\1\223\1\55\1\224\1\225\6\13\1\16\1\1\1\154\25\13\1\147\1\1\4\13"+
"\1\205\2\13\1\27\2\1\1\151\7\1\1\211\7\13\1\121\2\1\1\25\1\30\1\25\1\30\1"+
"\226\4\13\1\146\1\227\1\230\2\1\1\231\1\13\1\14\1\232\2\147\2\1\7\13\1\30"+
"\30\1\1\13\1\121\3\13\1\67\2\1\2\13\1\1\1\13\1\233\2\13\1\40\1\13\1\147\2"+
"\13\1\234\3\1\11\13\1\147\1\1\2\13\1\234\1\13\1\151\2\13\1\27\3\13\1\142\11"+
"\1\23\13\1\110\1\13\1\40\1\27\11\1\1\235\2\13\1\236\1\13\1\40\1\13\1\110\1"+
"\13\1\146\4\1\1\13\1\237\1\13\1\40\1\13\1\75\4\1\3\13\1\240\4\1\1\67\1\241"+
"\1\13\1\142\2\1\1\13\1\121\1\13\1\121\2\1\1\120\1\13\1\150\1\1\3\13\1\40\1"+
"\13\1\40\1\13\1\31\1\13\1\16\6\1\4\13\1\46\3\1\3\13\1\31\3\13\1\31\60\1\1"+
"\154\2\13\1\27\4\1\1\154\2\13\2\1\1\13\1\46\1\1\1\154\1\13\1\110\2\1\2\13"+
"\1\242\1\154\2\13\1\31\1\243\1\244\2\1\1\13\1\22\1\151\5\1\1\245\1\246\1\46"+
"\2\13\1\146\2\1\1\71\1\54\1\55\1\66\1\1\1\247\1\16\11\1\3\13\1\150\1\250\3"+
"\1\3\13\1\1\1\251\13\1\2\13\1\146\2\1\1\252\2\1\3\13\1\1\1\253\3\1\2\13\1"+
"\30\5\1\1\13\1\75\30\1\4\13\1\1\1\123\34\1\3\13\1\46\20\1\1\55\1\13\1\146"+
"\1\1\1\67\2\1\1\205\1\13\67\1\71\13\1\75\16\1\14\13\1\142\53\1\2\13\1\146"+
"\75\1\44\13\1\110\33\1\43\13\1\46\1\13\1\146\7\1\1\13\1\147\1\1\3\13\1\1\1"+
"\142\1\1\1\154\1\254\1\13\67\1\4\13\1\150\1\67\3\1\1\154\4\1\1\67\1\1\76\13"+
"\1\121\1\1\57\13\1\31\20\1\1\16\77\1\6\13\1\30\1\121\1\46\1\75\66\1\5\13\1"+
"\211\3\13\1\141\1\255\1\256\1\257\3\13\1\260\1\261\1\13\1\262\1\263\1\36\24"+
"\13\1\264\1\13\1\36\1\131\1\13\1\131\1\13\1\211\1\13\1\211\1\146\1\13\1\146"+
"\1\13\1\55\1\13\1\55\1\13\1\213\3\1\14\13\1\150\3\1\4\13\1\142\113\1\1\257"+
"\1\13\1\265\1\266\1\267\1\270\1\271\1\272\1\273\1\151\1\274\1\151\24\1\55"+
"\13\1\110\2\1\103\13\1\150\15\13\1\147\150\13\1\16\25\1\41\13\1\147\36\1");
/* The ZZ_CMAP_A table has 3024 entries */
static final char ZZ_CMAP_A[] = zzUnpackCMap(
"\11\0\1\2\1\1\1\3\2\1\22\0\1\2\1\0\1\10\1\4\3\0\1\6\1\30\1\31\1\0\1\23\1\22"+
"\1\11\1\13\1\0\12\12\1\20\1\21\1\26\1\17\1\27\1\0\1\32\32\16\1\0\1\7\2\0\1"+
"\15\1\0\1\43\1\16\1\47\1\50\1\37\1\52\2\16\1\34\2\16\1\33\1\44\1\42\1\40\1"+
"\41\1\51\1\46\1\35\1\36\1\45\5\16\1\24\1\0\1\25\7\0\1\5\24\0\1\14\12\0\1\14"+
"\4\0\1\14\5\0\27\14\1\0\12\14\4\0\14\14\16\0\5\14\7\0\1\14\1\0\1\14\1\0\5"+
"\14\1\0\2\14\2\0\4\14\1\0\1\14\6\0\1\14\1\0\3\14\1\0\1\14\1\0\4\14\1\0\23"+
"\14\1\0\13\14\10\0\6\14\1\0\26\14\2\0\1\14\6\0\10\14\10\0\13\14\5\0\3\14\33"+
"\0\6\14\1\0\1\14\17\0\2\14\7\0\2\14\12\0\3\14\2\0\2\14\1\0\16\14\15\0\11\14"+
"\13\0\1\14\30\0\6\14\4\0\2\14\4\0\1\14\5\0\6\14\4\0\1\14\11\0\1\14\3\0\1\14"+
"\7\0\11\14\7\0\5\14\1\0\10\14\6\0\26\14\3\0\1\14\2\0\1\14\7\0\11\14\4\0\10"+
"\14\2\0\2\14\2\0\26\14\1\0\7\14\1\0\1\14\3\0\4\14\3\0\1\14\20\0\1\14\15\0"+
"\2\14\1\0\1\14\5\0\6\14\4\0\2\14\1\0\2\14\1\0\2\14\1\0\2\14\17\0\4\14\1\0"+
"\1\14\3\0\3\14\20\0\11\14\1\0\2\14\1\0\2\14\1\0\5\14\3\0\1\14\2\0\1\14\30"+
"\0\1\14\13\0\10\14\2\0\1\14\3\0\1\14\1\0\6\14\3\0\3\14\1\0\4\14\3\0\2\14\1"+
"\0\1\14\1\0\2\14\3\0\2\14\3\0\3\14\3\0\14\14\13\0\10\14\1\0\2\14\10\0\3\14"+
"\5\0\1\14\4\0\10\14\1\0\6\14\1\0\5\14\3\0\1\14\3\0\2\14\15\0\13\14\2\0\1\14"+
"\6\0\3\14\10\0\1\14\5\0\22\14\3\0\10\14\1\0\11\14\1\0\1\14\2\0\7\14\11\0\1"+
"\14\1\0\2\14\15\0\2\14\1\0\1\14\2\0\2\14\1\0\1\14\2\0\1\14\6\0\4\14\1\0\7"+
"\14\1\0\3\14\1\0\1\14\1\0\1\14\2\0\2\14\1\0\4\14\1\0\2\14\11\0\1\14\2\0\5"+
"\14\1\0\1\14\25\0\14\14\1\0\24\14\13\0\5\14\22\0\7\14\4\0\4\14\3\0\1\14\3"+
"\0\2\14\7\0\3\14\4\0\15\14\14\0\1\14\1\0\6\14\1\0\1\14\5\0\1\14\2\0\13\14"+
"\1\0\15\14\1\0\4\14\2\0\7\14\1\0\1\14\1\0\4\14\2\0\1\14\1\0\4\14\2\0\7\14"+
"\1\0\1\14\1\0\4\14\2\0\16\14\2\0\6\14\2\0\15\14\2\0\1\14\1\0\10\14\7\0\15"+
"\14\1\0\6\14\23\0\1\14\4\0\1\14\3\0\5\14\2\0\22\14\1\0\1\14\5\0\17\14\1\0"+
"\16\14\2\0\5\14\13\0\14\14\13\0\1\14\15\0\7\14\7\0\16\14\15\0\2\14\11\0\4"+
"\14\1\0\4\14\3\0\2\14\11\0\10\14\1\0\1\14\1\0\1\14\1\0\1\14\1\0\6\14\1\0\7"+
"\14\1\0\1\14\3\0\3\14\1\0\7\14\3\0\4\14\2\0\6\14\14\0\2\5\7\0\1\14\15\0\1"+
"\14\2\0\1\14\4\0\1\14\2\0\12\14\1\0\1\14\3\0\5\14\6\0\1\14\1\0\1\14\1\0\1"+
"\14\1\0\4\14\1\0\13\14\2\0\4\14\5\0\5\14\4\0\1\14\4\0\2\14\13\0\5\14\6\0\4"+
"\14\3\0\2\14\14\0\10\14\7\0\10\14\1\0\7\14\6\0\2\14\12\0\5\14\5\0\2\14\3\0"+
"\7\14\6\0\3\14\12\0\2\14\13\0\11\14\2\0\27\14\2\0\7\14\1\0\3\14\1\0\4\14\1"+
"\0\4\14\2\0\6\14\3\0\1\14\1\0\1\14\2\0\5\14\1\0\12\14\12\0\5\14\1\0\3\14\1"+
"\0\10\14\4\0\7\14\3\0\1\14\3\0\2\14\1\0\1\14\3\0\2\14\2\0\5\14\2\0\1\14\1"+
"\0\1\14\30\0\3\14\3\0\6\14\2\0\6\14\2\0\6\14\11\0\7\14\4\0\5\14\3\0\5\14\5"+
"\0\1\14\1\0\10\14\1\0\5\14\1\0\1\14\1\0\2\14\1\0\2\14\1\0\12\14\6\0\12\14"+
"\2\0\6\14\2\0\6\14\2\0\6\14\2\0\3\14\3\0\14\14\1\0\16\14\1\0\2\14\1\0\2\14"+
"\1\0\10\14\6\0\4\14\4\0\16\14\2\0\1\14\1\0\14\14\1\0\2\14\3\0\1\14\2\0\4\14"+
"\1\0\2\14\12\0\10\14\6\0\6\14\1\0\3\14\1\0\12\14\3\0\1\14\12\0\4\14\25\0\1"+
"\14\1\0\1\14\3\0\7\14\1\0\1\14\1\0\4\14\1\0\17\14\1\0\2\14\14\0\3\14\7\0\4"+
"\14\11\0\2\14\1\0\1\14\20\0\4\14\10\0\1\14\13\0\10\14\5\0\3\14\2\0\1\14\2"+
"\0\2\14\2\0\4\14\1\0\14\14\1\0\1\14\1\0\7\14\1\0\21\14\1\0\4\14\2\0\10\14"+
"\1\0\7\14\1\0\14\14\1\0\4\14\1\0\5\14\1\0\1\14\3\0\14\14\2\0\10\14\1\0\2\14"+
"\1\0\1\14\2\0\1\14\1\0\12\14\1\0\4\14\1\0\1\14\1\0\1\14\6\0\1\14\4\0\1\14"+
"\1\0\1\14\1\0\1\14\1\0\3\14\1\0\2\14\1\0\1\14\2\0\1\14\1\0\1\14\1\0\1\14\1"+
"\0\1\14\1\0\1\14\1\0\2\14\1\0\1\14\2\0\4\14\1\0\7\14\1\0\4\14\1\0\4\14\1\0"+
"\1\14\1\0\12\14\1\0\5\14\1\0\3\14\1\0\5\14\1\0\5\14");
/**
* Translates DFA states to action switch labels.
......@@ -124,12 +178,13 @@ public class _DjinniLexer implements FlexLexer {
private static final String ZZ_ACTION_PACKED_0 =
"\1\0\1\1\1\2\1\3\1\4\3\1\1\5\1\1"+
"\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+
"\1\16\1\17\1\20\1\21\1\22\1\23\4\6\1\0"+
"\1\24\3\0\2\5\4\6\1\24\1\6\1\25\1\6"+
"\1\26\1\27\4\6\1\30";
"\1\16\1\17\1\20\1\21\1\22\1\23\7\6\1\0"+
"\1\24\3\0\2\5\5\6\1\25\4\6\1\24\3\6"+
"\1\26\2\6\1\27\1\30\1\6\1\31\2\6\1\32"+
"\7\6\1\33\1\6\1\34\3\6\1\35\1\36";
private static int [] zzUnpackAction() {
int [] result = new int[50];
int [] result = new int[77];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
......@@ -154,16 +209,19 @@ public class _DjinniLexer implements FlexLexer {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\44\0\110\0\154\0\220\0\264\0\330\0\374"+
"\0\u0120\0\u0144\0\u0168\0\u018c\0\44\0\44\0\44\0\44"+
"\0\44\0\44\0\44\0\44\0\44\0\44\0\44\0\44"+
"\0\u01b0\0\u01d4\0\u01f8\0\u021c\0\264\0\44\0\u0240\0\330"+
"\0\u0264\0\u0288\0\u0144\0\u02ac\0\u02d0\0\u02f4\0\u0318\0\330"+
"\0\u033c\0\u0168\0\u0360\0\u0168\0\u0168\0\u0384\0\u03a8\0\u03cc"+
"\0\u03f0\0\u0168";
"\0\0\0\53\0\126\0\201\0\254\0\327\0\u0102\0\u012d"+
"\0\u0158\0\u0183\0\u01ae\0\u01d9\0\53\0\53\0\53\0\53"+
"\0\53\0\53\0\53\0\53\0\53\0\53\0\53\0\53"+
"\0\u0204\0\u022f\0\u025a\0\u0285\0\u02b0\0\u02db\0\u0306\0\327"+
"\0\53\0\u0331\0\u0102\0\u035c\0\u0387\0\u0183\0\u03b2\0\u03dd"+
"\0\u0408\0\u0433\0\u045e\0\u01ae\0\u0489\0\u04b4\0\u04df\0\u050a"+
"\0\u0102\0\u0535\0\u0560\0\u058b\0\u01ae\0\u05b6\0\u05e1\0\u01ae"+
"\0\u01ae\0\u060c\0\u01ae\0\u0637\0\u0662\0\u01ae\0\u068d\0\u06b8"+
"\0\u06e3\0\u070e\0\u0739\0\u0764\0\u078f\0\u01ae\0\u07ba\0\u01ae"+
"\0\u07e5\0\u0810\0\u083b\0\u01ae\0\u01ae";
private static int [] zzUnpackRowMap() {
int [] result = new int[50];
int [] result = new int[77];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
......@@ -186,34 +244,57 @@ public class _DjinniLexer implements FlexLexer {
private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
"\1\2\2\3\1\4\1\5\1\6\1\2\1\7\1\10"+
"\1\11\1\12\1\13\1\14\1\13\1\15\1\16\1\17"+
"\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+
"\1\30\1\31\1\13\1\32\2\13\1\33\3\13\1\34"+
"\45\0\2\3\1\4\41\0\3\4\40\0\2\5\1\0"+
"\41\5\5\35\1\36\1\37\35\35\6\40\1\41\1\36"+
"\34\40\11\0\1\42\43\0\1\11\1\43\1\0\2\14"+
"\14\0\12\14\11\0\1\43\43\0\1\13\2\0\2\13"+
"\14\0\12\13\11\0\1\14\2\0\2\14\14\0\12\14"+
"\11\0\1\13\2\0\2\13\14\0\1\13\1\44\10\13"+
"\11\0\1\13\2\0\2\13\14\0\4\13\1\45\5\13"+
"\11\0\1\13\2\0\2\13\14\0\6\13\1\46\3\13"+
"\11\0\1\13\2\0\2\13\14\0\10\13\1\47\1\13"+
"\2\35\1\0\41\35\6\40\1\41\1\50\34\40\11\0"+
"\1\42\1\43\42\0\1\13\2\0\2\13\14\0\2\13"+
"\1\51\7\13\11\0\1\13\2\0\2\13\14\0\3\13"+
"\1\52\6\13\11\0\1\13\2\0\2\13\14\0\3\13"+
"\1\53\6\13\11\0\1\13\2\0\2\13\14\0\6\13"+
"\1\54\3\13\11\0\1\13\2\0\2\13\14\0\3\13"+
"\1\55\6\13\11\0\1\13\2\0\2\13\14\0\1\13"+
"\1\56\10\13\11\0\1\13\2\0\2\13\14\0\5\13"+
"\1\57\4\13\11\0\1\13\2\0\2\13\14\0\7\13"+
"\1\60\2\13\11\0\1\13\2\0\2\13\14\0\10\13"+
"\1\61\1\13\11\0\1\13\2\0\2\13\14\0\1\62"+
"\11\13";
"\1\2\2\3\1\4\1\5\1\2\1\6\1\2\1\7"+
"\1\10\1\11\1\12\1\13\1\14\1\13\1\15\1\16"+
"\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+
"\1\27\1\30\1\31\1\32\1\33\1\13\1\34\1\35"+
"\3\13\1\36\1\13\1\37\4\13\54\0\2\3\1\4"+
"\50\0\3\4\47\0\1\5\1\0\1\5\1\0\1\5"+
"\1\0\45\5\6\40\1\41\1\42\43\40\7\43\1\44"+
"\1\41\42\43\12\0\1\45\52\0\1\11\1\46\1\0"+
"\2\14\14\0\20\14\12\0\1\46\52\0\1\13\2\0"+
"\2\13\14\0\20\13\12\0\1\14\2\0\2\14\14\0"+
"\20\14\12\0\1\13\2\0\2\13\14\0\1\13\1\47"+
"\16\13\12\0\1\13\2\0\2\13\14\0\7\13\1\50"+
"\10\13\12\0\1\13\2\0\2\13\14\0\3\13\1\51"+
"\1\52\13\13\12\0\1\13\2\0\2\13\14\0\7\13"+
"\1\53\6\13\1\54\1\13\12\0\1\13\2\0\2\13"+
"\14\0\6\13\1\55\4\13\1\56\4\13\12\0\1\13"+
"\2\0\2\13\14\0\10\13\1\57\7\13\12\0\1\13"+
"\2\0\2\13\14\0\4\13\1\60\13\13\1\40\1\0"+
"\1\40\1\0\1\40\1\0\45\40\7\43\1\44\1\61"+
"\42\43\12\0\1\45\1\46\51\0\1\13\2\0\2\13"+
"\14\0\2\13\1\62\15\13\12\0\1\13\2\0\2\13"+
"\14\0\3\13\1\63\14\13\12\0\1\13\2\0\2\13"+
"\14\0\10\13\1\64\7\13\12\0\1\13\2\0\2\13"+
"\14\0\3\13\1\65\14\13\12\0\1\13\2\0\2\13"+
"\14\0\12\13\1\66\5\13\12\0\1\13\2\0\2\13"+
"\14\0\3\13\1\67\14\13\12\0\1\13\2\0\2\13"+
"\14\0\15\13\1\70\2\13\12\0\1\13\2\0\2\13"+
"\14\0\6\13\1\71\11\13\12\0\1\13\2\0\2\13"+
"\14\0\14\13\1\72\3\13\12\0\1\13\2\0\2\13"+
"\14\0\3\13\1\73\14\13\12\0\1\13\2\0\2\13"+
"\14\0\4\13\1\74\13\13\12\0\1\13\2\0\2\13"+
"\14\0\3\13\1\75\14\13\12\0\1\13\2\0\2\13"+
"\14\0\11\13\1\76\6\13\12\0\1\13\2\0\2\13"+
"\14\0\1\13\1\77\16\13\12\0\1\13\2\0\2\13"+
"\14\0\5\13\1\100\12\13\12\0\1\13\2\0\2\13"+
"\14\0\13\13\1\101\4\13\12\0\1\13\2\0\2\13"+
"\14\0\1\13\1\102\16\13\12\0\1\13\2\0\2\13"+
"\14\0\5\13\1\103\12\13\12\0\1\13\2\0\2\13"+
"\14\0\13\13\1\104\4\13\12\0\1\13\2\0\2\13"+
"\14\0\17\13\1\105\12\0\1\13\2\0\2\13\14\0"+
"\14\13\1\106\3\13\12\0\1\13\2\0\2\13\14\0"+
"\7\13\1\107\10\13\12\0\1\13\2\0\2\13\14\0"+
"\15\13\1\110\2\13\12\0\1\13\2\0\2\13\14\0"+
"\10\13\1\111\7\13\12\0\1\13\2\0\2\13\14\0"+
"\10\13\1\112\7\13\12\0\1\13\2\0\2\13\14\0"+
"\14\13\1\113\3\13\12\0\1\13\2\0\2\13\14\0"+
"\1\114\17\13\12\0\1\13\2\0\2\13\14\0\4\13"+
"\1\115\13\13";
private static int [] zzUnpackTrans() {
int [] result = new int[1044];
int [] result = new int[2150];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
......@@ -237,12 +318,9 @@ public class _DjinniLexer implements FlexLexer {
private static final int ZZ_UNKNOWN_ERROR = 0;
private static final int ZZ_NO_MATCH = 1;
private static final int ZZ_PUSHBACK_2BIG = 2;
private static final char[] EMPTY_BUFFER = new char[0];
private static final int YYEOF = -1;
private static java.io.Reader zzReader = null; // Fake
/* error messages for the codes above */
private static final String ZZ_ERROR_MSG[] = {
private static final String[] ZZ_ERROR_MSG = {
"Unknown internal scanner error",
"Error: could not match input",
"Error: pushback value was too large"
......@@ -254,11 +332,11 @@ public class _DjinniLexer implements FlexLexer {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\1\0\1\11\12\1\14\11\4\1\1\0\1\11\3\0"+
"\21\1";
"\1\0\1\11\12\1\14\11\7\1\1\0\1\11\3\0"+
"\51\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[50];
int [] result = new int[77];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
......@@ -276,6 +354,9 @@ public class _DjinniLexer implements FlexLexer {
return j;
}
/** the input device */
private java.io.Reader zzReader;
/** the current state of the DFA */
private int zzState;
......@@ -286,15 +367,9 @@ public class _DjinniLexer implements FlexLexer {
the source of the yytext() string */
private CharSequence zzBuffer = "";
/** this buffer may contains the current text array to be matched when it is cheap to acquire it */
private char[] zzBufferArray;
/** the textposition at the last accepting state */
private int zzMarkedPos;
/** the textposition at the last state to be included in yytext */
private int zzPushbackPos;
/** the current text position in the buffer */
private int zzCurrentPos;
......@@ -313,6 +388,9 @@ public class _DjinniLexer implements FlexLexer {
/** zzAtEOF == true <=> the scanner is at the EOF */
private boolean zzAtEOF;
/** denotes if the user-EOF-code has already been executed */
private boolean zzEOFDone;
/* user code: */
public _DjinniLexer() {
this((java.io.Reader)null);
......@@ -336,10 +414,14 @@ public class _DjinniLexer implements FlexLexer {
* @return the unpacked character translation table
*/
private static char [] zzUnpackCMap(String packed) {
char [] map = new char[0x10000];
int size = 0;
for (int i = 0, length = packed.length(); i < length; i += 2) {
size += packed.charAt(i);
}
char[] map = new char[size];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 1204) {
while (i < packed.length()) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
......@@ -347,19 +429,17 @@ public class _DjinniLexer implements FlexLexer {
return map;
}
public final int getTokenStart(){
public final int getTokenStart() {
return zzStartRead;
}
public final int getTokenEnd(){
public final int getTokenEnd() {
return getTokenStart() + yylength();
}
public void reset(CharSequence buffer, int start, int end,int initialState){
public void reset(CharSequence buffer, int start, int end, int initialState) {
zzBuffer = buffer;
zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
zzCurrentPos = zzMarkedPos = zzStartRead = start;
zzPushbackPos = 0;
zzAtEOF = false;
zzAtBOL = true;
zzEndRead = end;
......@@ -416,7 +496,7 @@ public class _DjinniLexer implements FlexLexer {
* @return the character at position pos
*/
public final char yycharat(int pos) {
return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos);
return zzBuffer.charAt(zzStartRead+pos);
}
......@@ -429,7 +509,7 @@ public class _DjinniLexer implements FlexLexer {
/**
* Reports an error that occurred while scanning.
* Reports an error that occured while scanning.
*
* In a wellformed scanner (no or only correct usage of
* yypushback(int) and a match-all fallback rule) this method
......@@ -487,8 +567,6 @@ public class _DjinniLexer implements FlexLexer {
int zzMarkedPosL;
int zzEndReadL = zzEndRead;
CharSequence zzBufferL = zzBuffer;
char[] zzBufferArrayL = zzBufferArray;
char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
......@@ -503,12 +581,20 @@ public class _DjinniLexer implements FlexLexer {
zzState = ZZ_LEXSTATE[zzLexicalState];
// set up zzAction for empty match case:
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
}
zzForAction: {
while (true) {
if (zzCurrentPosL < zzEndReadL)
zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
if (zzCurrentPosL < zzEndReadL) {
zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
zzCurrentPosL += Character.charCount(zzInput);
}
else if (zzAtEOF) {
zzInput = YYEOF;
break zzForAction;
......@@ -528,14 +614,15 @@ public class _DjinniLexer implements FlexLexer {
break zzForAction;
}
else {
zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL/*, zzEndReadL*/);
zzCurrentPosL += Character.charCount(zzInput);
}
}
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
int zzNext = zzTransL[ zzRowMapL[zzState] + ZZ_CMAP(zzInput) ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
int zzAttributes = zzAttrL[zzState];
zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
zzMarkedPosL = zzCurrentPosL;
......@@ -548,109 +635,163 @@ public class _DjinniLexer implements FlexLexer {
// store back cached position
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 17:
{ return LEFT_PARAM_BRACE;
}
case 25: break;
case 14:
{ return RIGHT_BLOCK_BRACE;
}
case 26: break;
case 4:
{ return COMMENT;
}
case 27: break;
case 22:
{ return MAP;
}
case 28: break;
case 6:
{ return IDENTIFIER;
}
case 29: break;
case 24:
{ return OPTIONAL;
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
return null;
}
case 30: break;
else {
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 1:
{ return com.intellij.psi.TokenType.BAD_CHARACTER;
}
// fall through
case 31: break;
case 12:
{ return PLUS;
case 2:
{ return com.intellij.psi.TokenType.WHITE_SPACE;
}
// fall through
case 32: break;
case 11:
{ return LIST_SEPARATOR;
case 3:
{ return SPACE;
}
// fall through
case 33: break;
case 9:
{ return COLON;
case 4:
{ return COMMENT;
}
// fall through
case 34: break;
case 20:
{ return STRING_LITERAL;
case 5:
{ return NUMBER_LITERAL;
}
// fall through
case 35: break;
case 13:
{ return LEFT_BLOCK_BRACE;
case 6:
{ return IDENTIFIER;
}
// fall through
case 36: break;
case 19:
{ return AT;
case 7:
{ return TEXT;
}
// fall through
case 37: break;
case 21:
{ return SET;
case 8:
{ return EQ;
}
// fall through
case 38: break;
case 23:
{ return LIST;
case 9:
{ return COLON;
}
// fall through
case 39: break;
case 10:
{ return SEMICOLON;
}
// fall through
case 40: break;
case 18:
{ return RIGHT_PARAM_BRACE;
case 11:
{ return LIST_SEPARATOR;
}
// fall through
case 41: break;
case 15:
{ return LEFT_GENERICS_BRACE;
case 12:
{ return PLUS;
}
// fall through
case 42: break;
case 16:
{ return RIGHT_GENERICS_BRACE;
case 13:
{ return LEFT_BLOCK_BRACE;
}
// fall through
case 43: break;
case 8:
{ return EQ;
case 14:
{ return RIGHT_BLOCK_BRACE;
}
// fall through
case 44: break;
case 3:
{ return SPACE;
case 15:
{ return LEFT_GENERICS_BRACE;
}
// fall through
case 45: break;
case 7:
{ return TEXT;
case 16:
{ return RIGHT_GENERICS_BRACE;
}
// fall through
case 46: break;
case 5:
{ return NUMBER_LITERAL;
case 17:
{ return LEFT_PARAM_BRACE;
}
// fall through
case 47: break;
case 2:
{ return com.intellij.psi.TokenType.WHITE_SPACE;
case 18:
{ return RIGHT_PARAM_BRACE;
}
// fall through
case 48: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
return null;
case 19:
{ return AT;
}
else {
// fall through
case 49: break;
case 20:
{ return STRING_LITERAL;
}
// fall through
case 50: break;
case 21:
{ return EQ_KEYWORD;
}
// fall through
case 51: break;
case 22:
{ return SET;
}
// fall through
case 52: break;
case 23:
{ return ORD;
}
// fall through
case 53: break;
case 24:
{ return MAP;
}
// fall through
case 54: break;
case 25:
{ return LIST;
}
// fall through
case 55: break;
case 26:
{ return ENUM;
}
// fall through
case 56: break;
case 27:
{ return STATIC;
}
// fall through
case 57: break;
case 28:
{ return RECORD;
}
// fall through
case 58: break;
case 29:
{ return OPTIONAL;
}
// fall through
case 59: break;
case 30:
{ return INTERFACE;
}
// fall through
case 60: break;
default:
zzScanError(ZZ_NO_MATCH);
}
}
......
......@@ -20,6 +20,9 @@ import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* Created by jaetzold on 7/20/15.
*/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment