05.11., 9:00 - 11:00: Due to updates GitLab may be unavailable for some minutes between 09:00 and 11:00.

CHANGES.txt 7.65 KB
Newer Older
di68kap's avatar
di68kap committed
1 2 3 4 5 6 7 8 9 10
DHParser Version 0.9.3 (23.6.2020)
..................................

- Complete refactoring of left-recursion algorithm. No performance surprises
  or running out of stack space any more (see parse.Forward.__call__())
- transform functions now try to keep error messages attached to nodes when
  reshaping tree (see transform.update_attr())
- now using argparse instead of hand-written code for argument parsing


eckhart's avatar
eckhart committed
11 12 13 14 15 16 17
DHParser Version 0.9.2 (11.5.2020)
..................................

- Moved to poetry-packaging <https://github.com/python-poetry/poetry>


DHParser Version 0.9.1 (8.5.2020)
18
.................................
eckhart's avatar
eckhart committed
19

20
- Support for various variants of EBNF-Grammars (see examples/EBNF/grammar_examples)
eckhart's avatar
eckhart committed
21
- More static error checking for EBNF-Grammars
22 23
- for debugging, notices informing about where the parser resumes after
  an error can be added to the error messages. (See config-parameter
eckhart's avatar
eckhart committed
24
  "resume_notices" and '@ resume_XXXX' as well as '@ skip_XXX'-directives.)
25
- added support for tag-less parsers: i.e. parser that are assigned to a
26 27
  symbol that matches a certain regular expression, say, a leading underscore
  will be treated as anonymous parsers
di68kap's avatar
di68kap committed
28 29 30
- extended support for dropping of content during parsing-stage, now any
  tag-less parser's content can be dropped, not only that of the Token
  and Whitespace-parsers
eckhart's avatar
eckhart committed
31
- AllOf- and SomeOf-parsers have been exchanged in favor of a more flexible
32
  Interleave-parser
33 34
- (some) static analysis of the generated parser during ebnf-compilation for
  possible mistakes
eckhart's avatar
eckhart committed
35
- better parsing history (now moved from parse.py to the new trace.py-module)
di68kap's avatar
di68kap committed
36
- some speed optimizations
Eckhart Arnold's avatar
Eckhart Arnold committed
37 38
- refactoring: history tracking has been moved from parse.py to module 
  trace.py (new) and log.py
eckhart's avatar
eckhart committed
39 40


eckhart's avatar
eckhart committed
41 42
DHParser Version 0.9.0 (20.10.2019)
...................................
di68kap's avatar
di68kap committed
43

eckhart's avatar
eckhart committed
44
- rudimentary language server support (still experimental!)
di68kap's avatar
di68kap committed
45 46 47 48 49 50 51
- translation pipeline only stops on fatal errors. This makes previews
  even for partially erroneous code possible
- better cython support
- scripts (dhparser.py, dhparser_rename.py) moved to
  DHParser/scripts-directory
- syntaxtree.py streamlined
  (breaking change: Node.select_by_tag() remove, use Node.select() instead
52 53
- added DHParser/templates subdirectory and moved larger code templates
  from dhparser.py script to the templates-subdirectory
54 55


56
DHParser Version 0.8.9 (5.4.2019)
eckhart's avatar
eckhart committed
57 58
.................................

59 60
- experimental server module
- json-serialization of Nodes
eckhart's avatar
eckhart committed
61

62

eckhart's avatar
eckhart committed
63 64
DHParser Version 0.8.8 (4.3.2019)
.................................
eckhart's avatar
eckhart committed
65

eckhart's avatar
eckhart committed
66
- setup: entry-script repaired
eckhart's avatar
eckhart committed
67 68


eckhart's avatar
eckhart committed
69 70 71 72 73
DHParser Version 0.8.7 (3.3.2019)
.................................

- better packaging

74

75 76
DHParser Version 0.8.6 (3.3.2019)
.................................
77

78
- default configuration now centralized in DHParser/configuration.py
eckhart's avatar
eckhart committed
79 80 81 82 83 84 85 86 87 88
- dropped python 3.4 support
- infinite loops in ZeroOrMore, OneOrMore and the like will now simply
  be broken rather than reported as an error
- better parser-optimization, i.e. flattening and dropping of irrelevant
  nodes while parsing already.
- no caching of node.content any more, because this was conceptually
  unsound. Trees are refactored and nodes dropped all the time which
  would require invalidating the cache, which would be hard to implement.
- mini-framework for static grammar analysis added (see parse.Grammar).
  As of now: no use case
89

90

eckhart's avatar
eckhart committed
91 92
DHParser Version 0.8.5 (10.2.2019)
..................................
93

94
- optimization: flattens anonymous nodes already while parsing
eckhart's avatar
eckhart committed
95 96 97
- optimization: drops empty anonymous nodes already during parsing
- optimization: optionally allows to drop anonymous whitespace and tokens
  while parsing
98 99
- major refactorings of node and parser class hierarchy: much simpler now,
  no zombie classes needed any more
eckhart's avatar
eckhart committed
100 101 102
- parser_guard() is now integrated into the Parser class: Parsing
  functionality moved to _parse() method, while Parser.__call__() is now the
  new parser guard
103 104 105 106
- better support for customized error messages + bug fixes
- better cython support (makes it about 2.5 times as fast if cython is used)
- testing.grammar_suite now uses multiprocessing to run tests
- parse.Parser.apply() reworked
eckhart's avatar
eckhart committed
107 108 109


DHParser Version 0.8.4 (6.1.2019)
110
.................................
di68kap's avatar
di68kap committed
111

eckhart's avatar
eckhart committed
112 113 114 115 116
- customized resuming after parser errors! (still experimental, see
  tests/test_ebnf.TestCustomizedResumeParsing as well as
  tests/test_parse.TestReentryAfterError)
- error messages for parser errors can now be configured to be more
  user friendly (see test/test_ebnf.TestCuratedErrors)
117
- lookahead parsers can now be unit-tested (experimental)
eckhart's avatar
eckhart committed
118
- customized (faster) deepcopy of syntax trees
119
- better customization of XML-serialization of syntax-trees
120 121
- support for thread-safe globals and configuration data
  via toolkit-module
eckhart's avatar
eckhart committed
122 123
- development status of package raised to "4 - Beta". It's really quite
  stable now, but backwards incompatible changes may still happen!
di68kap's avatar
di68kap committed
124 125


eckhart's avatar
eckhart committed
126 127 128
DHParser Version 0.8.3 (20.8.2018)
..................................

129
- new transformation function collapse_children_if()
eckhart's avatar
eckhart committed
130 131 132 133 134
- restored compatibility with Python 3.4
- StepByStep Guide typos fixed
- bug fixes


eckhart's avatar
eckhart committed
135 136 137 138 139
DHParser Version 0.8.2 (10.7.2018)
..................................

- refactoring of module parser.py for more simplicity. RE is now
  a simple (macro-style) function instead of a class of its own.
eckhart's avatar
eckhart committed
140 141
  Class Token has been merged with PlainText. Possible break of
  backwards compatibility with certain AST-transformation-tables in
eckhart's avatar
eckhart committed
142 143 144
  connection with Token and RE-nodes!


eckhart's avatar
eckhart committed
145 146 147 148 149 150
DHParser Version 0.8.1 (2.7.2018)
.................................

- compatibility fixes for Python 3.7


eckhart's avatar
eckhart committed
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
DHParser Version 0.8.0 (24.6.2018)
..................................

- refactoring of error reporting: it is now done centrally through the
  (newly introduced) syntaxtree.RootNode object; makes it faster and easier
- "step by step" guide added to the documentation
- XML is now a first class citizen for serialization next to S-expressions:
  xml serialization can now also be read with syntaxtree.parse_xml() plus
  better serialization with syntaxtree.Node.as_xml()
- added example: XML-Parser
- added optional CST-reporting on a case by case basis to the testing
  framework, using the "*"-marker to indicate which test should add CSTs to
  the report
- moved compilation support to a separate module: compile.py
- source mapping added if preprocessor changes source code
  (see module preprocess.py)
- new semantics for syntaxtree.Node.__str__: now includes error messages;
  use Node.content to retrieve the content without any error messages
- LaTeX-example: better AST-transformations.


172 173 174 175 176 177 178 179 180 181 182
DHParser Version 0.7.8 (29.11.2017)
...................................

- added parsers for arbitrarily ordered elements (parser.Unordered class)
- various bug fixes
- html based history logs for better readability
- code cleanups


DHParser Version 0.7.7 (2.9.2017)
.................................
Eckhart Arnold's avatar
Eckhart Arnold committed
183 184 185 186 187 188 189 190 191 192

- dhparser script now creates and initializes project dir
- parsing is now based on a StringView class which other
  than plain Python strings does not copy strings when
  slicing. (Speeds up parsing for longer documents.)
- AST-transformations now receive the complete context, i.e.
  the list of all parent nodes instead of just the node to
  transform


193 194
DHParser Version 0.7.4 (2.7.2017)
.................................
195 196 197 198 199 200

- package now includes 'dhparser' script
- more transformation primitives for AST-transformation
- various bug fixes


Eckhart Arnold's avatar
Eckhart Arnold committed
201
DHParser Version 0.7.3 (27.6.2017)
Eckhart Arnold's avatar
Eckhart Arnold committed
202 203 204 205 206 207 208 209 210 211 212 213 214
..................................

- bug fixes for setuptools packaging


DHParser Version 0.7.1 (27.6.2017)
..................................

- first PyPI release
- added type annotations for static type checking with mypy
- many changes, some incompatible with prior versions


Eckhart Arnold's avatar
Eckhart Arnold committed
215 216 217 218 219
DHParser Version 0.6.0 (23.4.2017)
..................................

first public release