Commit Graph

759 Commits

Author SHA1 Message Date
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
Terence Parr 1966379265 shelve to look back at sam's. added optimizeConfigs() stuff. 2012-07-23 17:50:22 -07:00
Terence Parr 935fd2831e add writeFile util. improve dbg msg 2012-07-23 10:29:12 -07:00
Terence Parr d8a9207041 improve combine common parents, return a or b in merge array of merged is a or b; new unit test. 2012-07-22 20:07:46 -07:00
Terence Parr e18b9132d9 cleanup and merge common parents for array merge; fixes unit test 2012-07-22 16:39:53 -07:00
Terence Parr f1e4d85d0a fix cut/paste error. 2012-07-22 16:17:07 -07:00
Terence Parr f7eeca274f reorg closure and fix bug where $ in arrayctx wouldn't perform global follow. fix case in array merge that didn't check both a[i], b[i] as $ (only matters in full ctx). unit tests for graph show fewer ctx's created. 2012-07-22 16:09:45 -07:00
Terence Parr 44ae1dad0b if merged array is 1 node, return singleton. more unit tests 2012-07-22 15:05:12 -07:00
Terence Parr 3edb35d95e cleanup; avoid array creation 2012-07-22 12:59:26 -07:00
Terence Parr 829ad9191c didn't join a$ + bx as [a,b]$ for local ctx. new unit test to chk 2012-07-22 12:57:30 -07:00
Terence Parr 8695210903 cleanup, simplify array ctx equals 2012-07-22 12:17:34 -07:00
Terence Parr 43424cd5df do check for a==b in merge(); improve DOT output 2012-07-22 12:10:40 -07:00
Terence Parr 43e986db8b small hash code cleanup. 2012-07-22 11:27:44 -07:00
Terence Parr 54d23066b2 merge of array and $ for rootIsWildcard was broken. Fixed JavaLR parsing. Still sticks on Pattern.java but not 5 hours anymore--faster up til that landmine. 2012-07-21 19:24:03 -07:00
Terence Parr 36a725765e cleanup; hashcode for single node pred ctx was wrong. failed to see [46] and [46] as same. 2012-07-21 17:13:16 -07:00
Terence Parr 991014d3f2 clean up, add comments, fix graph unit tests, updated toDotString(). 2012-07-21 15:10:15 -07:00
Terence Parr f78bf4d097 rm comment; looks inappropriate for branch 2012-07-21 10:45:59 -07:00
Terence Parr 0141bc058a merge from master,In preparation for continuing on this experiment branch. 2012-07-21 10:38:55 -07:00
Sam Harwell 885f6530ad Use chained calls to append instead of string concatenation 2012-07-20 14:52:49 -05:00
Sam Harwell 44ef41ff29 Remove unnecessary variable initializations 2012-07-20 14:52:46 -05:00
Sam Harwell 3b9940b02a Use isEmpty() instead of comparing size() with 0 2012-07-20 14:52:43 -05:00
Sam Harwell 2f0029a040 Improved handling of (potentially) null fields 2012-07-20 14:52:14 -05:00
Sam Harwell 4c4f767d17 Prevent NPE after reporting error 2012-07-20 14:52:13 -05:00
Sam Harwell 45e42d7243 Parameter to equals can be null 2012-07-20 14:51:54 -05:00
Sam Harwell 3a35f3cb08 Check object type in equals 2012-07-20 14:51:53 -05:00
Sam Harwell 29d71acef9 Update documentation 2012-07-18 16:12:37 -05:00
Sam Harwell a37f8cf4f1 Add missing license notices 2012-07-18 15:57:48 -05:00
Terence Parr f220212a95 couldn't get Horstmann's routine to do EPS not PS so had to backtrack. 2012-07-14 16:32:04 -07:00
Terence Parr 47362b2951 use Horstmann's PS save not mine; it'll handle Japanese char etc.. this way. 2012-07-14 15:38:33 -07:00
Sam Harwell d626c4acd6 Simplify ParserRuleContext.toString 2012-07-13 14:26:56 -05:00
Terence Parr a3371ac9ea rm unneeded override. 2012-07-09 17:32:20 -07:00
Terence Parr 9a4227841d -print -> -tree 2012-07-08 13:38:56 -07:00
Terence Parr 707ff615b4 tweak javadoc 2012-07-08 12:18:43 -07:00
Terence Parr 3b2c0a6177 fix bug in get hidden channel stuff. rewrote. update test. 2012-07-07 18:48:48 -07:00
Terence Parr ec47251bb2 unbuffered release() can get markers in weird order since we reset p to beginning of buffer. Might mark at 1 and then at release p = 0 etc... Don't look for errors. Just reset earliestMarker if needed. 2012-07-04 11:32:41 -07:00
Terence Parr 6b6274b0c8 add type narrowed getters 2012-07-02 15:48:45 -07:00
Terence Parr 71bd16020f Merge branch 'master' into nogenerics-in-error-listener-2nd-try 2012-07-02 12:45:48 -07:00