- /*
- * Minecraft Development for IntelliJ
- *
- * https://mcdev.io/
- *
- * Copyright (C) 2024 minecraft-dev
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, version 3.0 only.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
- {
- parserClass="com.demonwav.mcdev.nbt.lang.gen.parser.NbttParser"
- extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
- psiClassPrefix="Nbtt"
- psiImplClassSuffix="Impl"
- psiPackage="com.demonwav.mcdev.nbt.lang.gen.psi"
- psiImplPackage="com.demonwav.mcdev.nbt.lang.gen.psi.impl"
- elementTypeHolderClass="com.demonwav.mcdev.nbt.lang.gen.psi.NbttTypes"
- elementTypeClass="com.demonwav.mcdev.nbt.lang.psi.NbttElementType"
- tokenTypeClass="com.demonwav.mcdev.nbt.lang.psi.NbttTokenType"
- consumeTokenMethod="consumeTokenFast"
- }
- nbtt_file ::= root_compound
- root_compound ::= tag_name COLON compound {
- pin=1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttRootCompoundImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttRootCompoundMixin"
- }
- compound ::= LBRACE named_tag* RBRACE {
- pin=1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttCompoundImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttCompoundMixin"
- }
- named_tag ::= tag_name COLON tag {
- pin = 1
- }
- tag_name ::= STRING_LITERAL | UNQUOTED_STRING_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttTagNameImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttTagNameMixin"
- }
- list ::= LBRACKET list_params RBRACKET {
- pin = 1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttListImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttListMixin"
- }
- private list_params ::= (tag COMMA?)*
- byte ::= BYTE_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttByteImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttByteMixin"
- }
- short ::= SHORT_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttShortImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttShortMixin"
- }
- int ::= INT_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttIntImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttIntMixin"
- }
- long ::= LONG_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttLongImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttLongMixin"
- }
- float ::= FLOAT_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttFloatImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttFloatMixin"
- }
- double ::= DOUBLE_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttDoubleImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttDoubleMixin"
- }
- string ::= STRING_LITERAL | UNQUOTED_STRING_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttStringImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttStringMixin"
- }
- byte_array ::= BYTES LPAREN byte_params RPAREN {
- pin=1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttByteArrayImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttByteArrayMixin"
- }
- private byte_params ::= (byte COMMA?)*
- int_array ::= INTS LPAREN int_params RPAREN {
- pin=2
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttIntArrayImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttIntArrayMixin"
- }
- private int_params ::= (int COMMA?)*
- long_array ::= LONGS LPAREN long_params RPAREN {
- pin=2
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttLongArrayImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttLongArrayMixin"
- }
- private long_params ::= (long COMMA?)*
- tag ::= compound | list | byte | short | int | long | float | double | string | byte_array | int_array | long_array {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttTagImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttTagMixin"
- }
- /*
- * Minecraft Development for IntelliJ
- *
- * https://mcdev.io/
- *
- * Copyright (C) 2025 minecraft-dev
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, version 3.0 only.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
- {
- parserClass="com.demonwav.mcdev.nbt.lang.gen.parser.NbttParser"
- extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
- psiClassPrefix="Nbtt"
- psiImplClassSuffix="Impl"
- psiPackage="com.demonwav.mcdev.nbt.lang.gen.psi"
- psiImplPackage="com.demonwav.mcdev.nbt.lang.gen.psi.impl"
- elementTypeHolderClass="com.demonwav.mcdev.nbt.lang.gen.psi.NbttTypes"
- elementTypeClass="com.demonwav.mcdev.nbt.lang.psi.NbttElementType"
- tokenTypeClass="com.demonwav.mcdev.nbt.lang.psi.NbttTokenType"
- consumeTokenMethod="consumeTokenFast"
- }
- nbtt_file ::= root_compound
- root_compound ::= tag_name COLON compound {
- pin=1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttRootCompoundImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttRootCompoundMixin"
- }
- compound ::= LBRACE named_tag* RBRACE {
- pin=1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttCompoundImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttCompoundMixin"
- }
- named_tag ::= tag_name COLON tag {
- pin = 1
- }
- tag_name ::= STRING_LITERAL | UNQUOTED_STRING_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttTagNameImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttTagNameMixin"
- }
- list ::= LBRACKET list_params RBRACKET {
- pin = 1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttListImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttListMixin"
- }
- private list_params ::= (tag COMMA?)*
- byte ::= BYTE_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttByteImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttByteMixin"
- }
- short ::= SHORT_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttShortImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttShortMixin"
- }
- int ::= INT_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttIntImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttIntMixin"
- }
- long ::= LONG_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttLongImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttLongMixin"
- }
- float ::= FLOAT_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttFloatImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttFloatMixin"
- }
- double ::= DOUBLE_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttDoubleImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttDoubleMixin"
- }
- string ::= STRING_LITERAL | UNQUOTED_STRING_LITERAL {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttStringImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttStringMixin"
- }
- byte_array ::= BYTES LPAREN byte_params RPAREN {
- pin=1
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttByteArrayImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttByteArrayMixin"
- }
- private byte_params ::= (byte COMMA?)*
- int_array ::= INTS LPAREN int_params RPAREN {
- pin=2
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttIntArrayImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttIntArrayMixin"
- }
- private int_params ::= (int COMMA?)*
- long_array ::= LONGS LPAREN long_params RPAREN {
- pin=2
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttLongArrayImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttLongArrayMixin"
- }
- private long_params ::= (long COMMA?)*
- tag ::= compound | list | byte | short | int | long | float | double | string | byte_array | int_array | long_array {
- mixin="com.demonwav.mcdev.nbt.lang.psi.mixins.impl.NbttTagImplMixin"
- implements="com.demonwav.mcdev.nbt.lang.psi.mixins.NbttTagMixin"
- }