|
3 | 3 | * |
4 | 4 | * https://minecraftdev.org |
5 | 5 | * |
6 | | - * Copyright (c) 2017 minecraft-dev |
| 6 | + * Copyright (c) 2018 minecraft-dev |
7 | 7 | * |
8 | 8 | * MIT License |
9 | | - * |
10 | 9 | */ |
11 | 10 |
|
12 | 11 | { |
|
23 | 22 | elementTypeClass="com.demonwav.mcdev.platform.mcp.at.psi.AtElementType" |
24 | 23 | tokenTypeClass="com.demonwav.mcdev.platform.mcp.at.psi.AtTokenType" |
25 | 24 |
|
26 | | - tokens = [ |
27 | | - primitive="regexp:[ZBCSIFDJV]" |
28 | | - class_value="regexp:\[*([ZBCSIFDJ]|L[^;]+;)" |
29 | | - open_paren="(" |
30 | | - close_paren=")" |
31 | | - asterisk_element="regexp:*(\(*\))?" |
32 | | - keyword_element="regexp:(public|private|protected|default)([-+]f)?" |
33 | | - name_element="regexp:[a-zA-Z0-9_]+|<init>" |
34 | | - class_name_element="regexp:[a-zA-Z_$0-9\.]*[a-zA-Z_$0-9]" |
35 | | - comment="regexp:#.*" |
36 | | - crlf="regexp:\n|\r|\r\n" |
37 | | - ] |
38 | | - |
39 | | - // |
40 | | - // Mixins |
41 | | - // |
42 | | - |
43 | | - mixin ("function") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtFunctionImplMixin" |
44 | | - implements ("function") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtFunctionMixin" |
45 | | - |
46 | | - mixin ("entry") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtEntryImplMixin" |
47 | | - implements ("entry") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtEntryMixin" |
48 | | - |
49 | | - mixin ("argument") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtArgumentImplMixin" |
50 | | - implements ("argument") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtArgumentMixin" |
51 | | - |
52 | | - mixin ("class_name") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtClassNameImplMixin" |
53 | | - implements ("class_name") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtClassNameMixin" |
54 | | - |
55 | | - mixin ("field_name") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtFieldNameImplMixin" |
56 | | - implements ("field_name") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtFieldNameMixin" |
57 | | - |
58 | | - mixin ("func_name") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtFuncNameImplMixin" |
59 | | - implements ("func_name") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtFuncNameMixin" |
60 | | - |
61 | | - mixin ("keyword") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtKeywordImplMixin" |
62 | | - implements ("keyword") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtKeywordMixin" |
63 | | - |
64 | | - mixin ("return_value") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtReturnValueImplMixin" |
65 | | - implements ("return_value") = "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtReturnValueMixin" |
66 | | - |
67 | | - implements ("asterisk") = "com.demonwav.mcdev.platform.mcp.at.psi.AtElement" |
68 | | - |
69 | 25 | consumeTokenMethod="consumeTokenFast" |
70 | 26 | } |
71 | 27 |
|
72 | 28 | at_file ::= line* |
73 | 29 |
|
74 | | -private line ::= !<<eof>> entry? comment? end_line |
| 30 | +private line ::= !<<eof>> entry? COMMENT? end_line |
75 | 31 | private end_line ::= crlf | <<eof>> |
| 32 | + |
76 | 33 | entry ::= keyword class_name line_value? { |
77 | | - methods=[setEntry setKeyword setClassName setFieldName setFunction setAsterisk] |
| 34 | + mixin="com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtEntryImplMixin" |
| 35 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtEntryMixin" |
78 | 36 | pin = 1 |
79 | 37 | recoverWhile = line_recover |
80 | 38 | } |
81 | | -private line_recover ::= !(end_line | comment) |
| 39 | + |
| 40 | +private line_recover ::= !(end_line | COMMENT) |
82 | 41 | private line_value ::= function | field_name | asterisk |
83 | 42 |
|
84 | | -asterisk ::= asterisk_element |
| 43 | +asterisk ::= ASTERISK_ELEMENT { |
| 44 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.AtElement" |
| 45 | +} |
| 46 | + |
| 47 | +keyword ::= KEYWORD_ELEMENT { |
| 48 | + mixin="com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtKeywordImplMixin" |
| 49 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtKeywordMixin" |
| 50 | + methods=[ |
| 51 | + keywordElement="KEYWORD_ELEMENT" |
| 52 | + ] |
| 53 | +} |
| 54 | + |
| 55 | +class_name ::= CLASS_NAME_ELEMENT { |
| 56 | + mixin="com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtClassNameImplMixin" |
| 57 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtClassNameMixin" |
| 58 | + methods=[ |
| 59 | + classNameElement="CLASS_NAME_ELEMENT" |
| 60 | + ] |
| 61 | +} |
| 62 | + |
| 63 | +field_name ::= NAME_ELEMENT { |
| 64 | + mixin= "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtFieldNameImplMixin" |
| 65 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtFieldNameMixin" |
| 66 | + methods=[ |
| 67 | + nameElement="NAME_ELEMENT" |
| 68 | + ] |
| 69 | +} |
85 | 70 |
|
86 | | -keyword ::= keyword_element {methods=[getKeywordValue setKeyword]} |
87 | | -class_name ::= class_name_element {methods=[getClassNameValue getClassNameText setClassName]} |
88 | | -field_name ::= name_element {methods=[getFieldNameText setFieldName]} |
| 71 | +function ::= func_name OPEN_PAREN argument* CLOSE_PAREN return_value { |
| 72 | + mixin= "com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtFunctionImplMixin" |
| 73 | + implements= "com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtFunctionMixin" |
| 74 | +} |
89 | 75 |
|
90 | | -function ::= func_name open_paren argument* close_paren return_value {methods=[setFunction setArgumentList setReturnValue]} |
91 | | -func_name ::= name_element {methods=[getFuncNameText setFuncName]} |
| 76 | +func_name ::= NAME_ELEMENT { |
| 77 | + mixin="com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtFuncNameImplMixin" |
| 78 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtFuncNameMixin" |
| 79 | + methods=[ |
| 80 | + nameElement="NAME_ELEMENT" |
| 81 | + ] |
| 82 | +} |
92 | 83 |
|
93 | | -argument ::= primitive | class_value {methods=[getArgumentClass getArgumentText setArgument]} |
| 84 | +argument ::= PRIMITIVE | CLASS_VALUE { |
| 85 | + mixin="com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtArgumentImplMixin" |
| 86 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtArgumentMixin" |
| 87 | + methods=[ |
| 88 | + primitive="PRIMITIVE" |
| 89 | + classValue="CLASS_VALUE" |
| 90 | + ] |
| 91 | +} |
94 | 92 |
|
95 | | -return_value ::= primitive | class_value {methods=[getReturnValueClass getReturnValueText setReturnValue]} |
| 93 | +return_value ::= PRIMITIVE | CLASS_VALUE { |
| 94 | + mixin="com.demonwav.mcdev.platform.mcp.at.psi.mixins.impl.AtReturnValueImplMixin" |
| 95 | + implements="com.demonwav.mcdev.platform.mcp.at.psi.mixins.AtReturnValueMixin" |
| 96 | + methods=[ |
| 97 | + primitive="PRIMITIVE" |
| 98 | + classValue="CLASS_VALUE" |
| 99 | + ] |
| 100 | +} |
0 commit comments