A parser for Java Classfiles, written in Rust using nom.
- Header
- Magic const
- Version info
- Constant pool
- Constant pool size
- Constant types
- Utf8
- Integer
- Float
- Long
- Double
- Class
- String
- Fieldref
- Methodref
- InterfaceMethodref
- NameAndType
- MethodHandle
- MethodType
- InvokeDynamic
- Access flags
- This class
- Super class
- Interfaces
- Fields
- Methods
- Attributes
- Basic attribute info block parsing
- Known typed attributes parsing
- Critical for JVM
- ConstantValue
- Code
- StackMapTable
- Exceptions
- BootstrapMethods
- Critical for Java SE
- InnerClasses
- EnclosingMethod
- Synthetic
- Signature
- RuntimeVisibleAnnotations
- RuntimeInvisibleAnnotations
- RuntimeVisibleParameterAnnotations
- RuntimeInvisibleParameterAnnotations
- RuntimeVisibleTypeAnnotations
- RuntimeInvisibleTypeAnnotations
- AnnotationDefault
- MethodParameters
- Useful but not critical
- SourceFile
- SourceDebugExtension
- LineNumberTable
- LocalVariableTable
- LocalVariableTypeTable
- Deprecated
- Critical for JVM