| Program | ::= | program(Classes | Interfaces). |
| Classes | ::= | [ ] | [Class | Classes] |
| Interfaces | ::= | [ ] | [Interface | Interfaces] |
| Class | ::= | class(ClassName,OptionClassName,SuperInterfaces,Fields,Methods,final(Bool),public(Bool),abstract(Bool)) |
| Interface | ::= | interface(InterfaceName,SuperInterfaces,Fields,Methods,final(Bool),public(Bool),abstract(Bool)) |
| ClassName | ::= | className(packageName(String),shortClassName(String)) |
| OptionClassName | ::= | none | ClassName |
| InterfaceName | ::= | interfaceName(packageName(String),shortClassName(String)) |
| SuperInterfaces | ::= | Interfaces |
| Fields | ::= | [ ] | [Field | Fields] |
| Field | ::= | field(FieldSignature,final(Bool),static(Bool),Visibility,initialValue(InitialValue)) |
| FieldSignature | ::= | fieldSignature(FieldName,Type) |
| Visibility | ::= | package | protected | private | public |
| InitialValue | ::= | undef | null | int(Int) |
| FieldName | ::= | fieldName(ClassName,ShortFieldName) |
| ShortFieldName | ::= | shortFieldName(String) |
| Type | ::= | primitiveType(PrimType) | refType(RefType) |
| PrimType | ::= | boolean | byte | short | int |
| RefType | ::= | classType(ClassName) | interfaceType(InterfaceName) | arrayType(Type) |
| Methods | ::= | [ ] | [Method | Methods] |
| Method | ::= | method(MethodSignature,OptionBytecodeMethod,final(Bool),static(Bool),Visibility) |
| MethodSignature | ::= | methodSignature(MethodName,Parameters,OptionType) |
| MethodName | ::= | methodName(ClassName,ShortMethodName) |
| ShortMethodName | ::= | shortMethodName(String) |
| Parameters | ::= | [ ] | [Type | Parameters] |
| OptionType | ::= | none | Type |
| OptionBytecodeMethod | ::= | none | bytecodeMethod(StackSize,LocalVarSize,FirstAddress,methodId(ModuleName,MethodIndex),ExceptionHandlers) |
| StackSize | ::= | UnsignedInt |
| LocalVarSize | ::= | UnsignedInt |
| FirstAddress | ::= | Pc |
| ModuleName | ::= | String |
| MethodIndex | ::= | UnsignedInt |
| Instructions | ::= | [ ] | [Instruction | Instructions] |
| ExceptionHandlers | ::= | [ ] | [ExHandler | ExceptionHandlers] |
| ExceptionHandler | ::= | exceptionHandler(OptionClassName,StartPc,EndPc,HandlerPc) |
| StartPc | ::= | Pc |
| EndPc | ::= | Pc |
| HandlerPc | ::= | Pc |
| Bytecode | ::= | bytecode(ModuleName,Pc,MethodIndex,Instruction,Offset). |
| Pc | ::= | UnsignedInt |
| MethodIndex | ::= | UnsignedInt |
| Offset | ::= | Int |
| VariableIndex | ::= | UnsignedInt |
| Instruction | ::= | aaload | aastore | aconst_null | aload(VariableIndex) | areturn | arraylength | anewArray(refType(RefType)) | astore(VariableIndex) | athrow | baload | bastore | checkcast(refType(RefType)) | const(primitiveType(PrimType),Int) | dup| dup_x1 | dup_x2 | getfield(FieldSignature) | getstatic(FieldSignature) | goto(Offset) | i2b | i2s | ibinop(BinOpType) | iaload | iastore | if_acmpeq(Offset) | if_acmpne(Offset) | if_icmp(Offset,CompType) | if0(Offset,CompType) | ifnonnull(Offset) | ifnull(Offset) | iinc(VariableIndex,Int) | iload(VariableIndex) | instanceof(refType(RefType)) | invokestatic(MethodSignature) | invokevirtual(MethodSignature) | ireturn | istore(VariableIndex) | multianewarray(refType(RefType)) | new(ClassName) | newarray(primitiveType(PrimType)) | nop | pop | pop2 | putfield(FieldSignature) | putstatic(FieldSignature) | return | saload | sastore | swap | ineg |
| BinOpType | ::= | addInt | andInt | divInt| mulInt | orInt | remInt | shlInt | shrInt | subInt | xorInt |
| CompType | ::= | eqInt | neInt | ltInt | leInt | geInt | gtInt |