Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: java/jvm/level1/extracted
Source used for this grammar: Jeroen van den Bos, Jurgen Vinju, lang::jvm::ast::Level1
, 2010–2012 [GitHub]
PrimitiveTypeDescriptor
, TypeDescriptor
, MethodDescription
, TypeSignature
, FieldTypeSignature
, ClassTypeSignature
, TypeArg
, Class
, AccessModifier
, ClassModifier
, InnerClass
, Field
, FieldModifier
, Method
, MethodModifier
, Instruction
, TryCatchBlock
, LocalVariable
), 0 root (—), 2 top (MethodDescription
, Class
), 0 bottom (—).[boolean]
, [char]
, [byte]
, [short]
, [int]
2, [float]
2, [long]
2, [double]
2, [type]
6, [primitive]
2, [internalName]
6, [object]
, [array]
2, [arguments]
, [returnType]
, [methodDescriptor]
, [sig]
, [fieldType]
4, [class]
4, [classType]
, [name]
19, [typeVar]
, [args]
2, [topLevel]
, [inner]
, [wildcard]
, [extends]
, [super]
2, [version]
2, [modifiers]
7, [signature]
6, [superName]
2, [interfaces]
2, [sourceFile]
, [sourceDebug]
, [outerClass]
, [outerMethod]
, [outerMethodDescription]
, [innerClasses]
2, [fields]
2, [methods]
2, [public]
, [private]
, [protected]
, [access]
6, [final]
3, [interface]
, [abstract]
2, [synthetic]
3, [annotation]
, [enum]
2, [deprecated]
, [outerName]
, [innerName]
, [innerClass]
2, [description]
14, [value]
, [field]
2, [static]
2, [volatile]
, [transient]
, [exceptions]
, [instructions]
, [tryCatchBlocks]
, [localVariables]
, [method]
, [synchronized]
, [bridge]
, [varags]
, [native]
, [strict]
, [owner]
9, [getStatic]
, [putStatic]
, [getField]
, [putField]
, [index]
15, [amount]
, [increment]
, [nop]
, [aConstNull]
, [iConstM1]
, [iConst0]
, [iConst1]
, [iConst2]
, [iConst3]
, [iConst4]
, [iConst5]
, [lConst0]
, [lConst1]
, [fConst0]
, [fConst1]
, [fConst2]
, [dConst0]
, [dConst1]
, [iaLoad]
, [laLoad]
, [faLoad]
, [daLoad]
, [aaLoad]
, [baLoad]
, [caLoad]
, [saLoad]
, [iaStore]
, [laStore]
, [faStore]
, [daStore]
, [aaStore]
, [baStore]
, [caStore]
, [saStore]
, [pop]
, [pop2]
, [dup]
, [dupX1]
, [dupX2]
, [dup2]
, [dup2X1]
, [dup2X2]
, [swap]
, [iAdd]
, [lAdd]
, [fAdd]
, [dAdd]
, [iSub]
, [lSub]
, [fSub]
, [dSub]
, [iMul]
, [lMul]
, [fMul]
, [dMul]
, [iDiv]
, [lDiv]
, [fDiv]
, [dDiv]
, [iRem]
, [lRem]
, [fRem]
, [dRem]
, [iNeg]
, [lNeg]
, [fNeg]
, [dNeg]
, [iShl]
, [lShl]
, [iShr]
, [lShr]
, [iuShr]
, [luShr]
, [iAnd]
, [lAnd]
, [iOr]
, [lOr]
, [iXor]
, [lXor]
, [i2l]
, [i2f]
, [i2d]
, [l2i]
, [l2f]
, [l2d]
, [f2i]
, [f2l]
, [f2d]
, [d2i]
, [d2l]
, [d2f]
, [i2b]
, [i2c]
, [i2s]
, [lCmp]
, [fCmpL]
, [fCmpG]
, [dCmpL]
, [dCmpH]
, [iReturn]
, [lReturn]
, [fReturn]
, [dReturn]
, [aReturn]
, [return]
, [arrayLength]
, [aThrow]
, [monitorEnter]
, [monitorExit]
, [operand]
3, [biPush]
, [siPush]
, [newArray]
, [label]
19, [ifEq]
, [ifNe]
, [ifLt]
, [ifGe]
, [ifGt]
, [ifLe]
, [ifICmpEq]
, [ifICmpNe]
, [ifICmpLt]
, [ifICmpGe]
, [ifICmpGt]
, [ifICmpLe]
, [ifACmpEq]
, [ifACmpNe]
, [goto]
, [jsr]
, [ifNull]
, [ifNonNull]
, [line]
, [labelIndex]
, [lineNumber]
, [opcode]
, [localVariable]
2, [iLoad]
, [lLoad]
, [fLoad]
, [dLoad]
, [aLoad]
, [iStore]
, [lStore]
, [fStore]
, [dStore]
, [aStore]
, [ret]
, [string]
, [ldcString]
, [ldcInt]
, [ldcLong]
, [ldcFloat]
, [ldcDouble]
, [defaultLabel]
2, [keys]
, [cases]
2, [lookupSwitch]
, [invokeVirtual]
, [invokeSpecial]
, [invokeStatic]
, [invokeInterface]
, [invokeDynamic]
, [dimensions]
, [multiANewArray]
, [min]
, [max]
, [tableSwitch]
, [new]
, [aNewArray]
, [checkCast]
, [instanceOf]
, [startLabelIndex]
3, [endLabelIndex]
3, [handlerLabelIndex]
2, [tryCatchBlock]
, [finallyBlock]
.PrimitiveTypeDescriptor ::= [boolean]::ε [char]::ε [byte]::ε [short]::ε [int]::ε [float]::ε [long]::ε [double]::ε
TypeDescriptor ::= [primitive]::[type]::PrimitiveTypeDescriptor [object]::[internalName]::string [array]::[type]::TypeDescriptor
MethodDescription ::= [methodDescriptor]::[arguments]::TypeDescriptor [returnType]::TypeDescriptor
TypeSignature ::= [primitive]::[type]::PrimitiveTypeDescriptor [fieldType]::[sig]::FieldTypeSignature
FieldTypeSignature ::= [classType]::[class]::ClassTypeSignature [array]::[type]::TypeSignature [typeVar]::[name]::string
ClassTypeSignature ::= [topLevel]::[internalName]::string [args]::TypeArg [inner]:: [class]::ClassTypeSignature [name]::string [args]::TypeArg
TypeArg ::= [type]::[fieldType]::FieldTypeSignature [wildcard]::ε [extends]::[fieldType]::FieldTypeSignature [super]::[fieldType]::FieldTypeSignature
Class ::= [class]::[version]::integer [modifiers]::ClassModifier [name]::string [signature]::string [superName]::string [interfaces]::string [sourceFile]::string [sourceDebug]::string [outerClass]::string [outerMethod]::string [outerMethodDescription]::string [innerClasses]::InnerClass [fields]::Field [methods]::Method [class]:: [version]::integer [modifiers]::ClassModifier [name]::string [signature]::string [superName]::string [interfaces]::string [innerClasses]::InnerClass [fields]::Field [methods]::Method
AccessModifier ::= [public]::ε [private]::ε [protected]::ε
ClassModifier ::= [access]::[access]::AccessModifier [final]::ε [super]::ε [interface]::ε [abstract]::ε [synthetic]::ε [annotation]::ε [enum]::ε [deprecated]::ε
InnerClass ::= [innerClass]::[name]::string [outerName]::string [innerName]::string [modifiers]::ClassModifier [innerClass]:: [name]::string [modifiers]::ClassModifier
Field ::= [field]::[modifiers]::FieldModifier [name]::string [description]::string [signature]::string [value]::α [field]:: [modifiers]::FieldModifier [name]::string [description]::string [signature]::string
FieldModifier ::= [access]::[access]::AccessModifier [static]::ε [final]::ε [volatile]::ε [transient]::ε [synthetic]::ε [enum]::ε
Method ::= [method]::[modifiers]::MethodModifier [name]::string [description]::string [signature]::string [exceptions]::string [instructions]::Instruction [tryCatchBlocks]::TryCatchBlock [localVariables]::LocalVariable
MethodModifier ::= [access]::[access]::AccessModifier [static]::ε [final]::ε [synchronized]::ε [bridge]::ε [varags]::ε [native]::ε [abstract]::ε [strict]::ε [synthetic]::ε
Instruction ::= [getStatic]::[owner]::string [name]::string [description]::string [putStatic]:: [owner]::string [name]::string [description]::string [getField]:: [owner]::string [name]::string [description]::string [putField]:: [owner]::string [name]::string [description]::string [increment]:: [index]::integer [amount]::integer [nop]::ε [aConstNull]::ε [iConstM1]::ε [iConst0]::ε [iConst1]::ε [iConst2]::ε [iConst3]::ε [iConst4]::ε [iConst5]::ε [lConst0]::ε [lConst1]::ε [fConst0]::ε [fConst1]::ε [fConst2]::ε [dConst0]::ε [dConst1]::ε [iaLoad]::ε [laLoad]::ε [faLoad]::ε [daLoad]::ε [aaLoad]::ε [baLoad]::ε [caLoad]::ε [saLoad]::ε [iaStore]::ε [laStore]::ε [faStore]::ε [daStore]::ε [aaStore]::ε [baStore]::ε [caStore]::ε [saStore]::ε [pop]::ε [pop2]::ε [dup]::ε [dupX1]::ε [dupX2]::ε [dup2]::ε [dup2X1]::ε [dup2X2]::ε [swap]::ε [iAdd]::ε [lAdd]::ε [fAdd]::ε [dAdd]::ε [iSub]::ε [lSub]::ε [fSub]::ε [dSub]::ε [iMul]::ε [lMul]::ε [fMul]::ε [dMul]::ε [iDiv]::ε [lDiv]::ε [fDiv]::ε [dDiv]::ε [iRem]::ε [lRem]::ε [fRem]::ε [dRem]::ε [iNeg]::ε [lNeg]::ε [fNeg]::ε [dNeg]::ε [iShl]::ε [lShl]::ε [iShr]::ε [lShr]::ε [iuShr]::ε [luShr]::ε [iAnd]::ε [lAnd]::ε [iOr]::ε [lOr]::ε [iXor]::ε [lXor]::ε [i2l]::ε [i2f]::ε [i2d]::ε [l2i]::ε [l2f]::ε [l2d]::ε [f2i]::ε [f2l]::ε [f2d]::ε [d2i]::ε [d2l]::ε [d2f]::ε [i2b]::ε [i2c]::ε [i2s]::ε [lCmp]::ε [fCmpL]::ε [fCmpG]::ε [dCmpL]::ε [dCmpH]::ε [iReturn]::ε [lReturn]::ε [fReturn]::ε [dReturn]::ε [aReturn]::ε [return]::ε [arrayLength]::ε [aThrow]::ε [monitorEnter]::ε [monitorExit]::ε [biPush]::[operand]::integer [siPush]::[operand]::integer [newArray]::[operand]::integer [ifEq]::[label]::integer [ifNe]::[label]::integer [ifLt]::[label]::integer [ifGe]::[label]::integer [ifGt]::[label]::integer [ifLe]::[label]::integer [ifICmpEq]::[label]::integer [ifICmpNe]::[label]::integer [ifICmpLt]::[label]::integer [ifICmpGe]::[label]::integer [ifICmpGt]::[label]::integer [ifICmpLe]::[label]::integer [ifACmpEq]::[label]::integer [ifACmpNe]::[label]::integer [goto]::[label]::integer [jsr]::[label]::integer [ifNull]::[label]::integer [ifNonNull]::[label]::integer [label]::[index]::integer [lineNumber]:: [line]::integer [labelIndex]::integer [localVariable]:: [opcode]::integer [index]::integer [iLoad]::[index]::integer [lLoad]::[index]::integer [fLoad]::[index]::integer [dLoad]::[index]::integer [aLoad]::[index]::integer [iStore]::[index]::integer [lStore]::[index]::integer [fStore]::[index]::integer [dStore]::[index]::integer [aStore]::[index]::integer [ret]::[index]::integer [ldcString]::[string]::string [ldcInt]::[int]::integer [ldcLong]::[long]::integer [ldcFloat]::[float]::integer [ldcDouble]::[double]::integer [lookupSwitch]:: [defaultLabel]::integer [keys]::integer [cases]::integer [invokeVirtual]:: [owner]::string [name]::string [description]::string [invokeSpecial]:: [owner]::string [name]::string [description]::string [invokeStatic]:: [owner]::string [name]::string [description]::string [invokeInterface]:: [owner]::string [name]::string [description]::string [invokeDynamic]:: [owner]::string [name]::string [description]::string [multiANewArray]:: [description]::string [dimensions]::integer [tableSwitch]:: [min]::integer [max]::integer [defaultLabel]::integer [cases]::integer [new]::[internalName]::string [aNewArray]::[internalName]::string [checkCast]::[internalName]::string [instanceOf]::[internalName]::string
TryCatchBlock ::= [tryCatchBlock]::[startLabelIndex]::integer [endLabelIndex]::integer [handlerLabelIndex]::integer [type]::string [finallyBlock]:: [startLabelIndex]::integer [endLabelIndex]::integer [handlerLabelIndex]::integer
LocalVariable ::= [localVariable]::[name]::string [description]::string [signature]::string [startLabelIndex]::integer [endLabelIndex]::integer [index]::integer