Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: java/jvm/level0/extracted
Source used for this grammar: Jeroen van den Bos, Jurgen Vinju, lang::jvm::ast::Level0
, 2010–2012 [GitHub]
Class
, InnerClass
, Field
, Method
, Instruction
, TryCatchBlock
, LocalVariable
), 0 root (—), 1 top (Class
), 0 bottom (—).[version]
2, [access]
7, [name]
10, [signature]
6, [superName]
2, [interfaces]
2, [sourceFile]
, [sourceDebug]
, [outerClass]
, [outerMethod]
, [outerMethodDescription]
, [innerClasses]
2, [fields]
2, [methods]
2, [class]
2, [outerName]
, [innerName]
, [innerClass]
2, [description]
8, [value]
, [field]
2, [exceptions]
, [instructions]
, [tryCatchBlocks]
, [localVariables]
, [method]
2, [opcode]
7, [owner]
2, [fieldRef]
, [index]
4, [amount]
, [increment]
, [instruction]
, [operand]
, [integer]
, [labelIndex]
2, [jump]
, [label]
, [line]
, [lineNumber]
, [localVariable]
2, [stringValue]
, [loadConstantString]
, [integerValue]
, [loadConstantInteger]
, [longValue]
, [loadConstantLong]
, [floatValue]
, [loadConstantFloat]
, [doubleValue]
, [loadConstantDouble]
, [defaultLabelIndex]
2, [keys]
, [cases]
2, [lookupSwitch]
, [dimensions]
, [multiANewArray]
, [minIndex]
, [maxIndex]
, [tableSwitch]
, [type]
2, [startLabelIndex]
3, [endLabelIndex]
3, [handlerLabelIndex]
2, [tryCatchBlock]
, [finallyBlock]
.Class ::= [class]::[version]::integer [access]::integer [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 [access]::integer [name]::string [signature]::string [superName]::string [interfaces]::string [innerClasses]::InnerClass [fields]::Field [methods]::Method
InnerClass ::= [innerClass]::[name]::string [outerName]::string [innerName]::string [access]::integer [innerClass]:: [name]::string [access]::integer
Field ::= [field]::[access]::integer [name]::string [description]::string [signature]::string [value]::α [field]:: [access]::integer [name]::string [description]::string [signature]::string
Method ::= [method]::[access]::integer [name]::string [description]::string [signature]::string [exceptions]::string [instructions]::Instruction [tryCatchBlocks]::TryCatchBlock [localVariables]::LocalVariable
Instruction ::= [fieldRef]::[opcode]::integer [owner]::string [name]::string [description]::string [increment]:: [index]::integer [amount]::integer [instruction]::[opcode]::integer [integer]:: [opcode]::integer [operand]::integer [jump]:: [opcode]::integer [labelIndex]::integer [label]::[index]::integer [lineNumber]:: [line]::integer [labelIndex]::integer [localVariable]:: [opcode]::integer [index]::integer [loadConstantString]::[stringValue]::string [loadConstantInteger]::[integerValue]::integer [loadConstantLong]::[longValue]::integer [loadConstantFloat]::[floatValue]::integer [loadConstantDouble]::[doubleValue]::integer [lookupSwitch]:: [defaultLabelIndex]::integer [keys]::integer [cases]::integer [method]:: [opcode]::integer [owner]::string [name]::string [description]::string [multiANewArray]:: [description]::string [dimensions]::integer [tableSwitch]:: [minIndex]::integer [maxIndex]::integer [defaultLabelIndex]::integer [cases]::integer [type]:: [opcode]::integer [description]::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