- /*
- * 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="io.mcdev.obfex.formats.srg.gen.parser.SrgParser"
- extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
- psiClassPrefix="Srg"
- psiImplClassSuffix="Impl"
- psiPackage="io.mcdev.obfex.formats.srg.gen.psi"
- psiImplPackage="io.mcdev.obfex.formats.srg.gen.psi.impl"
- elementTypeHolderClass="io.mcdev.obfex.formats.srg.gen.psi.SrgTypes"
- elementTypeClass="io.mcdev.obfex.formats.srg.lang.psi.SrgElementType"
- tokenTypeClass="io.mcdev.obfex.formats.srg.lang.psi.SrgTokenType"
- tokens=[
- COMMENT="regexp:\s*#.*"
- ]
- // do not record error reporting information in recover rules
- consumeTokenMethod(".*_recover")="consumeTokenFast"
- }
- srg_file ::= line*
- private line ::= !<<eof>> mapping? line_end {pin=2 recoverWhile=line_recover}
- private line_end ::= <<eof>> | CRLF
- private line_recover ::= !(mapping | line_end)
- mapping ::= package_mapping | class_mapping | field_mapping | method_mapping
- package_mapping ::= PACKAGE_KEY package_mapping_part package_mapping_part {
- pin=1
- methods=[
- obfName="/package_mapping_part[0]"
- deobfName="/package_mapping_part[1]"
- ]
- }
- class_mapping ::= CLASS_KEY mapping_part mapping_part {
- pin=1
- methods=[
- obfName="/mapping_part[0]"
- deobfName="/mapping_part[1]"
- ]
- }
- field_mapping ::= FIELD_KEY (extended_field_mapping | standard_field_mapping) {
- pin=1
- methods=[
- obfName
- obfSignature
- deobfName
- deobfSignature
- ]
- mixin="io.mcdev.obfex.formats.srg.lang.psi.mixins.impl.SrgFieldMappingImplMixin"
- implements="io.mcdev.obfex.formats.srg.lang.psi.mixins.SrgFieldMappingMixin"
- }
- method_mapping ::= METHOD_KEY mapping_part method_signature mapping_part method_signature {
- pin=1
- methods=[
- obfName="/mapping_part[0]"
- obfSignature="/method_signature[0]"
- deobfName="/mapping_part[1]"
- deobfSignature="/method_signature[1]"
- ]
- }
- package_mapping_part ::= PACKAGE_NAME
- standard_field_mapping ::= mapping_part mapping_part {
- methods=[
- obfName="/mapping_part[0]"
- deobfName="/mapping_part[1]"
- ]
- }
- extended_field_mapping ::= mapping_part type_desc mapping_part type_desc {
- pin=3
- methods=[
- obfName="/mapping_part[0]"
- obfType="/type_desc[0]"
- deobfName="/mapping_part[1]"
- deobfType="/type_desc[1]"
- ]
- }
- mapping_part ::= PRIMITIVE | identifier
- type_desc ::= PRIMITIVE | CLASS_TYPE
- identifier ::= name_part (SLASH name_part)* {pin(".*")=1}
- name_part ::= NAME_ELEMENT
- method_signature ::= OPEN_PAREN param_types CLOSE_PAREN return_type {pin=1}
- param_types ::= type_desc*
- return_type ::= type_desc
- /*
- * 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="io.mcdev.obfex.formats.srg.gen.parser.SrgParser"
- extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
- psiClassPrefix="Srg"
- psiImplClassSuffix="Impl"
- psiPackage="io.mcdev.obfex.formats.srg.gen.psi"
- psiImplPackage="io.mcdev.obfex.formats.srg.gen.psi.impl"
- elementTypeHolderClass="io.mcdev.obfex.formats.srg.gen.psi.SrgTypes"
- elementTypeClass="io.mcdev.obfex.formats.srg.lang.psi.SrgElementType"
- tokenTypeClass="io.mcdev.obfex.formats.srg.lang.psi.SrgTokenType"
- tokens=[
- COMMENT="regexp:\s*#.*"
- ]
- // do not record error reporting information in recover rules
- consumeTokenMethod(".*_recover")="consumeTokenFast"
- }
- srg_file ::= line*
- private line ::= !<<eof>> mapping? line_end {pin=2 recoverWhile=line_recover}
- private line_end ::= <<eof>> | CRLF
- private line_recover ::= !(mapping | line_end)
- mapping ::= package_mapping | class_mapping | field_mapping | method_mapping
- package_mapping ::= PACKAGE_KEY package_mapping_part package_mapping_part {
- pin=1
- methods=[
- obfName="/package_mapping_part[0]"
- deobfName="/package_mapping_part[1]"
- ]
- }
- class_mapping ::= CLASS_KEY mapping_part mapping_part {
- pin=1
- methods=[
- obfName="/mapping_part[0]"
- deobfName="/mapping_part[1]"
- ]
- }
- field_mapping ::= FIELD_KEY (extended_field_mapping | standard_field_mapping) {
- pin=1
- methods=[
- obfName
- obfSignature
- deobfName
- deobfSignature
- ]
- mixin="io.mcdev.obfex.formats.srg.lang.psi.mixins.impl.SrgFieldMappingImplMixin"
- implements="io.mcdev.obfex.formats.srg.lang.psi.mixins.SrgFieldMappingMixin"
- }
- method_mapping ::= METHOD_KEY mapping_part method_signature mapping_part method_signature {
- pin=1
- methods=[
- obfName="/mapping_part[0]"
- obfSignature="/method_signature[0]"
- deobfName="/mapping_part[1]"
- deobfSignature="/method_signature[1]"
- ]
- }
- package_mapping_part ::= PACKAGE_NAME
- standard_field_mapping ::= mapping_part mapping_part {
- methods=[
- obfName="/mapping_part[0]"
- deobfName="/mapping_part[1]"
- ]
- }
- extended_field_mapping ::= mapping_part type_desc mapping_part type_desc {
- pin=3
- methods=[
- obfName="/mapping_part[0]"
- obfType="/type_desc[0]"
- deobfName="/mapping_part[1]"
- deobfType="/type_desc[1]"
- ]
- }
- mapping_part ::= PRIMITIVE | identifier
- type_desc ::= PRIMITIVE | CLASS_TYPE
- identifier ::= name_part (SLASH name_part)* {pin(".*")=1}
- name_part ::= NAME_ELEMENT
- method_signature ::= OPEN_PAREN param_types CLOSE_PAREN return_type {pin=1}
- param_types ::= type_desc*
- return_type ::= type_desc