Skip to content

Commit 3b13b66

Browse files
committed
Rename accessWideners to classTweakers, and support classTweaker v1
1 parent 853854a commit 3b13b66

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+588
-421
lines changed

build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,8 +263,8 @@ license {
263263
val generateAtLexer by lexer("AtLexer", "com/demonwav/mcdev/platform/mcp/at/gen")
264264
val generateAtParser by parser("AtParser", "com/demonwav/mcdev/platform/mcp/at/gen")
265265

266-
val generateAwLexer by lexer("AwLexer", "com/demonwav/mcdev/platform/mcp/aw/gen")
267-
val generateAwParser by parser("AwParser", "com/demonwav/mcdev/platform/mcp/aw/gen")
266+
val generateCtLexer by lexer("CtLexer", "com/demonwav/mcdev/platform/mcp/ct/gen")
267+
val generateCtParser by parser("CtParser", "com/demonwav/mcdev/platform/mcp/ct/gen")
268268

269269
val generateNbttLexer by lexer("NbttLexer", "com/demonwav/mcdev/nbt/lang/gen")
270270
val generateNbttParser by parser("NbttParser", "com/demonwav/mcdev/nbt/lang/gen")
@@ -287,8 +287,8 @@ val generate by tasks.registering {
287287
dependsOn(
288288
generateAtLexer,
289289
generateAtParser,
290-
generateAwLexer,
291-
generateAwParser,
290+
generateCtLexer,
291+
generateCtParser,
292292
generateNbttLexer,
293293
generateNbttParser,
294294
generateLangLexer,

src/main/grammars/AwLexer.flex

Lines changed: 0 additions & 98 deletions
This file was deleted.

src/main/grammars/AwParser.bnf

Lines changed: 0 additions & 112 deletions
This file was deleted.

src/main/grammars/CtLexer.flex

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
/*
2+
* Minecraft Development for IntelliJ
3+
*
4+
* https://mcdev.io/
5+
*
6+
* Copyright (C) 2025 minecraft-dev
7+
*
8+
* This program is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU Lesser General Public License as published
10+
* by the Free Software Foundation, version 3.0 only.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU Lesser General Public License
18+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
19+
*/
20+
21+
package com.demonwav.mcdev.platform.mcp.ct.gen;
22+
23+
import com.intellij.lexer.*;
24+
import com.intellij.psi.tree.IElementType;
25+
import static com.demonwav.mcdev.platform.mcp.ct.gen.psi.CtTypes.*;
26+
import static com.intellij.psi.TokenType.*;
27+
28+
%%
29+
30+
%{
31+
public CtLexer() {
32+
this((java.io.Reader)null);
33+
}
34+
%}
35+
36+
%public
37+
%class CtLexer
38+
%implements FlexLexer
39+
%function advance
40+
%type IElementType
41+
42+
%s HEADER
43+
%s AW_ENTRY
44+
%s AW_CLASS_NAME
45+
%s AW_MEMBER_NAME
46+
%s AW_TYPES
47+
%s ITF_ENTRY_KEY
48+
%s ITF_ENTRY_VALUE
49+
%s SIGNATURE
50+
51+
%unicode
52+
53+
HEADER_NAME=accessWidener|classTweaker
54+
HEADER_VERSION_ELEMENT=v\d+
55+
HEADER_NAMESPACE_ELEMENT=named|intermediary
56+
PRIMITIVE=[ZBCSIFDJV]
57+
CLASS_VALUE=L[^;\n]+;
58+
SIGNATURE_CLASS_VALUE_START=L[^;<\n]+
59+
TYPE_VARIABLE=T[^;\n]+;
60+
ACCESS_ELEMENT=accessible|transitive-accessible|extendable|transitive-extendable|mutable|transitive-mutable
61+
INJECT_INTERFACE_ELEMENT=inject-interface|transitive-inject-interface
62+
CLASS_ELEMENT=class
63+
METHOD_ELEMENT=method
64+
FIELD_ELEMENT=field
65+
NAME_ELEMENT=\w+|<init>
66+
CLASS_NAME_ELEMENT=(\w+\/)*\w+(\$\w+)*
67+
COMMENT=#.*
68+
CRLF=\n|\r|\r\n
69+
WHITE_SPACE=\s
70+
71+
%%
72+
73+
<YYINITIAL> {
74+
{HEADER_NAME} { yybegin(HEADER); return HEADER_NAME; }
75+
{ACCESS_ELEMENT} { yybegin(AW_ENTRY); return ACCESS_ELEMENT; }
76+
{INJECT_INTERFACE_ELEMENT} { yybegin(ITF_ENTRY_KEY); return INJECT_INTERFACE_ELEMENT; }
77+
}
78+
79+
<HEADER> {
80+
{HEADER_VERSION_ELEMENT} { return HEADER_VERSION_ELEMENT; }
81+
{HEADER_NAMESPACE_ELEMENT} { return HEADER_NAMESPACE_ELEMENT; }
82+
}
83+
84+
<AW_ENTRY> {
85+
{CLASS_ELEMENT} { yybegin(AW_CLASS_NAME); return CLASS_ELEMENT; }
86+
{METHOD_ELEMENT} { yybegin(AW_CLASS_NAME); return METHOD_ELEMENT; }
87+
{FIELD_ELEMENT} { yybegin(AW_CLASS_NAME); return FIELD_ELEMENT; }
88+
}
89+
90+
<AW_CLASS_NAME> {
91+
{CLASS_NAME_ELEMENT} { yybegin(AW_MEMBER_NAME); return CLASS_NAME_ELEMENT; }
92+
}
93+
94+
<AW_MEMBER_NAME> {
95+
{NAME_ELEMENT} { yybegin(AW_TYPES); return NAME_ELEMENT; }
96+
}
97+
98+
<AW_TYPES> {
99+
"(" { return OPEN_PAREN; }
100+
")" { return CLOSE_PAREN; }
101+
"[" { return OPEN_BRACKET; }
102+
{CLASS_VALUE} { return CLASS_VALUE; }
103+
{PRIMITIVE} { return PRIMITIVE; }
104+
}
105+
106+
<ITF_ENTRY_KEY> {
107+
{CLASS_NAME_ELEMENT} { yybegin(ITF_ENTRY_VALUE); return CLASS_NAME_ELEMENT; }
108+
}
109+
110+
<ITF_ENTRY_VALUE> {
111+
{CLASS_NAME_ELEMENT} { yybegin(SIGNATURE); return CLASS_NAME_ELEMENT; }
112+
}
113+
114+
<SIGNATURE> {
115+
"<" { return LESS_THAN; }
116+
">" { return GREATER_THAN; }
117+
"[" { return OPEN_BRACKET; }
118+
"+" { return PLUS; }
119+
"-" { return MINUS; }
120+
"*" { return ASTERISK; }
121+
{SIGNATURE_CLASS_VALUE_START} { return SIGNATURE_CLASS_VALUE_START; }
122+
";" { return SIGNATURE_CLASS_VALUE_END; }
123+
{PRIMITIVE} { return PRIMITIVE; }
124+
{TYPE_VARIABLE} { return TYPE_VARIABLE; }
125+
}
126+
127+
{CRLF} { yybegin(YYINITIAL); return CRLF; }
128+
{WHITE_SPACE} { return WHITE_SPACE; }
129+
130+
{COMMENT} { return COMMENT; }
131+
[^] { return BAD_CHARACTER; }

0 commit comments

Comments
 (0)