Skip to content

Commit 776ddcf

Browse files
committed
Merge branch 'dev' into 2017.2
# Conflicts: # gradle.properties # readme.md # src/main/resources/META-INF/plugin.xml
2 parents a06d833 + d1635b5 commit 776ddcf

File tree

171 files changed

+5071
-688
lines changed

Some content is hidden

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

171 files changed

+5071
-688
lines changed

build.gradle.kts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ buildscript {
2929
}
3030

3131
plugins {
32-
id("org.jetbrains.kotlin.jvm") version "1.1.1"
32+
id("org.jetbrains.kotlin.jvm") version "1.1.1" // kept in sync with IntelliJ's bundled dep
3333
groovy
3434
idea
3535
id("org.jetbrains.intellij") version "0.2.7"
@@ -98,7 +98,6 @@ val gradleToolingExtensionJar = task<Jar>(gradleToolingExtension.jarTaskName) {
9898
}
9999

100100
dependencies {
101-
"kotlin"(kotlinModule("runtime")) { isTransitive = false }
102101
"kotlin"(kotlinModule("stdlib")) { isTransitive = false }
103102
compile(kotlinModule("stdlib-jre7")) { isTransitive = false }
104103
compile(kotlinModule("stdlib-jre8")) { isTransitive = false }
@@ -183,15 +182,15 @@ idea {
183182
license {
184183
header = file("copyright.txt")
185184
include("**/*.java", "**/*.kt", "**/*.groovy", "**/*.gradle", "**/*.xml", "**/*.properties", "**/*.html")
186-
exclude("com/demonwav/mcdev/platform/mcp/at/gen/**")
185+
exclude("com/demonwav/mcdev/platform/mcp/at/gen/**", "com/demonwav/mcdev/nbt/lang/gen/**")
187186
}
188187

189188
// Credit for this intellij-rust
190189
// https://github.com/intellij-rust/intellij-rust/blob/d6b82e6aa2f64b877a95afdd86ec7b84394678c3/build.gradle#L131-L181
191-
val generateAtLexer = task<JavaExec>("generateAtLexer") {
192-
val src = "src/main/grammars/AtLexer.flex"
193-
val dst = "gen/com/demonwav/mcdev/platform/mcp/at/gen/"
194-
val output = "$dst/AtLexer.java"
190+
fun generateLexer(name: String, flex: String, pack: String) = task<JavaExec>(name) {
191+
val src = "src/main/grammars/$flex.flex"
192+
val dst = "gen/com/demonwav/mcdev/$pack"
193+
val output = "$dst/$flex.java"
195194

196195
classpath = configurations["jflex"]
197196
main = "jflex.Main"
@@ -211,10 +210,10 @@ val generateAtLexer = task<JavaExec>("generateAtLexer") {
211210
outputs.file(output)
212211
}
213212

214-
val generateAtPsiAndParser = task<JavaExec>("generateAtPsiAndParser") {
215-
val src = "src/main/grammars/AtParser.bnf".replace("/", File.separator)
213+
fun generatePsiAndParser(name: String, bnf: String, pack: String) = task<JavaExec>(name) {
214+
val src = "src/main/grammars/$bnf.bnf".replace("/", File.separator)
216215
val dstRoot = "gen"
217-
val dst = "$dstRoot/com/demonwav/mcdev/platform/mcp/at/gen".replace("/", File.separator)
216+
val dst = "$dstRoot/com/demonwav/mcdev/$pack".replace("/", File.separator)
218217
val psiDir = "$dst/psi/".replace("/", File.separator)
219218
val parserDir = "$dst/parser/".replace("/", File.separator)
220219

@@ -234,10 +233,16 @@ val generateAtPsiAndParser = task<JavaExec>("generateAtPsiAndParser") {
234233
))
235234
}
236235

236+
val generateAtLexer = generateLexer("generateAtLexer", "AtLexer", "platform/mcp/at/gen/")
237+
val generateAtPsiAndParser = generatePsiAndParser("generateAtPsiAndParser", "AtParser", "platform/mcp/at/gen")
238+
239+
val generateNbttLexer = generateLexer("generateNbttLexer", "NbttLexer", "nbt/lang/gen/")
240+
val generateNbttPsiAndParser = generatePsiAndParser("generateNbttPsiAndParser", "NbttParser", "nbt/lang/gen")
241+
237242
val generate = task("generate") {
238243
group = "minecraft"
239244
description = "Generates sources needed to compile the plugin."
240-
dependsOn(generateAtLexer, generateAtPsiAndParser)
245+
dependsOn(generateAtLexer, generateAtPsiAndParser, generateNbttLexer, generateNbttPsiAndParser)
241246
outputs.dir("gen")
242247
}
243248

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ javaVersion = 1.8
1313
kotlinVersion = 1.1.1
1414

1515
group = com.demonwav.minecraft-dev
16-
version = 2017.2-0.6.3
16+
version = 2017.2-0.7.0
1717
downloadIdeaSources = true
1818

1919
org.gradle.script.lang.kotlin.accessors.auto=true

gradle/wrapper/gradle-wrapper.jar

-5 Bytes
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Thu Mar 23 16:41:24 CET 2017
1+
#Mon Apr 10 18:01:06 CEST 2017
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-rc-1-bin.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip

readme.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ Minecraft Development for IntelliJ
66
| Service |Status|
77
|------------|------|
88
|**TeamCity**|[![TeamCity Build Status](https://img.shields.io/teamcity/http/ci.demonwav.com/s/MinecraftDev_Build.svg?style=flat-square)](https://ci.demonwav.com/viewType.html?buildTypeId=MinecraftDev_Build)|
9-
|**Nightly**|[![TeamCity Build Status](https://img.shields.io/teamcity/http/ci.demonwav.com/s/MinecraftDev_Nightly.svg?style=flat-square)](https://ci.demonwav.com/viewType.html?buildTypeId=MinecraftDev_Nightly)|
10-
|**CircleCI**|[![Travis Build Status](https://img.shields.io/circleci/project/github/minecraft-dev/MinecraftDev/2017.1.svg?style=flat-square)](https://circleci.com/gh/minecraft-dev/MinecraftDev)|
11-
|**Travis** |[![CircleCI Build Status](https://img.shields.io/travis/minecraft-dev/MinecraftDev/2017.1.svg?style=flat-square)](https://travis-ci.org/minecraft-dev/MinecraftDev/)|
9+
|**Nightly** |[![TeamCity Build Status](https://img.shields.io/teamcity/http/ci.demonwav.com/s/MinecraftDev_Nightly.svg?style=flat-square)](https://ci.demonwav.com/viewType.html?buildTypeId=MinecraftDev_Nightly)|
10+
|**CircleCI**|[![Travis Build Status](https://img.shields.io/circleci/project/github/minecraft-dev/MinecraftDev/dev.svg?style=flat-square)](https://circleci.com/gh/minecraft-dev/MinecraftDev)|
11+
| **Travis** |[![CircleCI Build Status](https://img.shields.io/travis/minecraft-dev/MinecraftDev/dev.svg?style=flat-square)](https://travis-ci.org/minecraft-dev/MinecraftDev/)|
1212

13-
Info and Documentation [![Current Release](https://img.shields.io/badge/release-2017.2--0.6.3-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
13+
Info and Documentation [![Current Release](https://img.shields.io/badge/release-2017.2--0.7.0-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
1414
----------------------
1515

1616
Visit [https://minecraftdev.org](https://minecraftdev.org) for information about the project, change logs, features, FAQs, and chat.

src/main/grammars/AtLexer.flex

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
* Copyright (c) 2017 minecraft-dev
77
*
88
* MIT License
9-
*
109
*/
1110

1211
package com.demonwav.mcdev.platform.mcp.at.gen;

src/main/grammars/NbttLexer.flex

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
/*
2+
* Minecraft Dev for IntelliJ
3+
*
4+
* https://minecraftdev.org
5+
*
6+
* Copyright (c) 2017 minecraft-dev
7+
*
8+
* MIT License
9+
*/
10+
11+
package com.demonwav.mcdev.nbt.lang.gen;
12+
13+
import com.intellij.lexer.*;
14+
import com.intellij.psi.tree.IElementType;
15+
import static com.demonwav.mcdev.nbt.lang.gen.psi.NbttTypes.*;
16+
import static com.intellij.psi.TokenType.*;
17+
18+
%%
19+
20+
%{
21+
public java.util.Deque<Integer> stack = new java.util.ArrayDeque<Integer>();
22+
23+
public NbttLexer() {
24+
this((java.io.Reader)null);
25+
}
26+
27+
public void maybeBegin(Integer i) {
28+
if (i != null) {
29+
yybegin(i);
30+
}
31+
}
32+
%}
33+
34+
%public
35+
%class NbttLexer
36+
%implements FlexLexer
37+
%function advance
38+
%type IElementType
39+
40+
%s IN_BYTE_ARRAY
41+
%s IN_INT_ARRAY
42+
%s IN_LONG_ARRAY
43+
%s IN_LIST
44+
%s EXPECT_NEXT
45+
46+
%unicode
47+
48+
EOL_WS = \n | \r | \r\n
49+
LINE_WS = \s
50+
WHITE_SPACE_CHAR = {EOL_WS} | {LINE_WS}
51+
WHITE_SPACE = {WHITE_SPACE_CHAR}+
52+
53+
BYTE_LITERAL = [+-]?\d+[bB]|true|false
54+
SHORT_LITERAL = [+-]?\d+[sS]
55+
INT_LITERAL = [+-]?\d+[iI]?
56+
LONG_LITERAL = [+-]?\d+[lL]
57+
FLOAT_LITERAL = [+-]?(\d+(\.\d*(E\d+)?)?[fF]|\d*\.\d+(E\d+)?[fF]|Infinity[fF])|NaN[fF]
58+
DOUBLE_LITERAL = [+-]?(\d*\.\d+(E\d+)?[dD|]?|\d+\.\d*(E\d+)?[dD|]?|\d+(E\d+)?[dD|]|Infinity[dD|]?)|NaN[dD|]?
59+
60+
STRING_LITERAL = \"([^\"\\\n]|(\\[\"\\nt]))*[\"\n]
61+
UNQUOTED_STRING_LITERAL = ([^\"\s\n:{}\[\](),\d+\-]|\\[\"\\nt])|([^\"\s\n:{}\[\](),\d+\-]|\\[\"\\nt])([^\"\\:{}\[\](),\n]|\\[\"\\nt])*[^\"\s\n:{}\[\](),]
62+
63+
BYTE_ARRAY_LITERAL = [+-]?\d+[bB]?|true|false
64+
ARRAY_INT_LITEARL = [+-]?\d+[iI]
65+
66+
LONG_ARRAY_LITERAL = [+-]?\d+[lL]?
67+
68+
69+
%%
70+
71+
<YYINITIAL> {
72+
":" { return COLON; }
73+
"}" { maybeBegin(stack.pollFirst()); return RBRACE; }
74+
"]" { maybeBegin(stack.pollFirst()); return RBRACKET; }
75+
")" { maybeBegin(stack.pollFirst()); return RPAREN; }
76+
"{" { stack.offerFirst(YYINITIAL); return LBRACE; }
77+
"[" { stack.offerFirst(YYINITIAL); yybegin(IN_LIST); return LBRACKET; }
78+
"bytes" { stack.offerFirst(YYINITIAL); yybegin(IN_BYTE_ARRAY); return BYTES; }
79+
"ints" { stack.offerFirst(YYINITIAL); yybegin(IN_INT_ARRAY); return INTS; }
80+
"longs" { stack.offerFirst(YYINITIAL); yybegin(IN_LONG_ARRAY); return LONGS; }
81+
82+
{BYTE_LITERAL} { return BYTE_LITERAL; }
83+
{SHORT_LITERAL} { return SHORT_LITERAL; }
84+
{INT_LITERAL} { return INT_LITERAL; }
85+
{LONG_LITERAL} { return LONG_LITERAL; }
86+
{FLOAT_LITERAL} { return FLOAT_LITERAL; }
87+
{DOUBLE_LITERAL} { return DOUBLE_LITERAL; }
88+
89+
{STRING_LITERAL} { return STRING_LITERAL; }
90+
{UNQUOTED_STRING_LITERAL} { return UNQUOTED_STRING_LITERAL; }
91+
}
92+
93+
<IN_BYTE_ARRAY> {
94+
"(" { return LPAREN; }
95+
"," { return COMMA; }
96+
")" { yybegin(stack.pollFirst()); return RPAREN; }
97+
98+
{BYTE_ARRAY_LITERAL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return BYTE_LITERAL; }
99+
100+
// Everything below this is invalid
101+
// we just want to match them correctly so the parser has something to grab on to
102+
103+
// Integers have to be explicitly defined as ints here, implicit numbers are bytes
104+
{ARRAY_INT_LITEARL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return INT_LITERAL; }
105+
106+
{SHORT_LITERAL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return SHORT_LITERAL; }
107+
{LONG_LITERAL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return LONG_LITERAL; }
108+
{FLOAT_LITERAL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return FLOAT_LITERAL; }
109+
{DOUBLE_LITERAL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return DOUBLE_LITERAL; }
110+
111+
{STRING_LITERAL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return STRING_LITERAL; }
112+
{UNQUOTED_STRING_LITERAL} { stack.offerFirst(IN_BYTE_ARRAY); yybegin(EXPECT_NEXT); return UNQUOTED_STRING_LITERAL; }
113+
}
114+
115+
<IN_INT_ARRAY> {
116+
"(" { return LPAREN; }
117+
"," { return COMMA; }
118+
")" { yybegin(stack.pollFirst()); return RPAREN; }
119+
120+
{INT_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return INT_LITERAL; }
121+
122+
// Everything below this is invalid
123+
// we just want to match them correctly so the parser has something to grab on to
124+
125+
{BYTE_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return INT_LITERAL; }
126+
{SHORT_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return SHORT_LITERAL; }
127+
{LONG_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return LONG_LITERAL; }
128+
{FLOAT_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return FLOAT_LITERAL; }
129+
{DOUBLE_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return DOUBLE_LITERAL; }
130+
131+
{STRING_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return STRING_LITERAL; }
132+
{UNQUOTED_STRING_LITERAL} { stack.offerFirst(IN_INT_ARRAY); yybegin(EXPECT_NEXT); return UNQUOTED_STRING_LITERAL; }
133+
}
134+
135+
<IN_LONG_ARRAY> {
136+
"(" { return LPAREN; }
137+
"," { return COMMA; }
138+
")" { yybegin(stack.pollFirst()); return RPAREN; }
139+
140+
{LONG_ARRAY_LITERAL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return LONG_LITERAL; }
141+
142+
// Everything below this is invalid
143+
// we just want to match them correctly so the parser has something to grab on to
144+
145+
// Integers have to be explicitly defined as ints here, implicit numbers are longs
146+
{ARRAY_INT_LITEARL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return INT_LITERAL; }
147+
148+
{BYTE_LITERAL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return BYTE_LITERAL; }
149+
{SHORT_LITERAL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return SHORT_LITERAL; }
150+
{FLOAT_LITERAL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return FLOAT_LITERAL; }
151+
{DOUBLE_LITERAL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return DOUBLE_LITERAL; }
152+
153+
{STRING_LITERAL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return STRING_LITERAL; }
154+
{UNQUOTED_STRING_LITERAL} { stack.offerFirst(IN_LONG_ARRAY); yybegin(EXPECT_NEXT); return UNQUOTED_STRING_LITERAL; }
155+
}
156+
157+
<IN_LIST> {
158+
"{" { stack.offerFirst(IN_LIST); stack.offerFirst(EXPECT_NEXT); yybegin(YYINITIAL); return LBRACE; }
159+
"[" { stack.offerFirst(IN_LIST); stack.offerFirst(EXPECT_NEXT); yybegin(IN_LIST); return LBRACKET; }
160+
"bytes" { stack.offerFirst(IN_LIST); stack.offerFirst(EXPECT_NEXT); yybegin(IN_BYTE_ARRAY); return BYTES; }
161+
"ints" { stack.offerFirst(IN_LIST); stack.offerFirst(EXPECT_NEXT); yybegin(IN_INT_ARRAY); return INTS; }
162+
163+
"," { return COMMA; }
164+
165+
"]" { yybegin(stack.pollFirst()); return RBRACKET; }
166+
167+
{BYTE_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return INT_LITERAL; }
168+
{SHORT_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return SHORT_LITERAL; }
169+
{INT_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return INT_LITERAL; }
170+
{LONG_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return LONG_LITERAL; }
171+
{FLOAT_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return FLOAT_LITERAL; }
172+
{DOUBLE_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return DOUBLE_LITERAL; }
173+
174+
{STRING_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return STRING_LITERAL; }
175+
{UNQUOTED_STRING_LITERAL} { stack.offerFirst(IN_LIST); yybegin(EXPECT_NEXT); return UNQUOTED_STRING_LITERAL; }
176+
}
177+
178+
<EXPECT_NEXT> {
179+
"," { yybegin(stack.pollFirst()); return COMMA; }
180+
")" { yybegin(stack.pollFirst()); zzMarkedPos = zzStartRead; }
181+
"]" { yybegin(stack.pollFirst()); zzMarkedPos = zzStartRead; }
182+
}
183+
184+
{WHITE_SPACE} { return WHITE_SPACE; }
185+
[^] { return BAD_CHARACTER; }

0 commit comments

Comments
 (0)