
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