Skip to content

Commit 7f371a6

Browse files
committed
NBT数组类型补充
1 parent fd3fc8e commit 7f371a6

File tree

5 files changed

+36
-22
lines changed

5 files changed

+36
-22
lines changed

src/main/antlr/mcfppLexer.g4

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,9 @@ VOID: 'void';
135135
LIST: 'list';
136136
MAP: 'map';
137137
DICT: 'dict';
138+
BYTEARRAY: 'ByteArray';
139+
INTARRAY: 'IntArray';
140+
LONGARRAY: 'LongArray';
138141

139142

140143
TRUE: 'true';

src/main/antlr/mcfppParser.g4

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,9 @@ normalType
606606
| ANY
607607
| MAP
608608
| DICT
609+
| BYTEARRAY
610+
| INTARRAY
611+
| LONGARRAY
609612
;
610613

611614
functionReturnType

src/main/kotlin/top/mcfpp/core/lang/nbt/MCLong.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ open class MCLong: NBTBasedData {
6464
}
6565

6666
override fun implicitCast(type: MCFPPType): Var<*> {
67-
val re = super.explicitCast(type)
67+
val re = super.implicitCast(type)
6868
if(!re.isError) return re
6969
return when(type){
7070
MCFPPBaseType.Int -> {

src/main/kotlin/top/mcfpp/type/MCFPPType.kt

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -218,26 +218,29 @@ open class MCFPPType(
218218

219219
val data = CompoundData("type","mcfpp")
220220

221-
private val typeCache:MutableMap<String, MCFPPType> by lazy { mutableMapOf(
222-
MCFPPBaseType.Void.typeName to MCFPPBaseType.Void,
223-
MCFPPEntityType.Entity.typeName to MCFPPEntityType.Entity,
224-
MCFPPConcreteType.Type.typeName to MCFPPConcreteType.Type,
225-
MCFPPNBTType.Byte.typeName to MCFPPNBTType.Byte,
226-
MCFPPNBTType.Short.typeName to MCFPPNBTType.Short,
227-
MCFPPBaseType.Int.typeName to MCFPPBaseType.Int,
228-
MCFPPNBTType.Long.typeName to MCFPPNBTType.Long,
229-
MCFPPNBTType.Double.typeName to MCFPPNBTType.Double,
230-
MCFPPBaseType.Float.typeName to MCFPPBaseType.Float,
231-
MCFPPBaseType.Bool.typeName to MCFPPBaseType.Bool,
232-
MCFPPBaseType.String.typeName to MCFPPBaseType.String,
233-
MCFPPBaseType.Any.typeName to MCFPPBaseType.Any,
234-
MCFPPEntityType.Selector.typeName to MCFPPEntityType.Selector,
235-
MCFPPConcreteType.JavaVar.typeName to MCFPPConcreteType.JavaVar,
236-
MCFPPBaseType.JsonText.typeName to MCFPPBaseType.JsonText,
237-
MCFPPNBTType.NBT.typeName to MCFPPNBTType.NBT,
238-
MCFPPBaseType.Coordinate2.typeName to MCFPPBaseType.Coordinate2,
239-
MCFPPBaseType.Coordinate3.typeName to MCFPPBaseType.Coordinate3,
240-
)}
221+
private val typeCache:MutableMap<String, MCFPPType> by lazy { arrayListOf(
222+
MCFPPBaseType.Void,
223+
MCFPPEntityType.Entity,
224+
MCFPPConcreteType.Type,
225+
MCFPPNBTType.Byte,
226+
MCFPPNBTType.Short,
227+
MCFPPBaseType.Int,
228+
MCFPPNBTType.Long,
229+
MCFPPNBTType.Double,
230+
MCFPPBaseType.Float,
231+
MCFPPBaseType.Bool,
232+
MCFPPBaseType.String,
233+
MCFPPNBTType.ByteArray,
234+
MCFPPNBTType.IntArray,
235+
MCFPPNBTType.LongArray,
236+
MCFPPBaseType.Any,
237+
MCFPPEntityType.Selector,
238+
MCFPPConcreteType.JavaVar,
239+
MCFPPBaseType.JsonText,
240+
MCFPPNBTType.NBT,
241+
MCFPPBaseType.Coordinate2,
242+
MCFPPBaseType.Coordinate3,
243+
).associateBy { it.typeName }.toMutableMap()}
241244

242245
/**
243246
* 类型注册缓存。键值对的第一个元素判断字符串是否满足条件,而第二个元素则是用于从一个字符串中解析出一个类型

test/test.mcfpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,10 @@ namespace test;
22

33
func main(){
44
byte i = 5b;
5-
print(i);
5+
short s = 5s;
6+
int a = 5;
7+
long b = 5l;
8+
float f = 5f;
9+
double d = 5d;
10+
IntArray qwq = [I;1,1,4,5,1,4];
611
}

0 commit comments

Comments
 (0)