Commit Graph

981 Commits

Author SHA1 Message Date
Sam Harwell b917c01bba Fix lexer error recovery could try to consume EOF 2012-11-04 11:30:03 -06:00
Terence Parr 0c3ce2860e Merge branch 'lexer-eof' of github.com:sharwell/antlr4 2012-11-03 17:52:27 -07:00
Terence Parr 4480634f13 do exact LL ambigs for -diagnostics 2012-11-03 17:35:57 -07:00
Terence Parr d1795d205f Revert "add option -exact-ambiguities to TestRig"
This reverts commit 400b58d4a0.
2012-11-03 17:34:34 -07:00
Terence Parr 400b58d4a0 add option -exact-ambiguities to TestRig 2012-11-03 16:40:23 -07:00
Sam Harwell 28e29e39dc Remove code to explicitly add EOF transitions to rule stop states with no outgoing edges 2012-11-03 15:47:23 -05:00
Sam Harwell fbaac8194b Avoid calling consume() at EOF 2012-11-03 15:47:22 -05:00
Sam Harwell c9890e8305 Throw IllegalStateException if the user tries to consume EOF 2012-11-03 15:47:22 -05:00
Terence Parr a9d4aeab71 no ? extends on rule ctx getters. 2012-11-03 08:57:49 -07:00
Sam Harwell a828b99b59 Pass -Xlint -Xlint:-serial to javac (Maven build of runtime) 2012-11-01 18:11:35 -05:00
Sam Harwell d220f90d3b Remove generics from all runtime code which did not use them to provide type safety 2012-11-01 18:07:12 -05:00
Sam Harwell 3470978749 Updated naming conventions since RuleContext stores invoking states but PredictionContext stores return states 2012-11-01 13:47:44 -05:00
Sam Harwell c2722b127a Store return states instead of invoking states in PredictionContext instances 2012-11-01 13:35:55 -05:00
Sam Harwell 7bbc6c18be Remove unchecked casts 2012-11-01 08:58:00 -05:00
Sam Harwell ca38320d43 Simplify ATNConfigSet.toArray 2012-11-01 08:49:14 -05:00
Sam Harwell eca9090fce Remove tracing support from LexerATNSimulator - in process of moving it to dynamic instrumentation to eliminate runtime overhead in production use 2012-11-01 05:35:01 -05:00
Sam Harwell d748271816 Remove getSpeculativeText since getText works again 2012-10-31 21:52:50 -05:00
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
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