improve parser. add some readme.
This commit is contained in:
		@ -14,6 +14,11 @@ import com.google.gson.GsonBuilder;
 | 
			
		||||
// import regex
 | 
			
		||||
import java.util.regex.Pattern;
 | 
			
		||||
import java.util.regex.Matcher;
 | 
			
		||||
// import io related
 | 
			
		||||
import java.io.FileOutputStream;
 | 
			
		||||
import java.io.FileInputStream;
 | 
			
		||||
import java.io.OutputStreamWriter;
 | 
			
		||||
import java.nio.charset.StandardCharsets;
 | 
			
		||||
 | 
			
		||||
public class NlpRunner {
 | 
			
		||||
	public static class NlpJsonConverter extends NlpBaseListener {
 | 
			
		||||
@ -26,8 +31,8 @@ public class NlpRunner {
 | 
			
		||||
		/* JSON related stuff */
 | 
			
		||||
		
 | 
			
		||||
		Gson mGsonInstance;
 | 
			
		||||
		public void printJson() {
 | 
			
		||||
			System.out.print(mGsonInstance.toJson(mRoot));;
 | 
			
		||||
		public String buildJsonString() {
 | 
			
		||||
			return mGsonInstance.toJson(mRoot);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		/* String related stuff */
 | 
			
		||||
@ -137,17 +142,54 @@ public class NlpRunner {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private static void printHelp() {
 | 
			
		||||
		System.out.println("NlpRunner <src> <dest>");
 | 
			
		||||
		System.out.println();
 | 
			
		||||
		System.out.println("<src> - the decoded nlp text file.");
 | 
			
		||||
		System.out.println("<dest> - the output json file.");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static void main(String[] args) throws Exception {
 | 
			
		||||
		ANTLRInputStream input = new ANTLRInputStream(System.in);
 | 
			
		||||
		// check parameter
 | 
			
		||||
		if (args.length != 2) {
 | 
			
		||||
			System.out.println("[ERR] Invalid arguments!");
 | 
			
		||||
			printHelp();
 | 
			
		||||
			System.exit(1);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		// open file stream
 | 
			
		||||
		FileInputStream fin = null;
 | 
			
		||||
		FileOutputStream fout = null;
 | 
			
		||||
		try {
 | 
			
		||||
			fin = new FileInputStream(args[0]);
 | 
			
		||||
			fout = new FileOutputStream(args[1]);
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
			if (fin != null) fin.close();
 | 
			
		||||
			if (fout != null) fout.close();
 | 
			
		||||
			
 | 
			
		||||
			System.out.println("[ERR] Fail to open file!");
 | 
			
		||||
			printHelp();
 | 
			
		||||
			System.exit(1);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// start lex and parse
 | 
			
		||||
		CharStream input = CharStreams.fromStream(fin, StandardCharsets.UTF_8);
 | 
			
		||||
		NlpLexer lexer = new NlpLexer(input);
 | 
			
		||||
		CommonTokenStream tokens = new CommonTokenStream(lexer);
 | 
			
		||||
		NlpParser parser = new NlpParser(tokens);
 | 
			
		||||
		
 | 
			
		||||
		// walk tree to build json
 | 
			
		||||
		ParseTree tree = parser.document();
 | 
			
		||||
		ParseTreeWalker walker = new ParseTreeWalker();
 | 
			
		||||
		NlpJsonConverter converter = new NlpJsonConverter();
 | 
			
		||||
		walker.walk(converter, tree);
 | 
			
		||||
		converter.printJson();
 | 
			
		||||
		System.out.println();
 | 
			
		||||
		
 | 
			
		||||
		// write json
 | 
			
		||||
		OutputStreamWriter fw = new OutputStreamWriter(fout, StandardCharsets.UTF_8);
 | 
			
		||||
		fw.write(converter.buildJsonString());
 | 
			
		||||
		
 | 
			
		||||
		// close file stream
 | 
			
		||||
		fin.close();
 | 
			
		||||
		fw.close();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								NlpParser/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								NlpParser/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
# Nlp Parser
 | 
			
		||||
 | 
			
		||||
Requirements:
 | 
			
		||||
 | 
			
		||||
* Antlr4
 | 
			
		||||
* Gson
 | 
			
		||||
 | 
			
		||||
Useful commands:
 | 
			
		||||
 | 
			
		||||
* `antlr4 Nlp.g4`: Analyze Antlr format file.
 | 
			
		||||
* `javac Nlp*.java`: Compile executable application.
 | 
			
		||||
* Do testbench
 | 
			
		||||
  - `grun Nlp document -tree < testbench.txt`
 | 
			
		||||
  - `grun Nlp document -gui < testbench.txt`
 | 
			
		||||
  - `java NlpRunner testbench.txt result.json`
 | 
			
		||||
 | 
			
		||||
@ -1,4 +0,0 @@
 | 
			
		||||
antlr4 Nlp.g4
 | 
			
		||||
javac Nlp*.java
 | 
			
		||||
;grun Nlp document -tree < testbench.txt
 | 
			
		||||
java NlpRunner < ../NlpSrc/VT50.txt > result.json
 | 
			
		||||
		Reference in New Issue
	
	Block a user