Skip to content

Releases: phorward/libphorward

v1.0.0: Updated README and CHANGELOG

07 Nov 17:27
Compare
Choose a tag to compare

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 that plistel provides no
      (error-prone!) back-pointer to its list anymore.
    • Speed optimization on plist_diff() and plist_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.
  • 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 and pproto.
    • 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

01 Jan 21:09
Compare
Choose a tag to compare
  • 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 and pproto command-line tools to /bin
  • Removed premcomment tool

v0.23.0: This is libphorward 0.23.0

27 Sep 19:11
Compare
Choose a tag to compare
  • 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 as pp_parctx_init(),
      pp_parctx_create(), pp_parctx_reset() and pp_parctx_free().
    • Entirely revised functions pp_par_autolex() and pp_par_parse()
    • Fixed BNF parsers to work with new push-parsing-based functions
  • 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() and plexctx_free().
  • 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
      for pregex_ptn_parse()

v0.22.4

06 Jul 07:17
Compare
Choose a tag to compare
  • v0.22.4: Memory leaks removed

v0.22.3

15 May 20:57
Compare
Choose a tag to compare
  • v0.22.3: Updated documentation, thanks to AGS

v0.22.2

25 Apr 15:02
Compare
Choose a tag to compare

v0.22.2: inline-symbols incorrectly implemented in pbnf

v0.22.1

19 Apr 09:51
Compare
Choose a tag to compare
  • v0.22.1: Build-system fixes (Windows only)
  • v0.22.1: pgetline() function as POSIX compatiblity layer

v0.22.0

17 Apr 09:44
Compare
Choose a tag to compare

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. The pppar object now represents the internal
      LALR parser that can be executed on arbitrary input, with a combined lexical
      analyzer implemented using plex.
    • 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.
  • Regular expressions
    • Internal revisions and renamings.
    • Cleaning data structures from temporal and ephemeral values.
    • Removing pregex_accept structure
    • Renamed begin to start in the prange 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.
  • 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.
  • Documentation updated

v0.21.0

13 Dec 22:50
Compare
Choose a tag to compare

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

08 Nov 12:18
Compare
Choose a tag to compare
  • 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