Changes for version 0.40 - 2014-11-11
- Ben Bullock <benkasminbullock@gmail.com>
- indent the heredocument part of the code correctly
- Jean-Damien Durand <jeandamiendurand@free.fr>
- Method astToString and cscan
- ISO_ANSI_C_2011/Scan.pm: removed a print to STDERR
- Grammar/ISO_ANSI_C_2011.pm: careful use of separator v.s. proper
- dev+
- typedef_texts a-la xpath
- typedef_hash a-la xpath
- share/xpath/xsd2fdecls.xpath: exclude path having structDeclarationList from fdecls candidates
- share/xpath/xsd2fdecls.xpath: exclude TYPEDEF from fdecls candidates
- Move to a correct solution and process the tree using XML::LibXML (until a Marpa XML parser -;)
- Grammar/ISO_ANSI_C_2011.pm: forget around structContext internal rule in the value
- ISO_ANSI_C_2011/Scan.pm: prepare for use of Scan/Actions.pm
- Grammar/ISO_ANSI_C_2011.pm: use semantics_package instead of obsolete action_object
- Scan/Actions.pm: specific Scan actions
- C/AST.pm: actionObject, nonTerminalSemantic and terminalSemantic arguments to grammar
- Grammar/ISO_ANSI_C_2011.pm: added configurable action object, reworked internal variable names
- Grammar/ISO_ANSI_C_2011.pm: added configurable non-terminal and terminal semantic actions
- work on cscan.xsd
- work on _pushRcp
- share/xsd/cscan.xsd
- merge conflict
- ISO_ANSI_C_2011/Scan.pm: typedefs_structs fix in case of opaque struct forward declaration
- Grammar/ISO_ANSI_C_2011/Scan.pm: fix typedef_structs
- Grammar/ISO_ANSI_C_2011.pm: allow empty externalDeclaration
- Grammar/ISO_ANSI_C_2011.pm: allow no translation unit
- ISO_ANSI_C_2011/Scan.pm: cleaned bloated _buildContext()
- xslt: dev+
- ISO_ANSI_C_2011/Scan.pm: fix undef args
- Grammar/ISO_ANSI_C_2011.pm: Support of GCC case ranges
- ISO_ANSI_C_2011: Support of GCC escape ESC character
- ISO_ANSI_C_2011/Scan.pm: list fixes
- t/struct.t: add a function declaration in struct
- Callback/Events.pm: force struct counter to have a persistence level to "level", add these counters to parameterDeclarationCheck
- Callback/Events.pm: added missing counters in topic data, that caused parse table to be processed even in struct context
- t/struct.t: renamed misleading identifier "free" to "this"
- t/struct.t: case that failed with 0.36-TRIAL
- t/obscure_typedef_*style.t : change comment
- bug fix with parameter not obscuring typedef
- bin/c2ast: missing --trace option
- rulesByDepth: sort by ruleId eventually
- ruleByDepth: use rule_name and put more info the result
- use Marpa::R2 2.081001
- rulesByDepth
- POD update
- bin/c2ast: Mention '-' for STDIN usage in the POD and fix log info about it
- bin/c2ast: Support STDIN, loglevel aliases on the command-line, optional start (dev+), add INFO level logging to bin/c2ast
- optional :start, dev+
- AST/Impl.pm: use Marpa::R2 2.080000
- ISO_ANSI_C_2011/Scan.pm: ft can be '0', so use // instead of ||
- Test suite and CPP different behaviour v.s. OS
- bin/c2ast: --lazy, --typedef, --enum and --nocpp options
- AST.pm: mod POD for lazy mode
- AST.pm: even in lazy mode we can use typedef/enum helpers
- AST.pm: type, enum and lazy options support. Preparation for start option support
- AST/impl.pm: added lexeme_alternative() and lexeme_complete()
- bin/*: say that filename must be the last argument when using unknown option(s)
- Optimization bis
- Global optimization
- Callback/Events.pm : optimization
- t\delayed_directDeclaratorIdentifier.t: more tests
- Grammar/ISO_ANSI_C_2011.pm: need for a special lexeme in compoundStatementReenterScope
- Scope management: delay flag should be per scope, closing a scope should recursively its parent if it is marked delayed
- Callback/Events.pm: delayed directDeclaratorIdentifier test
- Callback/Events.pm: fixed a vicious case where directDeclaratorIdentifier is not yet propagated into declarationCheckinitDeclaratorList
- Removed unwanted file from previous commit
- bin/c2ast: fix pod2usage call
- bin/cscan: pass through of arguments, fix POD output
- Grammar/ISO_ANSI_C_2011.pm: unmask gccExtension
- ASM.pm: added a NOTES section
- Removed work files
- t/*.t: alwys call value()
- Opaque ASM support for everything not GCC inline ASM
- AST/Util.pm: force non true space to a true space for error reporting
- AST/Util.pm: Fixed $log->fatalf() arguments
- MASM: dev+
- work/MSASM2.pl: dev+
- work/MSASM.bnf: fixed end of buffer detection + use forgiving
- work/MSASM.bnf: add end of buffer to endOfLine
- work/MSASM.bnf: dev+
- Revert "work/MSASM.bnf: dev+"
- work/MSASM.bnf: :discard rule dev+
- MSASM.bnf: dev+
- Impl.pm: Bump Marpa::R2 dependency to version 2.078000
- Grammar/ISO_ANSI_C_2011.pm: use insentitive lexemes for MASM
- AST.pm: Reduce the number of calls to value()
- dist.ini: Move [OSPrereqs / MSWin32] after [MakeMaker]
- Grammar/ISO_ANSI_C_2011.pm: ambiguity with msvsAsmType
- ISO_ANSI_C_2011/Scan.pm: Environment variables support for cpprun and cppflags, Shell quoting when executing the preprocessor
- dist.ini: Win32::ShellQuote on MSWin32
- examples/h2xs.PL : Marpa aware version
- ISO_ANSI_C_2011/Scan.pm: more protections
- ISO_ANSI_C_2011/Scan.pm: parsed_fdecls is not interested by typedef'ed functions declarations, prevent more undefined to be inserted
- bin/cscan: fixed mod example, "mytype" should read "double"
- ISO_ANSI_C_2011/Scan.pm: mod is setted via an appended, its separator is empty
- Removed unused blog file and dir
- ISO_ANSI_C_2011/Scan.pm: no splice if not necessary, exhibits a test failure under perl <= 5.14
- bin/cscan: --in option
- bin/cscan: --out and --err options, yet another --xpath example
- bin/cscan: fix $xml usage confusion in source
- bin/cscan: revisited example to find declared strings
- bin/cscan: example for find declared strings
- bin/cscan: say that get method are for C::Scan like methods
- bin/cscan: removed a debugging print STDERR
- bin/cscan: say in the abstract this is a C::Scan alternative
- bin/cscan: no critic on the eval (bis)
- bin/cscan: no critic on the eval
- bin/c2ast: perlcritic
- c2ast.pl -> c2ast
- say that c2ast.pl is now c2ast
- bin/cscan: more examples with --cppflags
- bin/cscan: another example taking about inner anonymous types
- bin/cscan : implementation of --xml and --xpath options
- ISO_ANSI_C_2011/Scan: fix calculation of line number
- t/scan.t: skip file/line information in tests dev+
- ISO_ANSI_C_2011/Scan.pm: line calculation dev+
- ISO_ANSI_C_2011.pm: <DATA> should be loaded once
- bin/scan: xpath preparation
- ISO_ANSI_C_2011/Scan: function type is not inherited
- bin/cscan: generic get argument
- ISO_ANSI_C_2011/Scan.pm: original filename processing fix
- bin/cscan: POD fix
- bin/cscan : a very special replacement for POD not generated at run time
- ISO_ANSI_C_2011/Scan.pm: perlcritic on $_
- t/scan.t: fix following removal of use C::Scan
- ISO_ANSI_C_2011/Scan.pm: typo that exhibits under perl <= 5.12
- t/scan.t: remove use C::Scan
- use #!perl for shebang (same effect as #!/usr/bin/perl but I prefer the former)
- bin/c2ast.pl: fix some POD formatting
- cscan cmdline prototype
- Commented C::Scan comparison in tests - too many failures
- Yet POD fixes
- Scan.pm: update SYNOPSIS
- release trial fixes
- C::Scan cmp MarpaX::Languages::C::Scan
- typedefs_structs test and change following before/after fix
- ISO_ANSI_C_2011/Scan.pm : missing enum in KEY2ID and fix before/after as per C::SCan
- ISO_ANSI_C_2011/Scan.pm: POD fix
- ISO_ANSI_C_2011/Scan: POD fixes
- vdecl_hash test
- vdecls test
- typedef_texts and typedefs_maybe tests
- ISO_ANSI_C_2011/Scan: sort explicitely when output is a map on hash result
- scan.t: typedef_hash test
- scan.t: t+
- parsed_fdecls test
- ISO_ANSI_C_2011/Scan.pm: Fix bug in _analyseDirectAbstractDeclarator, missing checks in _prependRcp and _appendRcp
- ISO_ANSI_C_2011/Scan.pm: Fix POD and 'ty' in parsed_fdecls in case of a function
- ISO_ANSI_C_2011/Scan.pm: Fixed PURGE_IDX value, removed unused _copyRcp
- C::Scan t+
- C::Scan integration: t+
- use Pod::Usage
- c2ast.pl: say that unknown options are sent to cpp
- import C::Scan-like module
- AST.pm: Initial line number should be 1 instead of 0
- c2ast.pl: move File::Spec->canonpath at a better place
- c2ast.pl: use File::Spec->canonpath before file comparison
- comment #7
- Grammar/ISO_ANSI_C_2011.pm: Added missing priority for IDENTIFIER_UNAMBIGUOUS
- bin/c2ast.pl: typo in usage
- t/gcc_extension.t: tests
- ISO_ANSI_C_2011.pm: restored (gccExtension) rhs in specifiers declarations
- ISO_ANSI_C_2011.pm: moved misplaced (gccExtension) rhs
- Fixed reference data
- Remove unused event
- Runtime optimization
- Remove usage of clone
- Fix show source when failure is on paused lexeme
- use Clone instead of Storable
- Removed unused import
- runtime optimization
- renamed cached ncb from _ncb to _cacheNcb
- Avoid one internal match
- Cases where IDENTIFIER is not ambiguous
- Modifications as per yafce
- runtime optimizations
- MSVS's .type could eat C lexemes DOT and 'type'
- Back to version with GCC extension in the grammar
- Fix errors let by previous commit
- Discard GCC __extension__
- Removed unused event
- More GCC asm tests
- New reference data
- Removed gccEmptyRule, Support of GCC asm goto
- Newline stuff (Marpa i.e. unicode v.s. only \n)
- Work on newline
- Work on typedef priority
- Removed ASM pause before preparation
- GCC_ASM token can also be "asm"
- New version of reference data
- Support of binary constants (GCC extension)
- __asm G1 preparation
- _doPauseAfterLexeme renamed to ->doPauseBefore
- <G0 anything but space> replaced by <G0 constant>
- GCC __extension__ ony once for expression
- GCC __extension__ cannot be in :discard
- :discard of __extension (GCC)
- :discard of GCC __attribute__
- renamed
- Move GCC __attribute__ to :discard
- Added missing MSVS __thiscall and __clrcall to function modifier
- Move MSVS's __inline and __forceinline into generic INLINE lexeme
- MSVS __declspec :discard test
- Move __declspec to :discard
- Try to make grammer more readable (2)
- Try to make grammer more readable
- Add missing MSVS declspec modifiers
- Renamed t/discard_pragma.t to t/discard_MSVS_pragma.t
- Remove logging
- __pragma vtordisp
- __pragma strict_gs_check
- __pragma setlocale
- __pragma section
- __pragma runtime_checks
- __pragma region/endregion
- __pragma pop_macro/push_macro
- __pragma pointers_to_members
- __pragma pack
- __pragma optimize
- __pragma once
- __pragma message
- __pragma managed/unmanaged
- __pragma make_public
- __pragma loop
- __pragma intrinsic
- __pragma inline_recursion
- __pragma inline_depth
- __pragma include_alias
- __pragma hdrstop
- __pragma function
- __pragma fp_contract
- __pragma float_control
- __pragma fenv_access
- __pragma detect_mismatch
- __pragma deprecated
- __pragma conform
- __pragma component
- __pragma comment
- bss_seg, code_seg, const_seg and data_seg share the same syntax
- __pragma bss_seg fixes, add __pragma check_stack
- test pragma bss_seg
- pragma bss_seg
- add comments
- pragma warning fix
- pragma test
- pragma fix
- Missing statement in pragma push
- __declspec(deprecated) fix and __pragma alloc_text, auto_inline, warning discard
- Support of logInfo __ALL__ continued
- Fix reference data
- __ALL__ special lexeme survey support, MSVS fixes
- Document __ALL__ --lexeme value
- Associate user-data to typedef and enum
- new function startAndLength
- deref nothing, revisit few sequences
- Return true is something found
- Push dirty files correctly
- typedefPerScope and enumAnyScope accessors
- scope object accessor
- Fix default callback value
- Better comment
- Fix pod
- v0.19
- Call log only when its level is ok
- Remove useless commented block
- Remove non-needed events
- Tiny optimization
- v0.18
- c2ast cc replacement example
- stack based version as per jeffreykegler
- Tiny optimisations
- Tiny optimisation
- --logstderr option
- Fix doc
- Remove non-needed use Config
- Promote STRING_LITERAL_UNIT as lexeme
- Remember logInfo parameter so that we do not log more than was it requested
- Fix logInfo parameter
- Trying to fix Changes content, some dirty things will lay out forever it seems
- v0.17
- c2ast.pl: typo in regexp
- v0.16
- Optimisations (ter)
- v0.15
- Lasy commit just to have git cached connection for dzil release
- v0.14
- Limit calls to last_completed
- Fix format pull request #2
- Ambiguity because of gcc
- Doc update
- Optimisations
- Jeffrey Kegler <JKEGL@cpan.org>
- Revise --cppfile help
Modules
Translate a C source to an AST
Simple but powerful callback generic framework that depend on nothing else but core modules.
Events callback when translating a C source to an AST
Code reference for the Simple callback generic framework.
Options for the Simple callback generic framework.
C grammar written in Marpa BNF
ISO ANSI C 2011 grammar written in Marpa BNF
ISO ANSI C 2011 grammar actions
ISO ANSI C 2011 grammar actions in Scan mode
Implementation of Marpa's interface
Log::Any implementation on top of Marpa
Scope management when translating a C source to an AST
C Translation to AST - Class method utilities
Find data in C AST
C::Scan-like interface