// This file is part of AceWiki.
// Copyright 2008-2013, AceWiki developers.
//
// AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
// Lesser General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
// not, see http://www.gnu.org/licenses/.
package ch.uzh.ifi.attempto.aceeditor.test;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import ch.uzh.ifi.attempto.base.ConcreteOption;
import ch.uzh.ifi.attempto.chartparser.ChartParser;
/**
* Language generation test of the ACE Editor grammar.
*
* @author Tobias Kuhn
*/
public class ChartParserGenerationTest {
private static ChartParser chartparser = new ChartParser(new TestGrammar(), "test");
private static BufferedWriter out;
private static int count = 0;
/**
* Starts the test.
*
* @param args
*/
public static void main(String[] args) {
try {
out = new BufferedWriter(new FileWriter("src/ch/uzh/ifi/attempto/aceeditor/test/sentences_cp.txt"));
} catch (IOException ex) {
ex.printStackTrace();
}
System.err.print("\n0");
long timestart = System.currentTimeMillis();
completeSentence();
long timeend = System.currentTimeMillis();
System.err.print("\n\nTime needed in seconds: " + (timeend-timestart)/1000.0 + "\n");
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
private static void completeSentence() {
if (chartparser.getTokens().size() == 7) {
if (chartparser.isComplete()) printTokens();
return;
}
List<String> processed = new ArrayList<String>();
for (ConcreteOption o : chartparser.getConcreteOptions()) {
String n = o.getWord();
if (processed.contains(n)) continue;
processed.add(n);
chartparser.addToken(o.getWord());
completeSentence();
chartparser.removeToken();
}
}
private static void printTokens() {
try {
String s = "";
for (String t : chartparser.getTokens()) {
s += " " + t;
}
out.write(s.substring(2) + "\n");
count++;
if (count % 1000 == 0) {
System.err.print("\n" + count);
} else if (count % 100 == 0) {
System.err.print(".");
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}