Releases: phorward/libphorward
Releases · phorward/libphorward
v1.0.0: Updated README and CHANGELOG
Released on: Nov 7, 2019
- parray:
- New data storage behind parray objects
- New functions for set management:
parray_union()
,parray_diff()
,
parray_sort()
,parray_concat()
, providing equivalence to their
plist counterparts - Changed signatures for parray iter functions
- plist:
- Improvements of the
plist
data type so thatplistel
provides no
(error-prone!) back-pointer to its list anymore. - Speed optimization on
plist_diff()
andplist_union()
. - New flag
PLIST_MOD_KEEPKEYS
to keep key order and implement opposite hiding (last key collision will be chained to the end). - New function
plist_getkey()
to iterate over available keys in a
hash-table configured plist object. - Flags generally stored as short values rather than int.
- Improvements of the
- pccl:
- Changed underlying data structures to the much faster parray.
- utf8:
putf8_strlen()
improved
- other:
- Switched license terms from 3-clause BSD to MIT
- Entirely restructured
src/
-folder. - Modularization of the command-line tools
pdoc
,pinclude
andpproto
. - Began development of a
ptest
utility to perform automated tests and CI, implemented several tests cases in different modules. - Improved program tracing facilities, including clock measuring to indicate slow running functions.
- Improved documentation and README.md.
- Shell script
standalone.sh
to build stand-alone source versions of
libphorward to be copied into other projects. - Moved the
pany
dynamic variant data type away into the phosphor repository.
v0.24
- Improved hash table feature of
plist
to use non-mersenne prime numbers for collision avoidance - Updated layout and cross-linking of the HTML-documentation
- Removed former
parse
module and integrated it into the UniCC repository - Removed former
vm
module and integrated it into the phosphor repository - Install
pdoc
,pinclude
andpproto
command-line tools to /bin - Removed
premcomment
tool
v0.23.0: This is libphorward 0.23.0
- parse: Implemented push-parsing
- Push-parsing allows to call the parser on token-base from the scanner,
so that more flexibility on input processing is achieved. - Parsers are now configured and executed using the parser context
data structure ppparctx. - New functions
pp_parctx_next()
,pp_parctx_next_by_name()
,
pp_parctx_next_by_idx()
as well aspp_parctx_init()
,
pp_parctx_create()
,pp_parctx_reset()
andpp_parctx_free()
. - Entirely revised functions
pp_par_autolex()
andpp_par_parse()
- Fixed BNF parsers to work with new push-parsing-based functions
- Push-parsing allows to call the parser on token-base from the scanner,
- regex: Implemented push-scanning
- Lexical analyzers are now configured and executing using the lexer context
data structure plexctx - New functions
plexctx_lex()
,plexctx_init()
,
plexctx_create()
,plexctx_reset()
andplexctx_free()
.
- Lexical analyzers are now configured and executing using the lexer context
- regex: Several improvements
plex_dump_dot()
allows to dump plex-scanners in dot-formatted
GraphViz format; This can also be triggered with plex command-line tool,
--dot
switch.- pregex_ptn function API white-listed for documentation generator
- New function
pregex_ptn_create()
as an object-oriented shortcut
forpregex_ptn_parse()
v0.22.4
v0.22.3
v0.22.2
v0.22.1
v0.22.0
Released on: April 17, 2018
- Parsing tools
- Revised all modules, separating the grammar definition entirely from the
parsing algorithm, lexer, parser and abstract syntax tree. This allows for
a much higher modularity. Thepppar
object now represents the internal
LALR parser that can be executed on arbitrary input, with a combined lexical
analyzer implemented usingplex
. - Revised and simplified LR parser driver, now working on state machine, and
not the data-structures from lr.c anymore. - Created better definition language called PBNF (Phorward BNF, pbnf.c)
- Frontends for BNF, EBNF and a Phorward-style BNF (PBNF) as input grammars
using the functions pp_gram_from_bnf(), pp_gram_from_ebnf() and
pp_gram_from_pbnf(). - Implied precedence & associativity for LALR conflict resolution, which can
be used via<<
(left-associative),>>
(right-associative) and
^^
(non-associative) in the pbnf language.
- Revised all modules, separating the grammar definition entirely from the
- Regular expressions
- Internal revisions and renamings.
- Cleaning data structures from temporal and ephemeral values.
- Removing
pregex_accept
structure - Renamed
begin
tostart
in theprange
structure.
- Trace facilities
- Evalutation of the TRACEFUNCTION environment variable to switch trace output
also on function-level, rather than module level. - New LOG macro to allow for printf-style formatted output.
- Evalutation of the TRACEFUNCTION environment variable to switch trace output
- Bugfixes
- Improved the plex command-line utility, it now recognizes
-b
and-e
correctly, allows for escape sequences and can read from stdin. - Improved the pregex command-line utility to use the input parameter as is,
if the parameter is not the name of a file. - Removed warnings and unused static functions from the entire library.
- Fixing & refactoring in p_ccl_parseshorthand() that caused invalid dfa state
machines generated from regular expressions on some 32-bit machine
configurations. - plex_tokenize() ran under some circumstances into an endless-loop.
- Improved the plex command-line utility, it now recognizes
- Documentation updated
v0.21.0
Released on: December 13, 2017
- Documentation updated and refreshed with some syntax-highlighting
- New array functions parray_next(), parray_prev(), parray_iter(), parray_riter() and parray_for()
- New list functions plist_iter(), plist_riter(), plist_iter_access(), plist_riter_access() and plist_concat()
v0.20.0
- Started use of a lexical analyzer in the build-in LR parser (very unstable!).
- Changed behavior of command-line tools to be more pynetree compliant.
- Fixing an ancient bug in the DFA construction mechanism building arbitrary
state orders. - New README.md and updated CHANGELOG.md