changeset 1111:88b5b81cad4a

move Parser to luan.lib.parser
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 02 Aug 2017 15:19:47 -0600
parents 38a42f437fd2
children 490f77bb2ad1
files src/luan/lib/parser/ParseException.java src/luan/lib/parser/Parser.java src/luan/modules/RpcLuan.java src/luan/modules/lucene/LuceneIndex.java src/luan/modules/lucene/queryparser/FieldParser.java src/luan/modules/lucene/queryparser/MultiFieldParser.java src/luan/modules/lucene/queryparser/NumberFieldParser.java src/luan/modules/lucene/queryparser/SaneQueryParser.java src/luan/modules/lucene/queryparser/StringFieldParser.java src/luan/modules/lucene/queryparser/SynonymParser.java src/luan/modules/parsers/BBCode.java src/luan/modules/parsers/Csv.java src/luan/modules/parsers/Html.java src/luan/modules/parsers/Json.java src/luan/modules/parsers/ParseException.java src/luan/modules/parsers/Parser.java src/luan/modules/parsers/Theme.java
diffstat 17 files changed, 236 insertions(+), 227 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/lib/parser/ParseException.java	Wed Aug 02 15:19:47 2017 -0600
@@ -0,0 +1,62 @@
+package luan.lib.parser;
+
+
+public final class ParseException extends Exception {
+	public final String text;
+	public final int errorIndex;
+	public final int highIndex;
+
+	public ParseException(Parser parser,String msg) {
+		super(msg);
+		this.text = parser.text;
+		this.errorIndex = parser.currentIndex();
+		this.highIndex = parser.highIndex();
+	}
+
+	public ParseException(Parser parser,Exception cause) {
+		this(parser,cause.getMessage(),cause);
+	}
+
+	public ParseException(Parser parser,String msg,Exception cause) {
+		super(msg,cause);
+		this.text = parser.text;
+		this.errorIndex = parser.currentIndex();
+		this.highIndex = parser.highIndex();
+	}
+
+	private class Location {
+		final int line;
+		final int pos;
+
+		Location(int index) {
+			int line = 0;
+			int i = -1;
+			while(true) {
+				int j = text.indexOf('\n',i+1);
+				if( j == -1 || j >= index )
+					break;
+				i = j;
+				line++;
+			}
+			this.line = line;
+			this.pos = index - i - 1;
+		}
+	}
+
+	private String[] lines() {
+		return text.split("\n",-1);
+	}
+
+	@Override public String getMessage() {
+		Location loc = new Location(errorIndex);
+		String line = lines()[loc.line];
+		String msg = super.getMessage() +  " (line " + (loc.line+1) + ", pos " + (loc.pos+1) + ")\n";
+		StringBuilder sb = new StringBuilder(msg);
+		sb.append( line + "\n" );
+		for( int i=0; i<loc.pos; i++ ) {
+			sb.append( line.charAt(i)=='\t' ? '\t' : ' ' );
+		}
+		sb.append("^\n");
+		return sb.toString();
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/lib/parser/Parser.java	Wed Aug 02 15:19:47 2017 -0600
@@ -0,0 +1,156 @@
+package luan.lib.parser;
+
+
+public class Parser {
+	public final String text;
+	private final int len;
+	private int[] stack = new int[256];
+	private int frame = 0;
+	private int iHigh;
+
+	public Parser(String text) {
+		this.text = text;
+		this.len = text.length();
+	}
+
+	private int i() {
+		return stack[frame];
+	}
+
+	private void i(int i) {
+		stack[frame] += i;
+		if( iHigh < stack[frame] )
+			iHigh = stack[frame];
+	}
+
+	public int begin() {
+		frame++;
+		if( frame == stack.length ) {
+			int[] a = new int[2*frame];
+			System.arraycopy(stack,0,a,0,frame);
+			stack = a;
+		}
+		stack[frame] = stack[frame-1];
+		return i();
+	}
+
+	public void rollback() {
+		stack[frame] = stack[frame-1];
+	}
+
+	public <T> T success(T t) {
+		success();
+		return t;
+	}
+
+	public boolean success() {
+		frame--;
+		stack[frame] = stack[frame+1];
+		return true;
+	}
+
+	public <T> T failure(T t) {
+		failure();
+		return t;
+	}
+
+	public boolean failure() {
+		frame--;
+		return false;
+	}
+
+	public int currentIndex() {
+		return i();
+	}
+/*
+	public int errorIndex() {
+		return frame > 0 ? stack[frame-1] : 0;
+	}
+*/
+	public int highIndex() {
+		return iHigh;
+	}
+
+	public char lastChar() {
+		return text.charAt(i()-1);
+	}
+
+	public char currentChar() {
+		return text.charAt(i());
+	}
+
+	public boolean endOfInput() {
+		return i() >= len;
+	}
+
+	public boolean match(char c) {
+		if( endOfInput() || text.charAt(i()) != c )
+			return false;
+		i(1);
+		return true;
+	}
+
+	public boolean match(String s) {
+		int n = s.length();
+		if( !text.regionMatches(i(),s,0,n) )
+			return false;
+		i(n);
+		return true;
+	}
+
+	public boolean matchIgnoreCase(String s) {
+		int n = s.length();
+		if( !text.regionMatches(true,i(),s,0,n) )
+			return false;
+		i(n);
+		return true;
+	}
+
+	public boolean anyOf(String s) {
+		if( endOfInput() || s.indexOf(text.charAt(i())) == -1 )
+			return false;
+		i(1);
+		return true;
+	}
+
+	public boolean noneOf(String s) {
+		if( endOfInput() || s.indexOf(text.charAt(i())) != -1 )
+			return false;
+		i(1);
+		return true;
+	}
+
+	public boolean inCharRange(char cLow, char cHigh) {
+		if( endOfInput() )
+			return false;
+		char c = text.charAt(i());
+		if( !(cLow <= c && c <= cHigh) )
+			return false;
+		i(1);
+		return true;
+	}
+
+	public boolean anyChar() {
+		if( endOfInput() )
+			return false;
+		i(1);
+		return true;
+	}
+
+	public boolean test(char c) {
+		return !endOfInput() && text.charAt(i()) == c;
+	}
+
+	public boolean test(String s) {
+		return text.regionMatches(i(),s,0,s.length());
+	}
+
+	public boolean testIgnoreCase(String s) {
+		return text.regionMatches(true,i(),s,0,s.length());
+	}
+
+	public String textFrom(int start) {
+		return text.substring(start,i());
+	}
+
+}
--- a/src/luan/modules/RpcLuan.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/RpcLuan.java	Wed Aug 02 15:19:47 2017 -0600
@@ -21,7 +21,7 @@
 import luan.LuanException;
 import luan.LuanMethod;
 import luan.modules.parsers.Json;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.ParseException;
 
 
 public final class RpcLuan {
--- a/src/luan/modules/lucene/LuceneIndex.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/lucene/LuceneIndex.java	Wed Aug 02 15:19:47 2017 -0600
@@ -64,7 +64,7 @@
 import luan.modules.lucene.queryparser.MultiFieldParser;
 import luan.modules.lucene.queryparser.StringFieldParser;
 import luan.modules.lucene.queryparser.NumberFieldParser;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.ParseException;
 import luan.modules.Utils;
 import luan.Luan;
 import luan.LuanState;
--- a/src/luan/modules/lucene/queryparser/FieldParser.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/lucene/queryparser/FieldParser.java	Wed Aug 02 15:19:47 2017 -0600
@@ -2,7 +2,7 @@
 
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.SortField;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.ParseException;
 
 
 public interface FieldParser {
--- a/src/luan/modules/lucene/queryparser/MultiFieldParser.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/lucene/queryparser/MultiFieldParser.java	Wed Aug 02 15:19:47 2017 -0600
@@ -6,7 +6,7 @@
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.SortField;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.ParseException;
 
 
 public class MultiFieldParser implements FieldParser {
--- a/src/luan/modules/lucene/queryparser/NumberFieldParser.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/lucene/queryparser/NumberFieldParser.java	Wed Aug 02 15:19:47 2017 -0600
@@ -3,7 +3,7 @@
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.NumericRangeQuery;
 import org.apache.lucene.search.SortField;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.ParseException;
 
 
 public abstract class NumberFieldParser implements FieldParser {
--- a/src/luan/modules/lucene/queryparser/SaneQueryParser.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/lucene/queryparser/SaneQueryParser.java	Wed Aug 02 15:19:47 2017 -0600
@@ -9,8 +9,8 @@
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
-import luan.modules.parsers.Parser;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.Parser;
+import luan.lib.parser.ParseException;
 
 
 public class SaneQueryParser {
--- a/src/luan/modules/lucene/queryparser/StringFieldParser.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/lucene/queryparser/StringFieldParser.java	Wed Aug 02 15:19:47 2017 -0600
@@ -14,7 +14,7 @@
 import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.index.Term;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.ParseException;
 
 
 public class StringFieldParser implements FieldParser {
--- a/src/luan/modules/lucene/queryparser/SynonymParser.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/lucene/queryparser/SynonymParser.java	Wed Aug 02 15:19:47 2017 -0600
@@ -5,7 +5,7 @@
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.SortField;
-import luan.modules.parsers.ParseException;
+import luan.lib.parser.ParseException;
 
 
 public class SynonymParser implements FieldParser {
--- a/src/luan/modules/parsers/BBCode.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/parsers/BBCode.java	Wed Aug 02 15:19:47 2017 -0600
@@ -7,6 +7,7 @@
 import luan.LuanFunction;
 import luan.LuanException;
 import luan.modules.Utils;
+import luan.lib.parser.Parser;
 
 
 public final class BBCode {
--- a/src/luan/modules/parsers/Csv.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/parsers/Csv.java	Wed Aug 02 15:19:47 2017 -0600
@@ -1,6 +1,8 @@
 package luan.modules.parsers;
 
 import luan.LuanTable;
+import luan.lib.parser.Parser;
+import luan.lib.parser.ParseException;
 
 
 public final class Csv {
--- a/src/luan/modules/parsers/Html.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/parsers/Html.java	Wed Aug 02 15:19:47 2017 -0600
@@ -5,6 +5,8 @@
 import java.util.Set;
 import java.util.HashSet;
 import luan.LuanTable;
+import luan.lib.parser.Parser;
+import luan.lib.parser.ParseException;
 
 
 public final class Html {
--- a/src/luan/modules/parsers/Json.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/parsers/Json.java	Wed Aug 02 15:19:47 2017 -0600
@@ -7,6 +7,8 @@
 import java.util.Iterator;
 import luan.LuanTable;
 import luan.LuanException;
+import luan.lib.parser.Parser;
+import luan.lib.parser.ParseException;
 
 
 public final class Json {
--- a/src/luan/modules/parsers/ParseException.java	Wed Aug 02 13:45:06 2017 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-package luan.modules.parsers;
-
-
-public final class ParseException extends Exception {
-	public final String text;
-	public final int errorIndex;
-	public final int highIndex;
-
-	public ParseException(Parser parser,String msg) {
-		super(msg);
-		this.text = parser.text;
-		this.errorIndex = parser.currentIndex();
-		this.highIndex = parser.highIndex();
-	}
-
-	public ParseException(Parser parser,Exception cause) {
-		this(parser,cause.getMessage(),cause);
-	}
-
-	public ParseException(Parser parser,String msg,Exception cause) {
-		super(msg,cause);
-		this.text = parser.text;
-		this.errorIndex = parser.currentIndex();
-		this.highIndex = parser.highIndex();
-	}
-
-	private class Location {
-		final int line;
-		final int pos;
-
-		Location(int index) {
-			int line = 0;
-			int i = -1;
-			while(true) {
-				int j = text.indexOf('\n',i+1);
-				if( j == -1 || j >= index )
-					break;
-				i = j;
-				line++;
-			}
-			this.line = line;
-			this.pos = index - i - 1;
-		}
-	}
-
-	private String[] lines() {
-		return text.split("\n",-1);
-	}
-
-	@Override public String getMessage() {
-		Location loc = new Location(errorIndex);
-		String line = lines()[loc.line];
-		String msg = super.getMessage() +  " (line " + (loc.line+1) + ", pos " + (loc.pos+1) + ")\n";
-		StringBuilder sb = new StringBuilder(msg);
-		sb.append( line + "\n" );
-		for( int i=0; i<loc.pos; i++ ) {
-			sb.append( line.charAt(i)=='\t' ? '\t' : ' ' );
-		}
-		sb.append("^\n");
-		return sb.toString();
-	}
-}
--- a/src/luan/modules/parsers/Parser.java	Wed Aug 02 13:45:06 2017 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-package luan.modules.parsers;
-
-
-public class Parser {
-	public final String text;
-	private final int len;
-	private int[] stack = new int[256];
-	private int frame = 0;
-	private int iHigh;
-
-	public Parser(String text) {
-		this.text = text;
-		this.len = text.length();
-	}
-
-	private int i() {
-		return stack[frame];
-	}
-
-	private void i(int i) {
-		stack[frame] += i;
-		if( iHigh < stack[frame] )
-			iHigh = stack[frame];
-	}
-
-	public int begin() {
-		frame++;
-		if( frame == stack.length ) {
-			int[] a = new int[2*frame];
-			System.arraycopy(stack,0,a,0,frame);
-			stack = a;
-		}
-		stack[frame] = stack[frame-1];
-		return i();
-	}
-
-	public void rollback() {
-		stack[frame] = stack[frame-1];
-	}
-
-	public <T> T success(T t) {
-		success();
-		return t;
-	}
-
-	public boolean success() {
-		frame--;
-		stack[frame] = stack[frame+1];
-		return true;
-	}
-
-	public <T> T failure(T t) {
-		failure();
-		return t;
-	}
-
-	public boolean failure() {
-		frame--;
-		return false;
-	}
-
-	public int currentIndex() {
-		return i();
-	}
-/*
-	public int errorIndex() {
-		return frame > 0 ? stack[frame-1] : 0;
-	}
-*/
-	public int highIndex() {
-		return iHigh;
-	}
-
-	public char lastChar() {
-		return text.charAt(i()-1);
-	}
-
-	public char currentChar() {
-		return text.charAt(i());
-	}
-
-	public boolean endOfInput() {
-		return i() >= len;
-	}
-
-	public boolean match(char c) {
-		if( endOfInput() || text.charAt(i()) != c )
-			return false;
-		i(1);
-		return true;
-	}
-
-	public boolean match(String s) {
-		int n = s.length();
-		if( !text.regionMatches(i(),s,0,n) )
-			return false;
-		i(n);
-		return true;
-	}
-
-	public boolean matchIgnoreCase(String s) {
-		int n = s.length();
-		if( !text.regionMatches(true,i(),s,0,n) )
-			return false;
-		i(n);
-		return true;
-	}
-
-	public boolean anyOf(String s) {
-		if( endOfInput() || s.indexOf(text.charAt(i())) == -1 )
-			return false;
-		i(1);
-		return true;
-	}
-
-	public boolean noneOf(String s) {
-		if( endOfInput() || s.indexOf(text.charAt(i())) != -1 )
-			return false;
-		i(1);
-		return true;
-	}
-
-	public boolean inCharRange(char cLow, char cHigh) {
-		if( endOfInput() )
-			return false;
-		char c = text.charAt(i());
-		if( !(cLow <= c && c <= cHigh) )
-			return false;
-		i(1);
-		return true;
-	}
-
-	public boolean anyChar() {
-		if( endOfInput() )
-			return false;
-		i(1);
-		return true;
-	}
-
-	public boolean test(char c) {
-		return !endOfInput() && text.charAt(i()) == c;
-	}
-
-	public boolean test(String s) {
-		return text.regionMatches(i(),s,0,s.length());
-	}
-
-	public boolean testIgnoreCase(String s) {
-		return text.regionMatches(true,i(),s,0,s.length());
-	}
-
-	public String textFrom(int start) {
-		return text.substring(start,i());
-	}
-
-}
--- a/src/luan/modules/parsers/Theme.java	Wed Aug 02 13:45:06 2017 -0600
+++ b/src/luan/modules/parsers/Theme.java	Wed Aug 02 15:19:47 2017 -0600
@@ -1,6 +1,8 @@
 package luan.modules.parsers;
 
 import luan.LuanException;
+import luan.lib.parser.Parser;
+import luan.lib.parser.ParseException;
 
 
 public final class Theme {