Commit Graph

909 Commits

Author SHA1 Message Date
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
Terence Parr 2b5c3723ba update comments from Sam's version 2012-09-06 14:17:13 -07:00
Terence Parr 38e0ad238d Merge branch 'bail-error-propagation' of github.com:sharwell/antlr4 into main 2012-09-04 19:00:54 -07:00
Terence Parr 8dd215f4b4 Merge branch 'deserialize' of github.com:sharwell/antlr4 into main 2012-09-04 18:59:38 -07:00
Terence Parr 201db8b6d0 merge sam's pulls 2012-09-04 18:59:20 -07:00
Terence Parr 3565efbbc3 Merge branch 'parserrulecontext-tostring' of github.com:sharwell/antlr4 into main 2012-09-04 18:37:03 -07:00
Terence Parr 20aa8cf4ec update comments 2012-08-27 12:05:05 -07:00
Terence Parr d9ad3d0bde rm as unneeded. 2012-08-27 12:02:16 -07:00
Terence Parr 60d99e62dc rm ParseListener; tested the tracer with left recursive rules; weird but deterministic for entry events. 2012-08-27 11:22:42 -07:00
Terence Parr 050b27cf65 tweak comment 2012-08-26 18:09:52 -07:00
Terence Parr 1a52e0212e tweak comment 2012-08-26 17:21:35 -07:00
Terence Parr e33e355d66 tweak comment 2012-08-26 16:32:28 -07:00
Terence Parr ad737ebdf6 tweak 2012-08-26 16:03:59 -07:00
Terence Parr d8b4d6403a add doxy stuff 2012-08-25 11:40:55 -07:00
Sam Harwell a51f1e7055 Updated documentation in BailErrorStrategy 2012-08-21 13:24:39 -05:00
Sam Harwell 4508f96ce4 BailErrorStrategy propagates the RecognitionException to the current rule context and it's parents 2012-08-21 13:23:03 -05:00
Sam Harwell dd12508f5d Add overloads of RuleContext.toStringTree and RuleContext.toString which take a list of rule names instead of a Recognizer instance. Remove ParserRuleContext override because it does the same thing as the base method. 2012-08-19 11:43:21 -05:00
Sam Harwell 6f38942e31 Add overload of Trees.toStringTree that takes a list of rule names instead of a Recognizer instance 2012-08-19 11:38:13 -05:00
Sam Harwell 17f7efca0a Never serialize edges for rule stop states since they can be trivially derived during ATN deserialization 2012-08-17 10:51:44 -05:00
Terence Parr 1d92b311ce Merge branch 'master' into main 2012-08-13 12:38:00 -07:00
Sam Harwell 3bfcb7b38f Add ATNSimulator.verifyATN to verify several assumptions about the deserialized ATN 2012-08-12 11:59:42 -05:00
Sam Harwell 2975c90fac Serialize/deserialize the value of BlockStartState.endState 2012-08-12 11:58:26 -05:00
Sam Harwell 0c073062f7 TokensStartState is not really a BlockStartState because it doesn't have an associated end state 2012-08-12 11:56:07 -05:00
Sam Harwell 9b42acbf4d ATNSimulator.deserialize computes values for PlusBlockStartState.loopBackState and StarLoopEntryState.loopBackState 2012-08-12 11:56:06 -05:00
Sam Harwell 83d8903f9f ATNSimulator.deserialize derives rule stop states and (in the lexer) the outgoing transitions for those states 2012-08-12 10:27:48 -05:00
Terence Parr 2d62b73a14 Merge branch 'master' into main 2012-08-06 17:11:38 -07:00
Sam Harwell 199e9892dc Should be checking for ErrorNode (interface) instead of ErrorNodeImpl (class) 2012-08-06 15:01:43 -05:00
Sam Harwell cb09dd6d09 Move RuleNode, TerminalNode, ErrorNode, TerminalNodeImpl, and ErrorNodeImpl to top-level types 2012-08-06 15:01:00 -05:00
Terence Parr 492980de71 Merge branch 'master' into main 2012-08-04 21:31:37 -07:00
Sam Harwell 2947fe6a2a Fix ATN optimizer leaving loop back state numbers in an inconsistent state 2012-08-04 22:22:51 -05:00
Terence Parr 0d92c25056 improve hashCode 2012-08-04 14:38:57 -07:00
Terence Parr 1bec176eaa Impl Sam's no viable alt avoidance idea that chooses min alt that dips into outer context. unit test 2012-08-04 14:18:57 -07:00
Terence Parr 6d12cbfddb fix regression; didn't work with stdin 2012-08-04 13:50:52 -07:00
Terence Parr c2b49bd94e pull in Sam's ATN alt collapsing optimizations with optimizeStates off as it causes a class cast exception. 2012-08-04 13:32:07 -07:00
Terence Parr c7d1ea7e23 Merge remote-tracking branch 'sharwell/atn-optimization' 2012-08-04 12:08:43 -07:00
Terence Parr b7b2a45c8b update comments 2012-08-04 12:00:13 -07:00
Terence Parr b160a3b14d caching more operations in mergeCache, updated comments, added null chk in front of mergeCache ops. 2012-08-04 11:04:21 -07:00
Terence Parr 88dedbd1e0 added mergeArray cache, which didnt help java much but made massive diff to Go grammar. a file, nat.go, went from 2min to 3s in speed. Fixed bug where SLL had preds but they ORd to NONE. made it resolve to min alt. DoubleKeyMap moved to runtime. 2012-08-03 20:27:23 -07:00
Terence Parr 8a0af228d8 Revert "fix null ptr"
This reverts commit 95f5d858cb.
2012-08-03 18:27:57 -07:00
Terence Parr b8c2f5b75b added var for sll loop tail recursion default value; updated unit tests 2012-08-03 18:27:26 -07:00
Terence Parr e7b65057a6 added var for sll loop tail recursion default value; updated unit tests 2012-08-03 18:12:52 -07:00
Terence Parr 95f5d858cb fix null ptr 2012-08-03 16:56:41 -07:00
Sam Harwell 5019278204 Add ATN optimization to collapse multiple alternatives to a single SetTransition where possible. Currently disabled for parser grammars since the code generator doesn't support set transitions. 2012-08-03 08:33:11 -05:00
Sam Harwell 54a3759412 LexerATNSimulator and ParserATNSimulator switch on result of getSerializationType() instead of performing multiple type checks 2012-08-03 08:24:24 -05:00
Terence Parr 86e47b9c02 update comments to explain SLL vs LL, predicate strategy, etc... (and did a small tweak in code) 2012-08-02 18:23:11 -07:00
Terence Parr 06d7c150fd slow again since i had to remove full LL context->alt cache (wasn't correct). But, threaded now makes bigger diff than before. 2012-08-02 17:01:53 -07:00
Sam Harwell ff4eb0f744 Transition classes except for SetTransition are final 2012-08-02 12:15:36 -05:00
Sam Harwell 60df00be4f Transition classes override getSerializationType() 2012-08-02 12:15:35 -05:00
Terence Parr 754e6eb593 mirrored parser ATN sim changes in lexer ATN sim for thread safety. reduced contention for contextCache. 2012-08-01 18:25:25 -07:00
Terence Parr b0b30fec68 cleanup 2012-08-01 18:05:47 -07:00
Terence Parr ff24630494 add cmt 2012-08-01 15:03:32 -07:00
Terence Parr b0c9a9c7c2 tried optimization concerning recomputing DFA states in DFA, but didn't help much. left in as comment for now. 2012-08-01 14:51:37 -07:00
Terence Parr 80560efcf8 wow. i think i got threaded working. rm readwrite lock, sync add add to shared context and add dfa state 2012-07-31 19:39:31 -07:00
Terence Parr 3d2cbe087d refactoring 2012-07-31 18:54:00 -07:00
Terence Parr abb268416e Merge branch 'master' into main 2012-07-31 18:34:33 -07:00
Terence Parr b8f7acdeac refactor to create DFAState target, fill it in, then add to DFA only after it's complete. Combine some helper methods. simpler. 2012-07-31 18:26:39 -07:00
Terence Parr fedb7c105b tweaks 2012-07-30 22:24:12 -07:00
Terence Parr 85ea296632 added D2 as dup temp of D state. almost ready to change position of addDFAState 2012-07-30 22:15:09 -07:00
Sam Harwell 8c820269e4 Fix IntegerList.binarySearch 2012-07-30 19:24:20 -05:00
Terence Parr c893f2af08 Pulled Sam's new IntegerList 2012-07-30 15:20:43 -07:00
Sam Harwell dcdcad8feb Add IntegerList.addAll overload for Collection<Integer>, add contains, sort, hashCode, equals, toString. 2012-07-30 15:17:02 -05:00
Sam Harwell 3bf99d6d88 Add IntervalSet.toIntegerList(), use IntegerStack to hold mode stack in Lexer 2012-07-30 15:13:26 -05:00
Sam Harwell fa62570737 Add IntegerList and IntegerStack, behaves like ArrayList<Integer> and ArrayDeque<Integer> (mostly) except doesn't require boxing 2012-07-30 15:13:26 -05:00
Terence Parr c0ece0bd09 add read/write lock to lexer. 2012-07-29 17:21:10 -07:00
Terence Parr 8836e13954 use ReentrantReadWriteLock to sync. works much better but still occasional illegal monitor state :( 2012-07-29 17:01:41 -07:00
Terence Parr f5f6715a07 back to core sync around creating DFA in decisionToDFA. not thread-safe for dfa update. 2012-07-29 14:33:18 -07:00
Terence Parr 9bcfc83678 adding full LL prediction in DFAState from ctx -> predicted alt. Drops from 17s to 12s and costs only 4M more ram. woot! 2012-07-29 13:30:18 -07:00
Terence Parr 79594a942e synchronized lexer. just as fast now to build new parser/lexer each iter in TestJavaLR 2012-07-29 10:48:08 -07:00
Terence Parr ceab49e3ce rm for now 2012-07-29 10:12:09 -07:00
Terence Parr e3e739dfc7 The lexer and parser ATN simulators' adaptivePredict now synchronize on the specific DFA of the decision to be simulated. This should prevent a lot of contention that would occur if we synchronize the entire adaptivePredict method. When the individual DFA are created, we also synchronize on the shared DFA[] table quickly to create a DFA and insert it into the array. Code generation modified to have _decisionToDFA generated at the top of both the parser and the lexer. Simulators created now with the recognizer, ATN, DFA[]. Not sure the LexerInterp/ParserInterp work but pushing ahead anyway for the moment. 2012-07-29 09:49:35 -07:00
Terence Parr 8c8752a7b2 print file names if > 1 file 2012-07-28 18:33:21 -07:00
Terence Parr 3f26d42d53 add Sam's getConflictingAlts potential bug fix as comment 2012-07-28 18:33:05 -07:00
Terence Parr 68275eb998 rm singleton set; didn't help. 2012-07-28 13:23:52 -07:00
Terence Parr ee233f7dd3 add -SLL option, allow multiple input files, reuse same parser/lexer. 2012-07-28 13:07:51 -07:00
Terence Parr 75fd3264ff adding new equivalence class support code and new SingletonSet 2012-07-28 11:53:40 -07:00
Terence Parr 680df17280 rm transient context cache for closure computations; slight speed improvement maybe. less complex. 2012-07-28 10:51:07 -07:00
Terence Parr eda95f7478 DFA cache on again; dropped from 25 to 16M!!! 2012-07-28 10:34:34 -07:00
Terence Parr 8a301f59f8 try making smaller config list. 2012-07-28 10:29:04 -07:00
Terence Parr 2ee5a2f3ae release entire ConfigHashSet upon readonly. sames some mem and is faster. 2012-07-27 22:38:43 -07:00
Terence Parr 7ff5544573 wipe out config lookup in ATNConfigSet when it goes readonly. 2012-07-27 22:20:23 -07:00
Terence Parr 54fd28c29d add() was wrong 2012-07-27 21:03:41 -07:00
Terence Parr 8279c3da11 turn on local context cache. 2012-07-27 20:53:10 -07:00
Terence Parr 14372f2515 only 14 unit tests fail. 2012-07-27 17:38:02 -07:00
Terence Parr b8f072e231 rebuilt new hashtable as T[][] 2012-07-27 17:18:33 -07:00
Terence Parr b843d6cf59 initial new hash table impl. 2012-07-27 14:51:07 -07:00
Terence Parr b83c90af2f play with atnconfigset fields 2012-07-27 14:50:36 -07:00
Terence Parr 9445d1fdd6 update comment 2012-07-27 10:38:43 -07:00
Terence Parr 26165c5d54 atnconfigsets can be readonly now. no copying to put into new DFA state, set readonly instead. made atnconfigset.equals() more accurate. add -notree option to test java lr 2012-07-27 10:34:59 -07:00
Terence Parr 093af0edce update comment 2012-07-26 18:26:17 -07:00
Terence Parr 6322ff3abd add comment 2012-07-26 18:17:05 -07:00
Terence Parr 0e24a66f07 reduce memory usage by creating LexerATNConfig a subclass with the lexer action index. saves about 2M on java.* with javalr. 2012-07-26 17:51:02 -07:00
Terence Parr 3c7b4c2a33 big cleanup. 2012-07-26 17:28:10 -07:00
Terence Parr 6b8e6cf0a7 reduces a few equals calls. 2012-07-26 10:58:11 -07:00
Terence Parr faafe8dfa2 no local/shared predctx caches. remove spurious array creation. 2012-07-26 10:35:52 -07:00
Terence Parr 86a4f26596 still has dfa and local predict ctx cache, but doesn't help much, and takes time. Eval preds as we pass them in full ctx mode; no sempred ctx in configs then. removed LANDMINE!!!!!!!!! some lame code that uses fields like _startIndex; fix that. added bail option to testjavalr. 18s to parse java.* with javalr full ctx now. 2012-07-25 18:47:34 -07:00
Terence Parr 05de714987 add chk for null contextCache. 2012-07-25 10:58:04 -07:00
Terence Parr 3774c5752b add more tracking var 2012-07-25 10:30:19 -07:00
Terence Parr 3cec976f7e Don't pursue the closure if there is just one state or it's predicting unique alt. Fixed up computeReachSet() to do this. Dropped from 6s to 4.5s for TestJavaLR -SLL on java.* with 45M max footprint. 2012-07-24 18:45:23 -07:00
Terence Parr 2495ce6b20 add SLL option to the ATN simulator and use in TestJavaLR. 2012-07-24 17:42:47 -07:00
Terence Parr 2ae4d4eebd add ctx cache to merge op. now i get optimal graph it seems. doesn't seem longer for java.* with JavaLR. still landmine in Pattern.java, Foo.java. Made toDOTString sort predctx nodes by id for repeatable tests. updated unit tests. 2012-07-24 16:26:01 -07:00
Terence Parr ac4f00524e add ctx cache. 2012-07-24 14:19:43 -07:00
Terence Parr 9627652b67 tweak to compile 2012-07-24 12:20:56 -07:00
Terence Parr 320868d661 added code chking size of ctxs. changed configsets -> configs. added recur getallnodes. 2012-07-24 10:04:51 -07:00
Terence Parr 344a56fd1e finished inter-dfa-state-context-cache but doesn't fix landmine. add debug_list_atn_decisions field. 2012-07-23 18:21:53 -07:00