Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- parserClass="JavaByteCodeLanguage.parser.JavaByteCodeParser"
- parserUtilClass="JavaByteCodeLanguage.parser.JavaByteCodeParserUtil"
- extends="com.intellij.extapi.psi.ASTWrapperPsiElement"
- psiClassPrefix="JavaByteCode"
- psiImplClassSuffix="Impl"
- psiPackage="JavaByteCodeLanguage.psi"
- psiImplPackage="JavaByteCodeLanguage.psi.impl"
- elementTypeHolderClass="JavaByteCodeLanguage.psi.JavaByteCodeTypes"
- elementTypeClass="JavaByteCodeLanguage.psi.JavaByteCodeElementType"
- tokenTypeClass="JavaByteCodeLanguage.psi.JavaByteCodeTokenType"
- //implements("") = "org.intellij.lang."
- tokens=[
- SPACE='regexp:\s+'
- COMMENT='regexp://.*'
- NUMBER ='regexp:(-)?\d+'
- STRING="regexp:('([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\")"
- //JAVA="regexp:(([A-Za-z])*\.)+([A-Za-z])*(\{(.)*\})?"
- INST="regexp:A(A)?(CONST_NULL|LOAD|STORE)(_\d)?|(I)(CONST|LOAD|STORE)(_M?\d)?|(I|L|F|D|A)?RETURN|INVOKE(SPECIAL|STATIC|VIRTUAL)|DUP|NOP|IF(EQ|NE|LT|GE|GT|LE|_ICMP(EQ|NE|LT|GE|GT|LE)|_ACMP(EQ|NE))|IINC|ARRAYLENGTH|GOTO|LoadString|NEW|CHECKCAST"
- PUT_GET_INSTR="regexp:(put|get) .* :"
- LOAD_INSTR="regexp:Load([A-Za-z]+)[(]\"?.*\"?[)]"
- StuffInAngles="regexp:ยซ(\w+)ยป"
- // TYPES
- JAVATYPE="regexp:(([A-Za-z_])*\.)+[A-Z-a-z_]*"
- PRIMITIVETYPE="regexp:void|boolean|byte|char|short|int|long|float|double"
- MODIFIER="regexp:static|final|abstract|default"
- PREMODIFIER="regexp:public|private|protected|default"
- EOF = "\n"
- STRINGVAR = "regexp:[A-Za-z0-9]+"
- ]
- psiImplUtilClass="JavaByteCodeLanguage.psi.impl.JavaByteCodePsiImplUtil"
- // mixin("JAVATYPE")="JavaByteCodeLanguage.psi.impl.JavaByteCodeNamedElementImpl"
- // implements="JavaByteCodeLanguage.psi.JavaByteCodeNamedElement"
- // methods=[getKey getValue getName setName getNameIdentifier getReferences]
- }
- jbcFile ::= item_*
- private item_ ::= (MethodDeclaration)
- Type ::= (JType | PRIMITIVETYPE)('[]')*
- JType ::= JAVATYPE {mixin="JavaByteCodeLanguage.psi.impl.JavaByteCodeNamedElementImpl"
- implements="JavaByteCodeLanguage.psi.JavaByteCodeNamedElement"
- methods=[getJavaType getName setName getNameIdentifier getReferences]}
- MethodDeclaration ::= MethodHead InstructionHead InstructionBody* LocVarTableDeleration?
- MethodHead ::= Modifier? Type MethodName StuffInAngles* // JAVA
- Modifier ::= PREMODIFIER? MODIFIER*
- //MethodName ::= ('<init>'|'<clinit>'|STRINGVAR)('('(Type ','?)*')')?
- // | STRINGVAR {mixin="JavaByteCodeLanguage.psi.impl.JavaByteCodeNamedElementImpl"
- // implements="JavaByteCodeLanguage.psi.JavaByteCodeNamedElement" methods=[getKey getValue getName setName getNameIdentifier]}
- MethodName ::= ('<init>'|'<clinit>'|DefMethodName) params
- DefMethodName ::= STRINGVAR {mixin="JavaByteCodeLanguage.psi.impl.JavaByteCodeNamedElementImpl"
- implements="JavaByteCodeLanguage.psi.JavaByteCodeNamedElement"
- methods=[getStringVar getName setName getNameIdentifier getReferences]}
- params ::= ('('(Type ','?)*')')?
- private InstructionHead ::= PC Line Instruction
- private InstructionBody::= NUMBER NUMBER Instr
- Instr ::= (INST ("("((JavaOP|NUMBER|STRING)','?)*")"|JavaOP)?) | (PUT_GET_INSTR Type) | (LOAD_INSTR)// TODO {recoverWhile=recoverTillNextInstr}
- JavaOP ::= ((Type|STRINGVAR)('{'Type MethodName'}')?)+| 'lvIndex=' NUMBER
- private recoverTillNextInstr ::= !NUMBER
- LocVarTableDeleration ::= LocVarTableHead LocVarTableBody*
- private LocVarTableHead ::= LocalVariableTable
- private LocVarTableBody ::= "["NUMBER ">" NUMBER ")" "=>" (Type('[]')* (this | STRINGVAR)) // NOT RIGHT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement