Erez Sh
57a602758d
Merged part of Earley & XEarley implementation. Major reduction
6 years ago
Erez Shinan
65d3212bed
Temporarily disable leo transitives
6 years ago
night199uk
80a09697fe
Rebuild the way Earley prioritizes ambiguities
- Makes rule ordering the default ambiguity tie breaker.
E.g.
start: a | b
a: "A"
b: "A"
will return:
start
a
start: b | a
a: "A"
b: "A"
will return
start
b
- Replaces the ambiguity='resolve__antiscore_sum' with a separate option: 'priority'.
The priority option has 4 values: 'auto', 'none', 'normal', 'invert'.
'Auto' maps to 'Normal' for CYK and Earley and 'None' for LALR.
'None' filters your priorities and ignores them. This saves some extra tree walking on Earley.
'Normal' uses your priorities untouched, mimicing the old behaviour.
'Invert' negates your priorities, emulating the old 'resolve__antiscore_sum' behaviour.
This allows you to use priority logic even when ambiguity=='explicit', to get a better idea
of the shape of your tree; and to easily disable priorities without removing them from the
grammar for testing (or performance).
- ambiguity='explicit' now correctly returns an ambiguous tree again, as 0.6 did.
6 years ago
night199uk
80964e903b
Simplify the way we create Leo sets
Avoids recursion and improves performance slightly
6 years ago
Erez Shinan
76e185a36c
Added the Forest interface for explicit ambiguity
6 years ago
night199uk
04d90fa916
Implement Joop Leo's optimizations for right recursion performance
6 years ago
night199uk
8fa8ac36fc
Remove Earley Column
We can replace Earley Columns with basic python sets
for improved performance and simplicity.
6 years ago
night199uk
bb22c84df3
Speed up repetitive parsing using the same parser
When using the same parser repeatedly for small parsers we incur
significant overhead by recreating the ForestVisitor each parser.
We can cache the Forest walker and re-use it by making it stateless.
Also, we can use slots for all of the Forest Walkers to reduce
construction delay and function call overhead.
6 years ago
Erez Shinan
b2489e13e2
A few fixes (tests + interface)
6 years ago
Erez Shinan
1798971455
Adjustments
6 years ago
night199uk
1d5fd7301a
Heavy modifications to the Earley parser to try and make it handle more
types of ambiguity.
- Rewritten along the lines of Elizabeth Scott's parser.
https://www.sciencedirect.com/science/article/pii/S1571066108001497
- Implement SPPF trees per Elizabeth Scott and Bram van der Sanden's work.
http://www.bramvandersanden.com/post/2014/06/shared-packed-parse-forest/
6 years ago
Erez Shinan
eba99662c4
Bug in pretty printing of Earley derivations (issue #210 )
6 years ago
Erez Shinan
5c6df8e825
Moved and restructured exceptions
* All exceptions are now under exceptions.py
* UnexpectedInput is now superclass of UnexpectedToken and UnexpectedCharacters,
all of which support the get_context() and match_examples() methods.
6 years ago
Erez Shinan
6d76a4ce8d
visitor_args -> v_args
6 years ago
Erez Shinan
6bfc27c11d
New transformers near completion
Nearley tool still needs fixing
7 years ago
Erez Shinan
4864a1cf4d
More work
7 years ago
Erez Shinan
5e546f38a9
args decorators actually work now
7 years ago
Erez Shinan
cf7ddeee88
Earley working too
7 years ago
Erez Shinan
c3bce19dc2
More steps towards a good solution
7 years ago
Erez Shinan
349a607ae3
Some more normalizing
7 years ago
Erez Shinan
b951b5f79c
Significant reduction in memory consumption (Saving only parse-table instead of analysis instance)
7 years ago
Erez Shinan
327cca8c00
Added 'considered_rules' to exceptions, to help users debug
7 years ago
Erez Shinan
07f45a0bd3
Style fixes
7 years ago
Erez Shinan
b90b0a215f
Fixed reconstruct (Issue #72 )
7 years ago
Erez Shinan
3d8b8b4725
A few more adaptations
7 years ago
Ehud Tamir
7c253b9372
Merge CYK parser.
7 years ago
Erez Shinan
39e58cb8fd
Post-refactor cleanup
7 years ago
Erez Shinan
1cc4c965e8
Big Refactor: Grammars now build in half the time. Code shorter & cleaner.
7 years ago
Erez Shinan
5748920df4
BUGFIX in xearley + Feature: earley__predict_all
7 years ago
Erez Shinan
e77433f19a
Superficial improvement to Earley
7 years ago
Erez Shinan
34449651bf
Added UnexpectedInput exception (with line & column) to xearley (Issue #43 )
7 years ago
Erez Shinan
eea569fa3a
Tiny fix
7 years ago
Erez Shinan
0155d3d956
A few more fixes
7 years ago
Erez Shinan
93302d7ceb
Important optimization for fix
7 years ago
Erez Shinan
c93140386d
BUGFIX: The Earley parser collected repeating derivations, and filtered them out much later than needed. This resulted in very long lists and many unnecessary comparisons.
7 years ago
Erez Shinan
551482898c
Fix for earley__all_derivations = False
7 years ago
Erez Shinan
035eea234f
BUGFIX: Tree comparison in Earley wasn't hashed, which caused a huge spike in run-time for some cases.
7 years ago
Erez Shinan
063c7fbdab
Tiny fix for Python3
7 years ago
Erez Shinan
aede340449
Added earley__all_derivations due to performance concerns
7 years ago
Erez Shinan
d9b490f322
Refactoring for ambiguity resolution
7 years ago
Erez Shinan
07fcc26422
Bugfix #21 : Can now handle recursive ambiguity while still defending against infinite recursion
7 years ago
Erez Shinan
4e89084336
Oops
7 years ago
Erez Shinan
121d54ec3a
Fix for priority in Earley
7 years ago
Erez Shinan
5c4c320c26
Small fixes
7 years ago
Erez Shinan
dda0719375
Post-merge cleanup
7 years ago
Erez Shinan
4eec924403
Added prioritization to Earley. Use rule.1 etc. Highest priority will be selected in case of ambiguity.
7 years ago
Erez Shinan
70fa3c6ea9
Tiny fix for issue #14
Version bump
7 years ago
Erez Shinan
48efa6500a
Improvements to the Earley parser ambiguity resolution
7 years ago
Erez Shinan
686e796a62
Small improvements to Earley
8 years ago
Erez Shinan
32cbf1eb19
Improvements to the Earley parser code
8 years ago