Sam Harwell
a4ba562210
LexerATNSimulator adjusts the input position during a speculative predicate evaluation to accurately reflect the state where the predicate appears in the grammar
2012-10-31 21:52:41 -05:00
Sam Harwell
efa9ea7811
Simplify LexerATNSimulator to reduce duplicate code (duplicate instruction executions and duplicated code blocks)
2012-10-30 09:24:03 -05:00
Sam Harwell
bad2751a2c
Add edge suppression for lexer start state - required for left edge predicates
2012-10-30 08:46:42 -05:00
Terence Parr
72c1fc8f6d
tweaks on comments
2012-10-29 12:47:09 -07:00
Sam Harwell
f554a2ed4f
Eliminate debug and dfa_debug overhead in LexerATNSimulator by making them compile-time constants
2012-10-29 13:32:02 -05:00
Sam Harwell
7bf50c8263
LexerATNSimulator uses explicit lower bound for DFAState.edges array
2012-10-29 13:32:02 -05:00
Sam Harwell
1269ce8d4e
Remove 2 field accesses per input character in LexerATNSimulator
2012-10-29 13:32:01 -05:00
Sam Harwell
0deadc688a
Remove unnecessary array indexing operation in execDFA
2012-10-29 13:32:00 -05:00
Sam Harwell
c34f0d6945
Remove duplicate array bounds check
2012-10-29 13:31:59 -05:00
Sam Harwell
afed3ac349
Remove unnecessary null checks
2012-10-29 13:31:58 -05:00
Sam Harwell
d17f919123
Updated NotNull annotations in LexerATNSimulator
2012-10-29 13:31:57 -05:00
Sam Harwell
5dace66921
DFAState.configs cannot be null
2012-10-29 13:31:57 -05:00
Sam Harwell
9873230f55
Correctness for lexer DFA with semantic predicate evaluation only requires suppressing single edges from the DFA
2012-10-29 13:31:56 -05:00
Terence Parr
a115490d5e
Merge branch 'warnings-as-errors' of git://github.com/sharwell/antlr4
2012-10-29 11:27:46 -07:00
Sam Harwell
ee64790739
In lexer, configs which never reached a non-greedy decision state are fully greedy (unordered alternatives, longest match)
2012-10-29 13:14:51 -05:00
Sam Harwell
871db85ecb
Add field DecisionState.nonGreedy, computed in tool and serialized as one bit in the state type field
2012-10-29 13:14:50 -05:00
Sam Harwell
4adef1e455
Output from -atn flag shows the order of outgoing edges from decision states.
2012-10-28 11:17:39 -05:00
Sam Harwell
950f588ac0
Fix implementations: TokenStream interface says getText method returns non-null
2012-10-28 10:04:34 -05:00
Terence Parr
d5341b55af
Merge branch 'encapsulation' of git://github.com/sharwell/antlr4
2012-10-24 12:59:46 -07:00
Terence Parr
b89445e861
Merge branch 'maven-update' of git://github.com/sharwell/antlr4
2012-10-24 12:58:52 -07:00
Terence Parr
cb0f5c0e51
Merge branch 'parsecancellationexception' of git://github.com/sharwell/antlr4
2012-10-24 12:58:26 -07:00
Terence Parr
31c9fc33f1
Merge branch 'ordered-configs' of git://github.com/sharwell/antlr4
2012-10-24 10:51:56 -07:00
Terence Parr
4f918f75bc
Merge branch 'get-reachable-target' of git://github.com/sharwell/antlr4
2012-10-24 10:41:46 -07:00
Sam Harwell
a80a6022ff
Update pom.xml
2012-10-22 12:19:24 -05:00
Sam Harwell
bb44db6397
Create a new ParseCancellationException for BailErrorStrategy. Derived from RuntimeException so existing handlers will still work.
2012-10-22 12:12:39 -05:00
Sam Harwell
36c63db299
Remove redundant casts, encapsulate fields in RecognitionException
2012-10-22 09:52:55 -05:00
Sam Harwell
4790ab76e1
Encapsulate fields in NoViableAltException and LexerNoViableAltException
2012-10-22 09:40:44 -05:00
Sam Harwell
1ae3c0104c
Simplify FailedPredicateException constructors, encapsulate fields
2012-10-22 09:18:29 -05:00
Sam Harwell
12b2c34946
Lexer uses strictly-ordered alternatives within a rule. Simplifies code, increases performance when non-terminal (lexer rules) depth is limited, and actually fixes non-greedy behavior
2012-10-21 22:04:38 -05:00
Terence Parr
ed7d4b1dc1
fail option on predicates work.
2012-10-20 15:57:06 -07:00
Terence Parr
ab6b341942
a few tweaks/comments.
2012-10-20 12:51:36 -07:00
Sam Harwell
52f1d3b6e5
Simplify getReachableTarget
2012-10-16 08:04:42 -05:00
Sam Harwell
1af9b4c338
Simplify and document non-greedy behavior in processAcceptConfigs
2012-10-16 08:01:46 -05:00
Sam Harwell
fb87e4c785
Another fix for non-greedy with closures
2012-10-16 07:53:23 -05:00
Sam Harwell
f9a63b8810
Fix bug in PredictionContext.arrayMerge
2012-10-15 14:57:06 -05:00
Sam Harwell
6fa853c14f
Fixes to LexerATNSimulator.closure, fixes to non-greedy positive closure
2012-10-15 02:01:07 -05:00
Sam Harwell
a40073a8cc
Merge remote-tracking branch 'antlr/master' into non-greedy
2012-10-15 01:58:15 -05:00
Sam Harwell
bbe77782db
Fix state checking in new non-greedy handling
2012-10-15 00:56:25 -05:00
Sam Harwell
aa2223cd6a
Fix assertion in PredictionContext.mergeArrays
2012-10-14 22:40:34 -05:00
Sam Harwell
7c221f13ed
Unify EMPTY_FULL_CTX_INVOKING_STATE and EMPTY_INVOKING_STATE (fixes an array indexing error during closure)
2012-10-14 22:25:11 -05:00
Sam Harwell
025cc6187a
Fix handling of non-greedy blocks in the lexer (uses regex-style non-greedy with unordered alternatives)
2012-10-14 21:46:57 -05:00
Sam Harwell
28b243cda5
BlockEndState links to start state for each block in the ATN (constructed during deserialization)
2012-10-14 21:45:35 -05:00
Sam Harwell
0d30a7a60b
Add ATN representation for non-greedy decisions
2012-10-14 21:45:34 -05:00
Sam Harwell
c68c058280
Implement Array2DHashSet.iterator
2012-10-14 21:45:29 -05:00
Terence Parr
a0ffc84952
Merge branch 'master' into new-conflicting-alts
2012-10-14 18:47:32 -07:00
Terence Parr
327a3a0100
Revert "update comment on consume()"
...
This reverts commit 27a8e5e521
.
2012-10-14 18:46:54 -07:00
Terence Parr
54871d52ff
Revert "let it consume EOF since we sometimes need to match that during prediction"
...
This reverts commit 643edf0263
.
2012-10-14 18:46:43 -07:00
Terence Parr
75a01636d0
got ambiguity reporting set right I think. fixed unit tests to force exact ambig detection.
2012-10-14 18:42:43 -07:00
Terence Parr
e9c83c375f
cleanup and refactor conflict detection code into PredictionMode.
2012-10-14 17:37:15 -07:00
Terence Parr
01bbce6952
full LL is always correct now, if slower. Stops prediction when resolvesToJustOneViableAlt(). SLL always uses heuristic
2012-10-14 13:25:34 -07:00
Terence Parr
e7ece0e90a
got fast prediction termination with exactAmbig option that forces ANTLR to scan ahead until it identifies the true ambiguity.
2012-10-13 18:12:33 -07:00
Terence Parr
d6d3f6f506
missing ambig alt in msg.
2012-10-12 18:07:37 -07:00
Terence Parr
e69734c501
rm loopsSimulateTailRecursion
2012-10-12 17:49:43 -07:00
Terence Parr
2ecfe2671a
size!=cardinality with BitSet.
2012-10-11 20:20:02 -07:00
Terence Parr
f20cd82920
I need EOF edges on rule stop states for start rules.
2012-10-11 18:55:13 -07:00
Terence Parr
1723bbd6f5
no debug
2012-10-11 18:54:26 -07:00
Terence Parr
6654281aab
Merge branch 'master' into new-conflicting-alts
2012-10-11 18:52:22 -07:00
Terence Parr
27a8e5e521
update comment on consume()
2012-10-11 18:51:58 -07:00
Terence Parr
643edf0263
let it consume EOF since we sometimes need to match that during prediction
2012-10-11 18:50:02 -07:00
Terence Parr
badb48a987
almost there.
2012-10-11 18:47:47 -07:00
Terence Parr
058ed51349
initial impl
2012-10-11 13:09:08 -07:00
Terence Parr
ad438a70ac
updated the comments for SLL.
2012-10-11 12:09:38 -07:00
Terence Parr
ebe633a2cc
replace ctor for single ctx and don't merge wildcards when payloads aren't the same. fixes a unit test.
2012-10-08 15:26:56 -07:00
Terence Parr
7bc16f40ea
Merge branch 'prediction-context-fixes' of git://github.com/sharwell/antlr4
2012-10-08 11:37:29 -07:00
Terence Parr
d274650765
add null ptr so start rule it doesn't crash if you label the alternatives.
2012-10-08 11:32:38 -07:00
Sam Harwell
9cea095d81
Fix PredictionContext.mergeRoot placing states in the wrong order
2012-10-08 10:26:48 -05:00
Sam Harwell
f43e3614a8
Fix invoking states for recursion contexts
2012-10-08 07:38:06 -05:00
Sam Harwell
1defbdcc5d
Fix parent pointers in parse trees for nested recursion contexts
2012-10-07 23:01:26 -05:00
Terence Parr
05f1dc0d26
tweak
2012-10-01 16:09:18 -07:00
Sam Harwell
69c20f3cf6
Only perform array copy when necessary
2012-10-01 15:30:28 -05:00
Sam Harwell
3457cc73ea
Significant updates to UnbufferedCharStream to meet the IntStream and CharStream interface requirements
2012-10-01 15:29:51 -05:00
Sam Harwell
cd25890486
Many updates to UnbufferedTokenStream:
...
* Fix LT(-1) after a seek operation
* Prevent consume() after EOF is reached
* Use the EOF token provided by the TokenSource (no need to create a new one)
* Fix assigned token index when marks are in place and when add() is called by derived types
* Throw exception for some invalid use of mark/release/seek
* Prevent fill() from adding multiple EOF tokens
* Remove diagnostic println
* Updated field documentation
* Implement getTokenSource
2012-10-01 15:24:00 -05:00
Sam Harwell
5637a04eec
Extensively document the IntStream, CharStream, and TokenStream interfaces
2012-10-01 14:52:30 -05:00
Sam Harwell
fa3e6e5867
Move CharStream.EOF to IntStream.EOF
2012-10-01 14:09:11 -05:00
Sam Harwell
fa7015f798
Move test helper methods out of exposed UnbufferedCharStream API
2012-10-01 11:53:04 -05:00
Sam Harwell
1c65bcd02f
Move test helper methods out of exposed UnbufferedTokenStream API
2012-10-01 08:25:46 -05:00
Terence Parr
68dd847c04
* Fixed the unbuffered streams, which actually buffered everything
...
up by mistake. tweaked a few comments.
* Added a getter to IntStream for the token factory
2012-09-30 16:45:30 -07:00
Terence Parr
9845e4ff20
rm redundant field.
2012-09-30 12:46:01 -07:00
Terence Parr
ac29e6cdac
got unbufferedchar working I think.
2012-09-30 12:37:35 -07:00
Terence Parr
db1bfa9c03
ParserATNSimulator wasn't using Token type param.
2012-09-29 16:58:51 -07:00
Terence Parr
b56cd0f587
simplified delete configs algorithm.
2012-09-29 12:48:20 -07:00
Terence Parr
e78ecd418a
rm isGreedy from DecisionState, but allow ATN construction for lexer to be nongreedy. error if '.' in parser. rm unit tests for parser nongreedy
2012-09-29 12:33:00 -07:00
Terence Parr
c8a51ccfad
got wildcard working properly with recursion now!!! new unit test.
2012-09-27 12:22:16 -07:00
Terence Parr
19782e6d77
first wack at fixing nongreedy (ACTION | .)* for recursive rules.
2012-09-27 11:44:51 -07:00
Terence Parr
bca63c64aa
the test rig did not allow lexer only grammars; a regression.
2012-09-23 18:05:31 -07:00
Terence Parr
262a331a5b
recursive rule bug in lexer; the lexer ATN simulator was not checking for empty stack at rule stop states.
2012-09-23 18:04:46 -07:00
Sam Harwell
7ed6cdcc4b
TerminalNodeImpl.getSourceInterval didn't fulfill the contract of SyntaxTree.getSourceInterval
2012-09-22 20:10:01 -05:00
Sam Harwell
62e005c841
Add nb-configuration.xml files
2012-09-22 19:49:11 -05:00
Terence Parr
4abedb08dd
tweak comments
2012-09-22 12:29:22 -07:00
Terence Parr
ce38d61f3a
Merge branch 'flexiblehashmap' of github.com:sharwell/antlr4
2012-09-16 15:11:29 -07:00
Sam Harwell
1ce6b69651
Fix build warnings in FlexibleHashMap, reduce entry size
2012-09-16 13:44:34 -05:00
Sam Harwell
e9656e35f9
Fix codegen problem where notset and wildcard transitions could match invalid tokens and/or EOF
2012-09-16 12:56:10 -05:00
Terence Parr
aa2d893a77
got first draft of new "go/stop" algorithm.
2012-09-09 19:20:33 -07:00
Terence Parr
89656989e6
add new map that lets me specify hashCode/equals
2012-09-09 18:55:47 -07:00
Terence Parr
3c5dec1172
add large comment describing the decision rule for continuing analysis.
2012-09-09 17:56:42 -07:00
Terence Parr
4bbbff4e8e
comments and a rename
2012-09-08 15:23:33 -07:00
Terence Parr
0a961645be
fix comments; fix unit test
2012-09-08 13:13:00 -07:00
Sam Harwell
726fe2c983
Make sure to call visitErrorNode instead of visitTerminal when you have an ErrorNode. Also fix listener calls for case where _buildParseTrees is false (adds terminal as children of the rule nodes but won't actually construct the parse tree).
2012-09-08 14:57:30 -05:00
Terence Parr
7586afff27
don't pass new term node
2012-09-08 10:21:42 -07:00
Terence Parr
64cd79a18a
add return values
2012-09-08 10:14:10 -07:00