sharwell
|
252cfbda78
|
v4: integrate 9870 to main (unit test for partially predicated alts)
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9871]
|
2012-01-18 09:44:43 -08:00 |
parrt
|
491744f893
|
reuse of -> label on multiple alts in rule caused dup ctx object defs.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9868]
|
2012-01-14 13:12:35 -08:00 |
parrt
|
093a4f951b
|
leave start/stop char index alone in CommonTokenFactory; refers to original text.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9867]
|
2012-01-14 11:18:23 -08:00 |
parrt
|
1ddf609e25
|
labels on tokens in left-recursive rules caused codegen exception.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9866]
|
2012-01-14 10:18:19 -08:00 |
parrt
|
5bd780c235
|
in tree views, spaces/newlines were blanks. I converted to \n and middle dot
for space.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9857]
|
2012-01-11 17:25:44 -08:00 |
parrt
|
73793898a9
|
update grammars
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9856]
|
2012-01-11 11:21:05 -08:00 |
parrt
|
b3c187e6c3
|
update changes
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9855]
|
2012-01-11 11:20:52 -08:00 |
parrt
|
848c6e4313
|
This change is a major restructuring of how left recursive rules are transformed. Previously I simply rewrote the grammar and ANTLR was none the wiser. However, it quickly became apparent that ANTLR needed to do many different things for recursive rules so I had to insert transformation later in the pipeline. Specifically, I needed it after Rule object creation. I made a special LeftRecursiveRule object that track information collected during transformation so that I could use it later. I made major changes to the left recursion templates as well as the little code snippets in Java.stg. I created a new template called LeftRecursiveRuleFunction an accompanying model object that handles the special case, even though there is some duplication. the biggest difference in the grammar is the introduction of => ID notation on any outermost alternative. This information is not added to the tree, instead the ALT node is annotated with the ID. Rule.getAltLabels() now looks also in the LeftRecursiveRuleAltInfo objects. I have moved to the left recursion transformation to its own object and have moved some objects into the analysis package. Further, I have split out the Rule object creation into its own RuleCollector. I renamed discoverAlt in the grammar tree visitor to be discoverOuterAlt an added discoverAlt so we can get information about individual alts even inside subrules. Listeners always get an event for the generic rule context, which is used if there is no specific label for an alternative. Added a list of iteration operations for LL(*) subrules. Split buildRuleFunction into buildLeftRecursiveRuleFunction and one for normal rule function creation. I have to insert lots of extra code to manage the contexts, but of course it's all done using the templates. As long as those templates are correct, this code generation mechanism will work. I removed the st field from the parser rule context. I injected the left recursion transformation inside the SemanticPipeline. Visitor dispatch methods are always added to the generated context structures. Fixed some unit tests. About 24 fail.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9854]
|
2012-01-11 11:00:05 -08:00 |
sharwell
|
742a08862f
|
Merging dev changes to main
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9853]
|
2012-01-09 10:26:23 -08:00 |
parrt
|
e8ae8ee005
|
labels allowed in left recursive rule refs.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9834]
|
2012-01-05 18:35:20 -08:00 |
parrt
|
4ae23f4a64
|
* 1+2*3 now gives new parse tree: (e (e 1) + (e (e 2) * (e 3))) See CHANGES.txt now too
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9833]
|
2012-01-05 12:27:14 -08:00 |
parrt
|
2e8a5f391a
|
no more -trace
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9826]
|
2012-01-04 17:41:42 -08:00 |
parrt
|
78c7c254a0
|
rm cmt'd out prints
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9825]
|
2012-01-04 17:40:59 -08:00 |
parrt
|
7d68546dbe
|
rm prints
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9824]
|
2012-01-04 17:37:15 -08:00 |
parrt
|
e7f6ba5ac1
|
lr rules now gen only 1 rule e->e not e->e_ etc... altered tests to build parse trees.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9823]
|
2012-01-04 17:36:24 -08:00 |
parrt
|
e29b11882d
|
fix unit tests
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9816]
|
2012-01-04 15:47:52 -08:00 |
parrt
|
b2269a22f4
|
not needed
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9815]
|
2012-01-04 15:42:55 -08:00 |
parrt
|
cab41e41e3
|
had non-ascii char
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9812]
|
2012-01-04 09:05:31 -08:00 |
parrt
|
963ccd2700
|
added comment
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9797]
|
2012-01-03 12:46:51 -08:00 |
parrt
|
224a4bc9e1
|
changed formatting
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9796]
|
2012-01-03 12:46:39 -08:00 |
parrt
|
8099cec3bd
|
Added ctx to visitTerminal in parse tree listener. That should be useful information. made commensurate change in the parse tree walker to make sure I have a proper context to send to the visitTerminal method. renamed a few fields of parser/lexer to have _ in front to avoid name collisions with user actions. change the name of the listener method so that they're more explicit using the terms Error and Parser to identify what kind of listener we are adding or removing. Added a default TraceListener to Parser so that we can call setTrace(true) to have it start dumping out information as a first step in the debugging process. there are now multiple parse tree listeners possible because I made a list. we may want to pass in multiple actions to the parser.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9795]
|
2012-01-03 12:46:18 -08:00 |
parrt
|
5c328c7e3f
|
Bug: didn't stop at end of stream during consume()
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9794]
|
2012-01-03 12:40:42 -08:00 |
parrt
|
1d6bbb08c3
|
kill
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9793]
|
2012-01-03 12:30:21 -08:00 |
parrt
|
5d60e85617
|
rm trace ATN state stuff. Will think about when we do debugging.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9792]
|
2012-01-03 11:07:49 -08:00 |
parrt
|
c716a87544
|
move method down in file
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9791]
|
2012-01-03 11:05:40 -08:00 |
parrt
|
2d9139ca4d
|
remove % from ActionSplitter.g
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9790]
|
2012-01-03 11:04:12 -08:00 |
parrt
|
5c3c8d6e7a
|
Added TokenFactory, CommonTokenFactory. Update the parser in the lexer with methods to set the factory. Alter the default error strategy and the lexer to use the factory. The parser's set token factory method updates the token source, usually the lexer, and the error handling strategy. I had to add the set token factory method to token source as well to make all of this work.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9789]
|
2012-01-03 10:58:01 -08:00 |
parrt
|
3aeeb2b277
|
rename BaseREcognizer as Parser
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9781]
|
2012-01-02 18:36:59 -08:00 |
parrt
|
1b04195a2f
|
removed all template / AST rewrite stuff; massive change; added -encoding tool option
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9780]
|
2012-01-02 18:13:16 -08:00 |
parrt
|
1921a46dd2
|
include ST v4
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9779]
|
2012-01-02 17:11:39 -08:00 |
parrt
|
ddb68aa948
|
new example
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9778]
|
2012-01-02 14:07:11 -08:00 |
sharwell
|
3d620734af
|
Merging CL9604 to main (optimized string literals in generated code)
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9777]
|
2012-01-02 12:08:18 -08:00 |
parrt
|
9114749c51
|
add Main-Class:org.antlr.v4.Tool to manifest
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9774]
|
2012-01-01 14:41:44 -08:00 |
parrt
|
77c13da7c5
|
fix include
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9773]
|
2012-01-01 14:36:55 -08:00 |
parrt
|
5aada9b2a5
|
includes templates
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9772]
|
2012-01-01 11:53:57 -08:00 |
parrt
|
029eae90b7
|
no v2 in jar
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9771]
|
2012-01-01 11:39:27 -08:00 |
parrt
|
8b2abff09b
|
make complete jar
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9770]
|
2012-01-01 11:24:26 -08:00 |
parrt
|
47bf5a086e
|
add antlr3.4 jars
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9769]
|
2012-01-01 11:08:52 -08:00 |
parrt
|
93011a6195
|
add
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9768]
|
2012-01-01 10:35:31 -08:00 |
parrt
|
353ddc6c2b
|
using wrong map class
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9767]
|
2012-01-01 10:27:51 -08:00 |
parrt
|
dff466be66
|
literal rules like A:'a' not seen in modes; weren't in .tokens files
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9766]
|
2011-12-31 17:26:48 -08:00 |
parrt
|
8846b98ee7
|
fix compile error
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9765]
|
2011-12-29 17:05:34 -08:00 |
parrt
|
a923ad8765
|
Major update to v4. I backed out a change I made on Christmas then mistakenly prevented any lexer DFA creation. Per http://www.antlr.org/wiki/display/~admin/2011/12/29/Flaw+in+ANTLR+v3+LL%28*%29+analysis+algorithm I fixed a major flaw in ANTLR's notion of context. To do that, I needed to create a new LoopEndState, with all of its fanout to the serialization and parser ATN construction. got a very good start on ParserATNPathFinder, which uses basic recursion to find all possible paths and return a tree with the possibilities. I left it in the condition where he would sometimes loop forever; it needs to track sets of configurations in the busy set; it using states at the moment. added a new signal from the interpreter: reportAttemptingFullContext. I fixed a bug where configuration sets derived from a configuration that had reachesIntoOuterContext>0 were not being considered as dipping into the outer context. The ambiguity checker needed to switch so that a check for exact matches not suffixes when doing full context. It's faster at the very least for full context. added some more support routines to DFA. Added TraceTree in support of the new ParserATNPathFinder.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9764]
|
2011-12-29 17:04:40 -08:00 |
parrt
|
3a3ed27e60
|
add some tests
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9763]
|
2011-12-28 19:49:37 -08:00 |
parrt
|
52396d8f5f
|
removed method call
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9762]
|
2011-12-27 16:31:09 -08:00 |
parrt
|
3b51bb478d
|
rm unneeded field
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9761]
|
2011-12-27 15:52:47 -08:00 |
parrt
|
d01bde9125
|
added new reportAttemptingFullContext to strategy
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9760]
|
2011-12-27 15:25:01 -08:00 |
parrt
|
9853061093
|
added null chk
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9759]
|
2011-12-27 14:32:19 -08:00 |
parrt
|
bb960e3c37
|
improved data to report insuff. preds. also, it was detecting it improperly
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9758]
|
2011-12-27 14:11:41 -08:00 |
parrt
|
638969bed9
|
add '...' to diagnostics input
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9757]
|
2011-12-27 13:37:47 -08:00 |