| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476 |
- /* SGisWktParser.java */
- /* Generated By:JavaCC: Do not edit this line. SGisWktParser.java */
- package com.persagy.gis.parser;
- import com.persagy.gis.entity.*;
- import com.persagy.gis.enums.SGisGeometryType;
- import java.util.*;
- /**
- * wkt æ ¼å¼�è¯æ³•è§£æž�å™?
- *
- * @author å¼ ç»´æ–? <zhangweixin@sagacloud.cn>
- */
- public class SGisWktParser implements SGisWktParserConstants {
- public SAbstractGisGeometry parser() throws ParseException {
- return passerGeometry();
- }
- /** è§£æž�å‡ ä½•å¯¹è±¡ */
- final public SAbstractGisGeometry passerGeometry() throws ParseException {SAbstractGisGeometry geometry;
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case POINT:{
- jj_consume_token(POINT);
- geometry = passerPointArgs();
- break;
- }
- case MULTIPOINT:{
- jj_consume_token(MULTIPOINT);
- geometry = passerMultiPointArgs();
- break;
- }
- case LINESTRING:{
- jj_consume_token(LINESTRING);
- geometry = passerLineStringArgs();
- break;
- }
- case MULTILINESTRING:{
- jj_consume_token(MULTILINESTRING);
- geometry = passerMultiLineStringArgs();
- break;
- }
- case POLYGON:{
- jj_consume_token(POLYGON);
- geometry = passerPolygonArgs();
- break;
- }
- case MULTIPOLYGON:{
- jj_consume_token(MULTIPOLYGON);
- geometry = passerMultiPolygonArgs();
- break;
- }
- default:
- jj_la1[0] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- {if ("" != null) return geometry;}
- throw new Error("Missing return statement in function");
- }
- /** 解� Point �数 */
- final public SGisPoint passerPointArgs() throws ParseException {SGisPoint point;
- SGisPosition pos;
- point = new SGisPoint();
- jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case NUM:{
- pos = passerPosition();
- point.setCoordinates(pos);
- break;
- }
- default:
- jj_la1[1] = jj_gen;
- ;
- }
- jj_consume_token(RPAREN);
- {if ("" != null) return point;}
- throw new Error("Missing return statement in function");
- }
- /** 解� MultiPoint �数 */
- final public SGisMultiPoint passerMultiPointArgs() throws ParseException {SGisMultiPoint multiPoint;
- ArrayList<SGisPosition> posArr;
- multiPoint = new SGisMultiPoint();
- jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case NUM:{
- posArr = passerPositionArray();
- multiPoint.setCoordinates(posArr);
- break;
- }
- default:
- jj_la1[2] = jj_gen;
- ;
- }
- jj_consume_token(RPAREN);
- {if ("" != null) return multiPoint;}
- throw new Error("Missing return statement in function");
- }
- /** 解� LineString �数 */
- final public SGisLineString passerLineStringArgs() throws ParseException {SGisLineString line;
- ArrayList<SGisPosition> posArr;
- line = new SGisLineString();
- jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case NUM:{
- posArr = passerPositionArray();
- line.setCoordinates(posArr);
- break;
- }
- default:
- jj_la1[3] = jj_gen;
- ;
- }
- jj_consume_token(RPAREN);
- {if ("" != null) return line;}
- throw new Error("Missing return statement in function");
- }
- /** 解� MultiLineString �数 */
- final public SGisMultiLineString passerMultiLineStringArgs() throws ParseException {SGisMultiLineString multiLine;
- ArrayList<ArrayList<SGisPosition>> posArr2;
- multiLine = new SGisMultiLineString();
- jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case LPAREN:{
- posArr2 = passerPositionArray2();
- multiLine.setCoordinates(posArr2);
- break;
- }
- default:
- jj_la1[4] = jj_gen;
- ;
- }
- jj_consume_token(RPAREN);
- {if ("" != null) return multiLine;}
- throw new Error("Missing return statement in function");
- }
- /** 解� Polygon �数 */
- final public SGisPolygon passerPolygonArgs() throws ParseException {SGisPolygon polygon;
- ArrayList<ArrayList<SGisPosition>> posArr2;
- polygon = new SGisPolygon();
- jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case LPAREN:{
- posArr2 = passerPositionArray2();
- polygon.setCoordinates(posArr2);
- break;
- }
- default:
- jj_la1[5] = jj_gen;
- ;
- }
- jj_consume_token(RPAREN);
- {if ("" != null) return polygon;}
- throw new Error("Missing return statement in function");
- }
- /** 解� MultiPolygon �数 */
- final public SGisMultiPolygon passerMultiPolygonArgs() throws ParseException {SGisMultiPolygon multiPolygon;
- ArrayList<ArrayList<ArrayList<SGisPosition>>> posArr3;
- multiPolygon = new SGisMultiPolygon();
- jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case LPAREN:{
- posArr3 = passerPositionArray3();
- multiPolygon.setCoordinates(posArr3);
- break;
- }
- default:
- jj_la1[6] = jj_gen;
- ;
- }
- jj_consume_token(RPAREN);
- {if ("" != null) return multiPolygon;}
- throw new Error("Missing return statement in function");
- }
- /** 解�二维 Position 对象数组 */
- final public ArrayList<ArrayList<ArrayList<SGisPosition>>> passerPositionArray3() throws ParseException {ArrayList<ArrayList<SGisPosition>> posArray;
- ArrayList<ArrayList<ArrayList<SGisPosition>>> positionList = new ArrayList<ArrayList<ArrayList<SGisPosition>>>();
- jj_consume_token(LPAREN);
- posArray = passerPositionArray2();
- jj_consume_token(RPAREN);
- positionList.add(posArray);
- label_1:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case COMMA:{
- ;
- break;
- }
- default:
- jj_la1[7] = jj_gen;
- break label_1;
- }
- jj_consume_token(COMMA);
- jj_consume_token(LPAREN);
- posArray = passerPositionArray2();
- jj_consume_token(RPAREN);
- positionList.add(posArray);
- }
- {if ("" != null) return positionList;}
- throw new Error("Missing return statement in function");
- }
- /** 解�二维 Position 对象数组 */
- final public ArrayList<ArrayList<SGisPosition>> passerPositionArray2() throws ParseException {ArrayList<SGisPosition> posArray;
- ArrayList<ArrayList<SGisPosition>> positionList = new ArrayList<ArrayList<SGisPosition>>();
- jj_consume_token(LPAREN);
- posArray = passerPositionArray();
- jj_consume_token(RPAREN);
- positionList.add(posArray);
- label_2:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case COMMA:{
- ;
- break;
- }
- default:
- jj_la1[8] = jj_gen;
- break label_2;
- }
- jj_consume_token(COMMA);
- jj_consume_token(LPAREN);
- posArray = passerPositionArray();
- jj_consume_token(RPAREN);
- positionList.add(posArray);
- }
- {if ("" != null) return positionList;}
- throw new Error("Missing return statement in function");
- }
- /** 解� Position 对象数组 */
- final public ArrayList<SGisPosition> passerPositionArray() throws ParseException {SGisPosition pos;
- ArrayList<SGisPosition> positionList = new ArrayList<SGisPosition>();
- pos = passerPosition();
- positionList.add(pos);
- label_3:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case COMMA:{
- ;
- break;
- }
- default:
- jj_la1[9] = jj_gen;
- break label_3;
- }
- jj_consume_token(COMMA);
- pos = passerPosition();
- positionList.add(pos);
- }
- {if ("" != null) return positionList;}
- throw new Error("Missing return statement in function");
- }
- /** 解� Position 对象 */
- final public SGisPosition passerPosition() throws ParseException {Double pos;
- ArrayList<Double> valList = new ArrayList<Double>();
- pos = parserNum();
- valList.add(pos);
- label_4:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
- case NUM:{
- ;
- break;
- }
- default:
- jj_la1[10] = jj_gen;
- break label_4;
- }
- pos = parserNum();
- valList.add(pos);
- }
- if (valList.size() >= 3) {
- {if ("" != null) return new SGisPosition(valList.get(0), valList.get(1), valList.get(2));}
- }
- if (valList.size() >= 2) {
- {if ("" != null) return new SGisPosition(valList.get(0), valList.get(1), null);}
- }
- if (valList.size() >= 1) {
- {if ("" != null) return new SGisPosition(valList.get(0), 0.0, null);}
- }
- {if ("" != null) return new SGisPosition();}
- throw new Error("Missing return statement in function");
- }
- /** 解�� */
- final public Double parserNum() throws ParseException {Token t;
- t = jj_consume_token(NUM);
- {if ("" != null) return Double.parseDouble(t.image);}
- throw new Error("Missing return statement in function");
- }
- /** Generated Token Manager. */
- public SGisWktParserTokenManager token_source;
- SimpleCharStream jj_input_stream;
- /** Current token. */
- public Token token;
- /** Next token. */
- public Token jj_nt;
- private int jj_ntk;
- private int jj_gen;
- final private int[] jj_la1 = new int[11];
- static private int[] jj_la1_0;
- static {
- jj_la1_init_0();
- }
- private static void jj_la1_init_0() {
- jj_la1_0 = new int[] {0x7e0,0x800,0x800,0x800,0x4,0x4,0x4,0x10,0x10,0x10,0x800,};
- }
- /** Constructor with InputStream. */
- public SGisWktParser(java.io.InputStream stream) {
- this(stream, null);
- }
- /** Constructor with InputStream and supplied encoding */
- public SGisWktParser(java.io.InputStream stream, String encoding) {
- try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
- token_source = new SGisWktParserTokenManager(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;
- }
- /** Reinitialise. */
- public void ReInit(java.io.InputStream stream) {
- ReInit(stream, null);
- }
- /** Reinitialise. */
- public void ReInit(java.io.InputStream stream, String encoding) {
- try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
- token_source.ReInit(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;
- }
- /** Constructor. */
- public SGisWktParser(java.io.Reader stream) {
- jj_input_stream = new SimpleCharStream(stream, 1, 1);
- token_source = new SGisWktParserTokenManager(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;
- }
- /** Reinitialise. */
- public void ReInit(java.io.Reader stream) {
- if (jj_input_stream == null) {
- jj_input_stream = new SimpleCharStream(stream, 1, 1);
- } else {
- jj_input_stream.ReInit(stream, 1, 1);
- }
- if (token_source == null) {
- token_source = new SGisWktParserTokenManager(jj_input_stream);
- }
- token_source.ReInit(jj_input_stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;
- }
- /** Constructor with generated Token Manager. */
- public SGisWktParser(SGisWktParserTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;
- }
- /** Reinitialise. */
- public void ReInit(SGisWktParserTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;
- }
- private Token jj_consume_token(int kind) throws ParseException {
- Token oldToken;
- if ((oldToken = token).next != null) token = token.next;
- else token = token.next = token_source.getNextToken();
- jj_ntk = -1;
- if (token.kind == kind) {
- jj_gen++;
- return token;
- }
- token = oldToken;
- jj_kind = kind;
- throw generateParseException();
- }
- /** Get the next Token. */
- final public Token getNextToken() {
- if (token.next != null) token = token.next;
- else token = token.next = token_source.getNextToken();
- jj_ntk = -1;
- jj_gen++;
- return token;
- }
- /** Get the specific Token. */
- final public Token getToken(int index) {
- Token t = token;
- for (int i = 0; i < index; i++) {
- if (t.next != null) t = t.next;
- else t = t.next = token_source.getNextToken();
- }
- return t;
- }
- private int jj_ntk_f() {
- if ((jj_nt=token.next) == null)
- return (jj_ntk = (token.next=token_source.getNextToken()).kind);
- else
- return (jj_ntk = jj_nt.kind);
- }
- private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
- private int[] jj_expentry;
- private int jj_kind = -1;
- /** Generate ParseException. */
- public ParseException generateParseException() {
- jj_expentries.clear();
- boolean[] la1tokens = new boolean[13];
- if (jj_kind >= 0) {
- la1tokens[jj_kind] = true;
- jj_kind = -1;
- }
- for (int i = 0; i < 11; i++) {
- if (jj_la1[i] == jj_gen) {
- for (int j = 0; j < 32; j++) {
- if ((jj_la1_0[i] & (1<<j)) != 0) {
- la1tokens[j] = true;
- }
- }
- }
- }
- for (int i = 0; i < 13; i++) {
- if (la1tokens[i]) {
- jj_expentry = new int[1];
- jj_expentry[0] = i;
- jj_expentries.add(jj_expentry);
- }
- }
- int[][] exptokseq = new int[jj_expentries.size()][];
- for (int i = 0; i < jj_expentries.size(); i++) {
- exptokseq[i] = jj_expentries.get(i);
- }
- return new ParseException(token, exptokseq, tokenImage);
- }
- /** Enable tracing. */
- final public void enable_tracing() {
- }
- /** Disable tracing. */
- final public void disable_tracing() {
- }
- }
|