The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Changes for version 0.002 - 2016-03-28

  • Jean-Damien Durand <jeandamiendurand@free.fr>
    • dzil xtest
    • bin/javapp: recommend implicitely a redirection in the help
    • One-line description mode
    • BNF/OpCodeArray.pm: add constant_pool
    • bin/javapp: say output can contain UTF-8 characters
    • BNF/OpCodeArray.pm: relativeOffset
    • Struct/OpCode.pm: relativeOffset
    • Struct/ConstantUtf8Info.pm: removed duplicate
    • BNF/OpCodeArray.pm: use natively position returned by lexeme value instead of playing with Marpa::R2::Context::location in the action
    • Struct/_Base.pm: switch to Class::XSAccessor::Array
    • Util/BNF.pm: possibility to overwrite top or bottom bnf
    • Role/Parser.pm: fix logging
    • Struct/_Base.pm: fix generation of accessors in tiny mode
    • Object::Tiny::XS
    • Role/Parser.pm: micro optimization
    • bin/javapp: NOTES
    • bin/javapp: POD
    • Java/ClassFile.pm: POD
    • Parser/Actions.pm: utf8 micro optimization
    • Parser/Actions.pm: utf8 micro optimizations and protections
    • Role/Parser.pm: A little perl op optimization
    • Role/Parser.pm: Make sure that bypassing inner grammar is using a defined value
    • Role/Parser.pm: bypass inner grammar creation when the result is predictable
    • bin/classdump: removal
    • bin/javapp: fix calls to print
    • Java/ClassFile.pm: fixed calls to logger
    • bin/javapp: fix usage of archive
    • .jar support
    • cosmetic dev+
    • Fixes after testing
    • stringification dev+
    • Struct/_Base.pm: left align x => y
    • Util/AccessFlagsStringification.pm: Access flags stringification
    • bin/javapp: back to print
    • BNF/ClassFile.pm: take care of unnecessay references counts
    • Role/Parser.pm: make constant_pool with a default instead of being lazy
    • Util/ArrayRefWeakenisation.pm: ArrayRef content weakenisator
    • bin/javapp: use File::Find
    • tracing levels
    • event 'attribute_length$' was missing
    • cosmetic fix
    • Role/Parser.pm: Added offset in debug statements
    • Added usuefull debug statements
    • bin/javapp: log info of current file
    • Added missing grammars
    • BNF/ExceptionsAttribute.pm: cosmetic (removed a comma)
    • Added missing grammar
    • Struct/AnnotationDefaultAttribute.pm: stringification
    • Struct/Annotation.pm: stringification
    • BNF/RuntimeVisibleAnnotationsAttribute.pm: comment fix
    • Struct/ClassFile.pm: Removed unused _stringify method
    • Array stringification helper
    • bin/javapp: add options
    • Fix ConstantPoolArray constructor when no under AUTHOR_TESTING
    • overload dev+
    • use a real constant pool array object
    • use overload
    • toString dev+
    • Fix BNF for tag, that must be an u1
    • dzil compliance
    • javapp is now classdump
    • Javapp dev+
    • Move check out - this will be in a dedicated module OOTD
    • Checker dev+
    • Leave validation to a later stage
    • javapp dev+
    • OpCode: make originPos an explicit attribute at object creation, avoiding a sub BUILD
    • Parse/InnerGrammar.pm: micro but justified optimization, nbDone is really a temporary thingy
    • javap dev+
    • Struct runtime optimization in production mode
    • Role/Parser.pm: use prod_isa() + micro optimizations
    • Parser/InnerGrammar.pm: use prod_isa()
    • Parser/Actions.pm: micro optimizations
    • BNF/OpCodeArray.pm: bug fix when there is no padding, and remove padding from action value
    • Util/ProductionMode.pm: prod_isa()
    • BNF/{AnnotationArray,ElementValueArray}.pm: these two grammars are pure arrays, the simplest possible grammars and also the most dangerous: use inner_silent() to prevent loop on evevents calling events and so on
    • Role/Parser.pm: New routine inner_silent() to read an inner grammar and ignore eventual events after it is pushed as a MANAGED lexeme
    • BNF/ConstantDoubleInfo.pm: _value is indeed a double, not a long
    • Parse/Actions.pm: but fix when calculating size of Bit::Vector
    • Role/Parser.pm: Removed a debug print to STDERR -;
    • Load time optimization
    • Role/Parser.pm: My usual recognizers hooks when semantics never change (and this is the case here)
    • BNF/OpCodeArray.pm: padding fix and internal lexeme add for prevent over-calculation of entries
    • Struct/OpCode.pm: remember only offset (length calculation is garbbled because of an "ok" internal lexeme anyway)
    • Role/Parser.pm: lexeme_read_u4 fix
    • BNF/ConstantIntegerInfo.pm: integer() was renamed to signedU4()
    • Role/Parser.pm: localization of G, R, support of literal() and pause() for all signed/unsigned U1, U2, U4
    • Parser/InnerGrammar.pm: Support of inner grammar of unknown number of elements
    • Parser/Actions: Bit::Vector globalization, renamed integer() to signedU4()
    • Support of opcodes
    • Struct/_Base.pm: my minimalist OO thingy - not used yet
    • OpCode dev+
    • Bug fixes when testing
    • BNF/AppendFrame.pm: bug fix
    • Fixes
    • Fields working
    • Fixed naming
    • Attributes dev+
    • StackMap dev+
    • CodeAttribute dev+
    • Leave validation out for the moment
    • Add required
    • ConstantValueAttribute dev+
    • Make sure all Constant*Info.pm referenced by ConstantValueAttribute have a _value attribute
    • BNF/ConstantValueAttribute.pm: Added
    • Add requires to all Constant members
    • BNF/SignatureAttribute.pm: signature themselves
    • getAndCheckCpInfo() centralization
    • BNF/ClassFile.pm: use explicit literals and rules
    • Role/Parser.pm: make literal arguments explicit
    • Util/BNF.pm: make u1, u2, u4 and managed internal
    • InterfacesArray
    • BNF/ClassFile.pm: Removed debug statement since now it looks ok
    • ConstantPool revisited dev+
    • New architecture dev+
    • New architecture: dev+
    • dev+
    • Common/InnerGrammar.pm: Add first() method
    • Add a weak ref to classFile in all sub-objects
    • Java/ClassFile.pm: Set counter and array immediately when calling inner grammars
    • ClassFile/Common.pm: executeInnerGrammar() returns inner grammar value
    • Java/ClassFile.pm: Added missing close() in the constructor + more in POD
    • All grammar values are objects
    • return objets directly in the AST dev+
    • Java/ClassFile.pm: Removed unused variable %_ACCESSFLAGS
    • Java/ClassFile.pm: Return a self-describing array as ast
    • ClassFile/ConstantPoolArray.pm: Renamed _checkItem to _checkConstantPoolItem
    • ClassFile/Validator.pm: dev+
    • Methodtype validation
    • Methodhandle validation dev+
    • ClassFile/ConstantPoolArray.pm: CONSTANT_MethodHandle_info validation dev+
    • ClassFile/FieldDescriptor.pm: Removed
    • ClassFile/ConstantPoolArray.pm: parse tree value dev+
    • Java/ClassFile.pm: Keep original bitmask in access_flags parse tree value
    • ClassFile/ConstantPoolArray.pm: validation dev+
    • constant pool validation
    • ClassFile/Common.pm: Do basic logging without lex information when in the value() mode
    • Revert "Java/ClassFile.pm: remember constantPool ast"
    • Java/ClassFile.pm: remember constantPool ast
    • ClassFile/Common.pm: make executeInnerGrammar return its ast
    • Common/Actions.pm: Removed unnecessary temporary variables - bis
    • Common/Actions.pm: Removed unnecessary temporary variables
    • Java/ClassFile.pm: Improve POD about computed_value
    • Java/ClassFile.pm: Removed analysis of access_flags - will be done somewhere else
    • Java/ClassFile.pm: precisions in POD
    • ClassFile/*Array.pm: Fix parse tree value
    • Fix undef entry in ConstantPoolArray directly ConstantPoolArray module -;
    • ConstantPoolArray and wanted undef entries dev+
    • ClassFile/Common.pm: has_r() and not _has_r()
    • ClassFile/Common.pm: Fixed logging in literalXxx() methods
    • ClassFile/Common.pm: Add literalManaged
    • ClassFile/FieldDescriptor.pm: dev+
    • with qw/MarpaX::Java::ClassFile::Common::InnerGrammar/
    • Common/InnerGrammar.pm: Centralized common code for inner grammars into this role
    • ClassFile/Common.pm: use directly stack for performance
    • lib: Hide recognizer that is always implicit in user-space
    • ClassFile/Common.pm more log wrapper

Documentation

javap writen in perl

Modules

Java .class parsing