Skip to content

Commit 72bca40

Browse files
committed
fix bug: wasn't setting charPosInLine for first token. add sqlite as option.
1 parent dcee7c8 commit 72bca40

File tree

2 files changed

+40
-30
lines changed

2 files changed

+40
-30
lines changed

java/src/org/antlr/codebuff/Formatter.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import org.antlr.v4.runtime.ParserRuleContext;
66
import org.antlr.v4.runtime.Token;
77
import org.antlr.v4.runtime.WritableToken;
8-
import org.antlr.v4.runtime.misc.Interval;
98
import org.antlr.v4.runtime.tree.ParseTree;
109
import org.antlr.v4.runtime.tree.TerminalNode;
1110

@@ -82,24 +81,18 @@ public List<TokenPositionAnalysis> getAnalysisPerToken() {
8281
return analysis;
8382
}
8483

85-
8684
public String format() {
8785
if ( tokenToNodeMap == null ) {
8886
tokenToNodeMap = indexTree(root);
8987
}
9088

9189
tokens.seek(0);
9290
WritableToken firstToken = (WritableToken)tokens.LT(1);
93-
WritableToken secondToken = (WritableToken)tokens.LT(2);
94-
// all tokens are wiped of line/col info so set them for first 2
91+
// all tokens are wiped of line/col info so set them for first 1 token and emit
9592
firstToken.setLine(1);
9693
firstToken.setCharPositionInLine(0);
97-
secondToken.setLine(1);
98-
secondToken.setCharPositionInLine(firstToken.getText().length());
99-
100-
String prefix = tokens.getText(Interval.of(0, secondToken.getTokenIndex()));
101-
output.append(prefix);
102-
94+
charPosInLine = firstToken.getText().length();
95+
output.append(firstToken.getText());
10396

10497
realTokens = getRealTokens(tokens);
10598
for (int i = CollectFeatures.ANALYSIS_START_TOKEN_INDEX; i<realTokens.size(); i++) { // can't process first 2 tokens

java/src/org/antlr/codebuff/Tool.java

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
*
3131
* Testing:
3232
*
33-
* Tool -antlr ../corpus/antlr4/samples ../corpus/antlr4/test/Clojure.g4
33+
* Tool -antlr ../corpus/antlr4/training ../corpus/antlr4/testing/Clojure.g4
34+
* Tool -sqlite ../corpus/sqlite/training ../corpus/sqlite/testing/t1.sql
3435
* Tool -java ../samples/stringtemplate4 src/org/antlr/codebuff/Tool.java
3536
* Tool -java ../samples/stringtemplate4 ../samples/stringtemplate4/org/stringtemplate/v4/AutoIndentWriter.java
3637
*/
@@ -42,30 +43,46 @@ public static void main(String[] args)
4243
throws Exception
4344
{
4445
if ( args.length<2 ) {
45-
System.err.println("ExtractFeatures [-java|-antlr] root-dir-of-samples test-file");
46+
System.err.println("ExtractFeatures [-java|-antlr|-sqlite] root-dir-of-samples test-file");
4647
}
4748
int tabSize = 4; // TODO: MAKE AN ARGUMENT
4849
String language = args[0];
4950
String corpusDir = args[1];
5051
String testFilename = args[2];
51-
String output;
52-
if ( language.equals("-java") ) {
53-
Corpus corpus = train(corpusDir, ".*\\.java", JavaLexer.class, JavaParser.class, "compilationUnit", tabSize, true);
54-
InputDocument testDoc = load(testFilename, JavaLexer.class, tabSize);
55-
Pair<String,List<TokenPositionAnalysis>> results = format(corpus, testDoc, JavaLexer.class, JavaParser.class, "compilationUnit", tabSize);
56-
output = results.a;
57-
List<TokenPositionAnalysis> analysisPerToken = results.b;
58-
GUIController controller = new GUIController(analysisPerToken, testDoc, output, JavaLexer.class);
59-
controller.show();
60-
}
61-
else {
62-
Corpus corpus = train(corpusDir, ".*\\.g4", ANTLRv4Lexer.class, ANTLRv4Parser.class, "grammarSpec", tabSize, true);
63-
InputDocument testDoc = load(testFilename, ANTLRv4Lexer.class, tabSize);
64-
Pair<String,List<TokenPositionAnalysis>> results = format(corpus, testDoc, ANTLRv4Lexer.class, ANTLRv4Parser.class, "grammarSpec", tabSize);
65-
output = results.a;
66-
List<TokenPositionAnalysis> analysisPerToken = results.b;
67-
GUIController controller = new GUIController(analysisPerToken, testDoc, output, ANTLRv4Lexer.class);
68-
controller.show();
52+
String output = "???";
53+
Corpus corpus;
54+
InputDocument testDoc;
55+
GUIController controller;
56+
List<TokenPositionAnalysis> analysisPerToken;
57+
Pair<String, List<TokenPositionAnalysis>> results;
58+
switch ( language ) {
59+
case "-java":
60+
corpus = train(corpusDir, ".*\\.java", JavaLexer.class, JavaParser.class, "compilationUnit", tabSize, true);
61+
testDoc = load(testFilename, JavaLexer.class, tabSize);
62+
results = format(corpus, testDoc, JavaLexer.class, JavaParser.class, "compilationUnit", tabSize);
63+
output = results.a;
64+
analysisPerToken = results.b;
65+
controller = new GUIController(analysisPerToken, testDoc, output, JavaLexer.class);
66+
controller.show();
67+
break;
68+
case "-antlr":
69+
corpus = train(corpusDir, ".*\\.g4", ANTLRv4Lexer.class, ANTLRv4Parser.class, "grammarSpec", tabSize, true);
70+
testDoc = load(testFilename, ANTLRv4Lexer.class, tabSize);
71+
results = format(corpus, testDoc, ANTLRv4Lexer.class, ANTLRv4Parser.class, "grammarSpec", tabSize);
72+
output = results.a;
73+
analysisPerToken = results.b;
74+
controller = new GUIController(analysisPerToken, testDoc, output, ANTLRv4Lexer.class);
75+
controller.show();
76+
break;
77+
case "-sqlite":
78+
corpus = train(corpusDir, ".*\\.sql", SQLiteLexer.class, SQLiteParser.class, "parse", tabSize, true);
79+
testDoc = load(testFilename, SQLiteLexer.class, tabSize);
80+
results = format(corpus, testDoc, SQLiteLexer.class, SQLiteParser.class, "parse", tabSize);
81+
output = results.a;
82+
analysisPerToken = results.b;
83+
controller = new GUIController(analysisPerToken, testDoc, output, SQLiteLexer.class);
84+
controller.show();
85+
break;
6986
}
7087
System.out.println(output);
7188
}

0 commit comments

Comments
 (0)