From: leo Date: Thu, 30 Jul 2009 01:11:30 +0000 (+0000) Subject: git-svn-id: http://www.xerial.org/svn/project/XerialJ/trunk/xerial-core@3497 ae02f08e... X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9643cfb85a39b90ad6396969a3d4c5774fb8f863;p=xerial%2Fxerial-core.git git-svn-id: xerial.org/svn/project/XerialJ/trunk/xerial-core@3497 ae02f08e-27ec-0310-ae8c-8ba02fe2eafd --- diff --git a/src/main/java/org/xerial/core/ErrorCode.java b/src/main/java/org/xerial/core/ErrorCode.java index eb9c8c7..951eb5c 100644 --- a/src/main/java/org/xerial/core/ErrorCode.java +++ b/src/main/java/org/xerial/core/ErrorCode.java @@ -25,13 +25,13 @@ package org.xerial.core; /** - * A common interfarce for error codes + * A common interface for error codes * * @author leo * */ -public interface ErrorCode -{ +public interface ErrorCode { + static final String EMPTY_DESCRIPTION = ""; /** @@ -47,4 +47,5 @@ public interface ErrorCode * @return */ public String getDescription(); + } diff --git a/src/main/java/org/xerial/core/XerialError.java b/src/main/java/org/xerial/core/XerialError.java index 7c01202..ad307f0 100644 --- a/src/main/java/org/xerial/core/XerialError.java +++ b/src/main/java/org/xerial/core/XerialError.java @@ -31,8 +31,7 @@ package org.xerial.core; * @author leo * */ -public class XerialError extends RuntimeException -{ +public class XerialError extends RuntimeException { /** * */ @@ -40,38 +39,32 @@ public class XerialError extends RuntimeException private final ErrorCode errorCode; - public XerialError(ErrorCode errorCode) - { + public XerialError(ErrorCode errorCode) { super(); this.errorCode = errorCode; } - public XerialError(ErrorCode errorCode, String message, Throwable cause) - { + public XerialError(ErrorCode errorCode, String message, Throwable cause) { super(message, cause); this.errorCode = errorCode; } - public XerialError(ErrorCode errorCode, String message) - { + public XerialError(ErrorCode errorCode, String message) { super(message); this.errorCode = errorCode; } - public XerialError(ErrorCode errorCode, Throwable cause) - { + public XerialError(ErrorCode errorCode, Throwable cause) { super(cause); this.errorCode = errorCode; } - - public XerialError(XerialError cause) - { + + public XerialError(XerialError cause) { super(cause); this.errorCode = cause.getErrorCode(); } - - public XerialError(XerialException cause) - { + + public XerialError(XerialException cause) { super(cause); this.errorCode = cause.getErrorCode(); } @@ -81,14 +74,12 @@ public class XerialError extends RuntimeException * * @return */ - public ErrorCode getErrorCode() - { + public ErrorCode getErrorCode() { return errorCode; } @Override - public String getMessage() - { + public String getMessage() { return ExceptionHelper.getMessage(errorCode, super.getMessage()); } diff --git a/src/main/java/org/xerial/core/XerialErrorCode.java b/src/main/java/org/xerial/core/XerialErrorCode.java index bde6202..c2f8d20 100644 --- a/src/main/java/org/xerial/core/XerialErrorCode.java +++ b/src/main/java/org/xerial/core/XerialErrorCode.java @@ -33,12 +33,7 @@ package org.xerial.core; public enum XerialErrorCode implements ErrorCode { // related to programming error - INVALID_STATE, - SYNTAX_ERROR, - NOT_INITIALIZED, - UNSUPPORTED, - INVALID_INPUT, - NOT_READY, + INVALID_STATE, SYNTAX_ERROR, NOT_INITIALIZED, UNSUPPORTED, INVALID_INPUT, INVALID_ARGUMENT, NOT_READY, // collection MISSING_ELEMENT, @@ -46,52 +41,40 @@ public enum XerialErrorCode implements ErrorCode { RESOURCE_NOT_FOUND, // I/O - READ_ERROR, - OUTPUT_ERROR, - IO_EXCEPTION, - INTERRUPTED, + READ_ERROR, OUTPUT_ERROR, IO_EXCEPTION, INTERRUPTED, // option parser error - DUPLICATE_OPTION, - NO_OPTION, - NO_USAGE_ANNOTATION, - MISSING_ARGUMENT, + DUPLICATE_OPTION, NO_OPTION, NO_USAGE_ANNOTATION, MISSING_ARGUMENT, // type - MISSING_TYPE_PARAMETER, - NOT_A_COLLECTION, - INACCESSIBLE_METHOD, - WRONG_DATA_TYPE, - DECODE_ERROR, - ENCODE_ERROR, + MISSING_TYPE_PARAMETER, NOT_A_COLLECTION, INACCESSIBLE_METHOD, WRONG_DATA_TYPE, DECODE_ERROR, ENCODE_ERROR, // parse error - INVALID_TOKEN, - PARSE_ERROR, + INVALID_TOKEN, PARSE_ERROR, // general exception INHERITED, ; private final String description; - private XerialErrorCode() - { + private XerialErrorCode() { this.description = EMPTY_DESCRIPTION; } - private XerialErrorCode(String description) - { + private XerialErrorCode(String description) { this.description = description; } - public String getCodeName() - { + public String getCodeName() { return name(); } - public String getDescription() - { + public String getDescription() { return null; } + public Enum< ? > getCode() { + return this; + } + } diff --git a/src/main/java/org/xerial/core/XerialException.java b/src/main/java/org/xerial/core/XerialException.java index 8a0d4a8..1f45ba0 100644 --- a/src/main/java/org/xerial/core/XerialException.java +++ b/src/main/java/org/xerial/core/XerialException.java @@ -38,39 +38,33 @@ import org.xerial.json.JSONErrorCode; * @author leo * */ -public class XerialException extends Exception -{ +public class XerialException extends Exception { private static final long serialVersionUID = 1L; - private final ErrorCode errorCode; + private final ErrorCode errorCode; - public XerialException(XerialException e) - { + public XerialException(XerialException e) { super(e.getErrorMessage()); this.errorCode = e.errorCode; } - public XerialException(ErrorCode errorCode) - { + public XerialException(ErrorCode errorCode) { super(); this.errorCode = errorCode; } - public XerialException(ErrorCode errorCode, String message, Throwable cause) - { + public XerialException(ErrorCode errorCode, String message, Throwable cause) { super(message, cause); this.errorCode = errorCode; } - public XerialException(ErrorCode errorCode, String message) - { + public XerialException(ErrorCode errorCode, String message) { super(message); this.errorCode = errorCode; } - public XerialException(ErrorCode errorCode, Throwable cause) - { + public XerialException(ErrorCode errorCode, Throwable cause) { super(cause); this.errorCode = errorCode; } @@ -80,19 +74,16 @@ public class XerialException extends Exception * * @return */ - public ErrorCode getErrorCode() - { + public ErrorCode getErrorCode() { return errorCode; } @Override - public String getMessage() - { + public String getMessage() { return ExceptionHelper.getMessage(errorCode, super.getMessage()); } - private String getErrorMessage() - { + private String getErrorMessage() { return super.getMessage(); } diff --git a/src/main/java/org/xerial/json/JSONErrorCode.java b/src/main/java/org/xerial/json/JSONErrorCode.java index d2a6997..bef13ca 100644 --- a/src/main/java/org/xerial/json/JSONErrorCode.java +++ b/src/main/java/org/xerial/json/JSONErrorCode.java @@ -45,24 +45,24 @@ public enum JSONErrorCode implements ErrorCode { private final String description; - private JSONErrorCode(String description) - { + private JSONErrorCode(String description) { this.description = description; } - private JSONErrorCode() - { + private JSONErrorCode() { this.description = EMPTY_DESCRIPTION; } - public String getCodeName() - { + public String getCodeName() { return name(); } - public String getDescription() - { + public String getDescription() { return description; } + public Enum< ? > getCode() { + return this; + } + } diff --git a/src/main/java/org/xerial/lens/Lens.java b/src/main/java/org/xerial/lens/Lens.java index 4c7cb7d..7475aae 100644 --- a/src/main/java/org/xerial/lens/Lens.java +++ b/src/main/java/org/xerial/lens/Lens.java @@ -255,19 +255,19 @@ public class Lens { return mapper.map(result, parser); } + public static String toJSON(Object obj) { + return ObjectLens.toJSON(obj); + } + public static void find(Class bindingType, TreeParser parser, ObjectHandler handler) throws XerialException { find(bindingType, bindingType.getSimpleName(), parser, handler); } - public static String toJSON(Object obj) { - return ObjectLens.toJSON(obj); - } - public static void find(Class bindingType, String coreNodeName, TreeParser parser, ObjectHandler handler) throws XerialException { ObjectMapper mapper = ObjectMapper.getMapper(bindingType.getClass()); - + mapper.find(bindingType, parser, coreNodeName, handler); } } diff --git a/src/main/java/org/xerial/lens/ObjectMapper.java b/src/main/java/org/xerial/lens/ObjectMapper.java index bc2d849..f54093d 100644 --- a/src/main/java/org/xerial/lens/ObjectMapper.java +++ b/src/main/java/org/xerial/lens/ObjectMapper.java @@ -218,6 +218,26 @@ public class ObjectMapper { } + public void find(Class targetType, TreeParser parser, + String coreNodeNameOfTheTargetType, ObjectHandler handler) throws XerialException { + + try { + AmoebaJoinHandler mapper = new RelationExtracter(); + + _logger.info(qs); + + StreamAmoebaJoin aj = new StreamAmoebaJoin(qs, mapper); + aj.sweep(parser); + } + catch (IOException e) { + throw new XerialException(XerialErrorCode.IO_EXCEPTION, e); + } + catch (Exception e) { + throw new XerialException(XerialErrorCode.INHERITED, e); + } + + } + private QuerySet buildQuery(Class< ? > targetType) { QueryBuilder qb = new QueryBuilder(); qb.build(targetType, "root"); diff --git a/src/main/java/org/xerial/silk/schema/impl/SilkSchema.g b/src/main/java/org/xerial/silk/schema/impl/SilkSchema.g index 3694620..d29b5ba 100644 --- a/src/main/java/org/xerial/silk/schema/impl/SilkSchema.g +++ b/src/main/java/org/xerial/silk/schema/impl/SilkSchema.g @@ -171,6 +171,7 @@ BelongsTo: 'belongs_to'; Default: 'default'; Projection: 'projection'; OrderBy: 'order_by'; +On: 'on'; fragment SafeFirstLetter: 'A' .. 'Z' | 'a' .. 'z'; fragment SafeLetter: SafeFirstLetter | '0' .. '9' | '-' | '_'; @@ -251,7 +252,7 @@ fragment includeItem: QName -> Mixin[$QName.text]; fragment -indexStatement: Index QName indexTarget (Comma indexTarget)* +indexStatement: Index QName On indexTarget (Comma indexTarget)* -> ^(Index TypeName[$QName.text] indexTarget+) ; diff --git a/src/main/java/org/xerial/silk/schema/impl/SilkSchema.tokens b/src/main/java/org/xerial/silk/schema/impl/SilkSchema.tokens index 84c5bfb..46a8d95 100644 --- a/src/main/java/org/xerial/silk/schema/impl/SilkSchema.tokens +++ b/src/main/java/org/xerial/silk/schema/impl/SilkSchema.tokens @@ -11,9 +11,9 @@ Frac=31 HexDigit=24 Symbol=47 OrderBy=56 -T__65=65 Default=54 Argument=17 +On=57 Index=52 Module=5 Letter=23 @@ -27,30 +27,30 @@ DefaultValue=13 Integer=30 Relation=51 Mixin=9 -WhiteSpace=62 +WhiteSpace=63 ClassDef=6 LineComment=20 -ModuleName=59 +ModuleName=60 Projection=55 BelongsTo=53 -SafeFirstLetter=57 +SafeFirstLetter=58 Star=43 Preamble=19 Exp=32 -QNameChar=63 +QNameChar=64 RParen=42 UnicodeChar=25 StringChar=27 LineBreak=21 Function=16 Name=7 -ModuleDef=61 +ModuleDef=62 LParen=41 String=29 -SafeLetter=58 +SafeLetter=59 LineBreakChar=18 IsArray=11 -QName=64 +QName=65 StringChar_s=28 UnsafeUnicodeChar=44 Double=33 @@ -59,5 +59,5 @@ RBracket=37 Lt=38 Parent=8 TypeName=12 -WhiteSpaces=60 -'on'=65 +WhiteSpaces=61 +'on'=57 diff --git a/src/main/java/org/xerial/silk/schema/impl/SilkSchemaLexer.java b/src/main/java/org/xerial/silk/schema/impl/SilkSchemaLexer.java index a64b03b..babee93 100644 --- a/src/main/java/org/xerial/silk/schema/impl/SilkSchemaLexer.java +++ b/src/main/java/org/xerial/silk/schema/impl/SilkSchemaLexer.java @@ -1,4 +1,4 @@ -// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 SilkSchema.g 2009-07-08 15:38:42 +// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 SilkSchema.g 2009-07-08 19:54:26 /*-------------------------------------------------------------------------- * Copyright 2009 Taro L. Saito @@ -46,10 +46,10 @@ public class SilkSchemaLexer extends Lexer { public static final int Frac=31; public static final int HexDigit=24; public static final int Symbol=47; - public static final int T__65=65; public static final int OrderBy=56; public static final int Default=54; public static final int Argument=17; + public static final int On=57; public static final int Index=52; public static final int Module=5; public static final int Letter=23; @@ -63,17 +63,17 @@ public class SilkSchemaLexer extends Lexer { public static final int Integer=30; public static final int Relation=51; public static final int Mixin=9; - public static final int WhiteSpace=62; + public static final int WhiteSpace=63; public static final int ClassDef=6; public static final int LineComment=20; - public static final int ModuleName=59; + public static final int ModuleName=60; public static final int Projection=55; public static final int BelongsTo=53; - public static final int SafeFirstLetter=57; + public static final int SafeFirstLetter=58; public static final int Star=43; public static final int Preamble=19; public static final int Exp=32; - public static final int QNameChar=63; + public static final int QNameChar=64; public static final int RParen=42; public static final int UnicodeChar=25; public static final int StringChar=27; @@ -81,12 +81,12 @@ public class SilkSchemaLexer extends Lexer { public static final int Name=7; public static final int Function=16; public static final int LParen=41; - public static final int ModuleDef=61; + public static final int ModuleDef=62; public static final int String=29; - public static final int SafeLetter=58; + public static final int SafeLetter=59; public static final int LineBreakChar=18; public static final int IsArray=11; - public static final int QName=64; + public static final int QName=65; public static final int EOF=-1; public static final int StringChar_s=28; public static final int UnsafeUnicodeChar=44; @@ -96,7 +96,7 @@ public class SilkSchemaLexer extends Lexer { public static final int RBracket=37; public static final int Parent=8; public static final int TypeName=12; - public static final int WhiteSpaces=60; + public static final int WhiteSpaces=61; @@ -114,27 +114,6 @@ public class SilkSchemaLexer extends Lexer { } public String getGrammarFileName() { return "SilkSchema.g"; } - // $ANTLR start "T__65" - public final void mT__65() throws RecognitionException { - try { - int _type = T__65; - int _channel = DEFAULT_TOKEN_CHANNEL; - // SilkSchema.g:38:7: ( 'on' ) - // SilkSchema.g:38:9: 'on' - { - match("on"); if (state.failed) return ; - - - } - - state.type = _type; - state.channel = _channel; - } - finally { - } - } - // $ANTLR end "T__65" - // $ANTLR start "Preamble" public final void mPreamble() throws RecognitionException { try { @@ -674,9 +653,9 @@ public class SilkSchemaLexer extends Lexer { // SilkSchema.g:134:9: '\"' s= StringChar_s '\"' { match('\"'); if (state.failed) return ; - int sStart273 = getCharIndex(); + int sStart264 = getCharIndex(); mStringChar_s(); if (state.failed) return ; - s = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, sStart273, getCharIndex()-1); + s = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, sStart264, getCharIndex()-1); match('\"'); if (state.failed) return ; if ( state.backtracking==0 ) { setText((s!=null?s.getText():null)); @@ -1299,9 +1278,9 @@ public class SilkSchemaLexer extends Lexer { // SilkSchema.g:163:9: ( ':' NonWhiteSpaceChar )=> ':' s= SymbolChars { match(':'); if (state.failed) return ; - int sStart588 = getCharIndex(); + int sStart579 = getCharIndex(); mSymbolChars(); if (state.failed) return ; - s = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, sStart588, getCharIndex()-1); + s = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, sStart579, getCharIndex()-1); if ( state.backtracking==0 ) { setText((s!=null?s.getText():null)); } @@ -1505,10 +1484,31 @@ public class SilkSchemaLexer extends Lexer { } // $ANTLR end "OrderBy" + // $ANTLR start "On" + public final void mOn() throws RecognitionException { + try { + int _type = On; + int _channel = DEFAULT_TOKEN_CHANNEL; + // SilkSchema.g:174:3: ( 'on' ) + // SilkSchema.g:174:5: 'on' + { + match("on"); if (state.failed) return ; + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "On" + // $ANTLR start "SafeFirstLetter" public final void mSafeFirstLetter() throws RecognitionException { try { - // SilkSchema.g:175:25: ( 'A' .. 'Z' | 'a' .. 'z' ) + // SilkSchema.g:176:25: ( 'A' .. 'Z' | 'a' .. 'z' ) // SilkSchema.g: { if ( (input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) { @@ -1533,7 +1533,7 @@ public class SilkSchemaLexer extends Lexer { // $ANTLR start "SafeLetter" public final void mSafeLetter() throws RecognitionException { try { - // SilkSchema.g:176:20: ( SafeFirstLetter | '0' .. '9' | '-' | '_' ) + // SilkSchema.g:177:20: ( SafeFirstLetter | '0' .. '9' | '-' | '_' ) // SilkSchema.g: { if ( input.LA(1)=='-'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { @@ -1558,11 +1558,11 @@ public class SilkSchemaLexer extends Lexer { // $ANTLR start "ModuleName" public final void mModuleName() throws RecognitionException { try { - // SilkSchema.g:178:20: ( SafeFirstLetter ( SafeLetter )* ( '.' SafeFirstLetter ( SafeLetter )* )* ) - // SilkSchema.g:178:22: SafeFirstLetter ( SafeLetter )* ( '.' SafeFirstLetter ( SafeLetter )* )* + // SilkSchema.g:179:20: ( SafeFirstLetter ( SafeLetter )* ( '.' SafeFirstLetter ( SafeLetter )* )* ) + // SilkSchema.g:179:22: SafeFirstLetter ( SafeLetter )* ( '.' SafeFirstLetter ( SafeLetter )* )* { mSafeFirstLetter(); if (state.failed) return ; - // SilkSchema.g:178:38: ( SafeLetter )* + // SilkSchema.g:179:38: ( SafeLetter )* loop16: do { int alt16=2; @@ -1575,7 +1575,7 @@ public class SilkSchemaLexer extends Lexer { switch (alt16) { case 1 : - // SilkSchema.g:178:38: SafeLetter + // SilkSchema.g:179:38: SafeLetter { mSafeLetter(); if (state.failed) return ; @@ -1587,7 +1587,7 @@ public class SilkSchemaLexer extends Lexer { } } while (true); - // SilkSchema.g:178:50: ( '.' SafeFirstLetter ( SafeLetter )* )* + // SilkSchema.g:179:50: ( '.' SafeFirstLetter ( SafeLetter )* )* loop18: do { int alt18=2; @@ -1600,11 +1600,11 @@ public class SilkSchemaLexer extends Lexer { switch (alt18) { case 1 : - // SilkSchema.g:178:51: '.' SafeFirstLetter ( SafeLetter )* + // SilkSchema.g:179:51: '.' SafeFirstLetter ( SafeLetter )* { match('.'); if (state.failed) return ; mSafeFirstLetter(); if (state.failed) return ; - // SilkSchema.g:178:71: ( SafeLetter )* + // SilkSchema.g:179:71: ( SafeLetter )* loop17: do { int alt17=2; @@ -1617,7 +1617,7 @@ public class SilkSchemaLexer extends Lexer { switch (alt17) { case 1 : - // SilkSchema.g:178:71: SafeLetter + // SilkSchema.g:179:71: SafeLetter { mSafeLetter(); if (state.failed) return ; @@ -1654,15 +1654,15 @@ public class SilkSchemaLexer extends Lexer { int _channel = DEFAULT_TOKEN_CHANNEL; Token s=null; - // SilkSchema.g:179:10: ( 'module' WhiteSpaces s= ModuleName ) - // SilkSchema.g:179:12: 'module' WhiteSpaces s= ModuleName + // SilkSchema.g:180:10: ( 'module' WhiteSpaces s= ModuleName ) + // SilkSchema.g:180:12: 'module' WhiteSpaces s= ModuleName { match("module"); if (state.failed) return ; mWhiteSpaces(); if (state.failed) return ; - int sStart738 = getCharIndex(); + int sStart736 = getCharIndex(); mModuleName(); if (state.failed) return ; - s = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, sStart738, getCharIndex()-1); + s = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, sStart736, getCharIndex()-1); if ( state.backtracking==0 ) { setText((s!=null?s.getText():null)); } @@ -1680,8 +1680,8 @@ public class SilkSchemaLexer extends Lexer { // $ANTLR start "QNameChar" public final void mQNameChar() throws RecognitionException { try { - // SilkSchema.g:181:19: (~ ( LineBreakChar | UnsafeUnicodeChar | WhiteSpace ) ) - // SilkSchema.g:181:21: ~ ( LineBreakChar | UnsafeUnicodeChar | WhiteSpace ) + // SilkSchema.g:182:19: (~ ( LineBreakChar | UnsafeUnicodeChar | WhiteSpace ) ) + // SilkSchema.g:182:21: ~ ( LineBreakChar | UnsafeUnicodeChar | WhiteSpace ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='\b')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\u001F')||input.LA(1)=='!'||input.LA(1)=='$'||input.LA(1)=='&'||input.LA(1)=='+'||(input.LA(1)>='/' && input.LA(1)<='9')||input.LA(1)==';'||input.LA(1)=='='||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='^' && input.LA(1)<='z')||(input.LA(1)>='~' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1707,10 +1707,10 @@ public class SilkSchemaLexer extends Lexer { try { int _type = QName; int _channel = DEFAULT_TOKEN_CHANNEL; - // SilkSchema.g:182:6: ( ( QNameChar )+ ( Dot ( QNameChar )+ )* ) - // SilkSchema.g:182:8: ( QNameChar )+ ( Dot ( QNameChar )+ )* + // SilkSchema.g:183:6: ( ( QNameChar )+ ( Dot ( QNameChar )+ )* ) + // SilkSchema.g:183:8: ( QNameChar )+ ( Dot ( QNameChar )+ )* { - // SilkSchema.g:182:8: ( QNameChar )+ + // SilkSchema.g:183:8: ( QNameChar )+ int cnt19=0; loop19: do { @@ -1724,7 +1724,7 @@ public class SilkSchemaLexer extends Lexer { switch (alt19) { case 1 : - // SilkSchema.g:182:8: QNameChar + // SilkSchema.g:183:8: QNameChar { mQNameChar(); if (state.failed) return ; @@ -1741,7 +1741,7 @@ public class SilkSchemaLexer extends Lexer { cnt19++; } while (true); - // SilkSchema.g:182:19: ( Dot ( QNameChar )+ )* + // SilkSchema.g:183:19: ( Dot ( QNameChar )+ )* loop21: do { int alt21=2; @@ -1754,10 +1754,10 @@ public class SilkSchemaLexer extends Lexer { switch (alt21) { case 1 : - // SilkSchema.g:182:20: Dot ( QNameChar )+ + // SilkSchema.g:183:20: Dot ( QNameChar )+ { mDot(); if (state.failed) return ; - // SilkSchema.g:182:24: ( QNameChar )+ + // SilkSchema.g:183:24: ( QNameChar )+ int cnt20=0; loop20: do { @@ -1771,7 +1771,7 @@ public class SilkSchemaLexer extends Lexer { switch (alt20) { case 1 : - // SilkSchema.g:182:24: QNameChar + // SilkSchema.g:183:24: QNameChar { mQNameChar(); if (state.failed) return ; @@ -1811,7 +1811,7 @@ public class SilkSchemaLexer extends Lexer { // $ANTLR start "WhiteSpace" public final void mWhiteSpace() throws RecognitionException { try { - // SilkSchema.g:185:11: ( ' ' | '\\t' ) + // SilkSchema.g:186:11: ( ' ' | '\\t' ) // SilkSchema.g: { if ( input.LA(1)=='\t'||input.LA(1)==' ' ) { @@ -1838,10 +1838,10 @@ public class SilkSchemaLexer extends Lexer { try { int _type = WhiteSpaces; int _channel = DEFAULT_TOKEN_CHANNEL; - // SilkSchema.g:187:12: ( ( WhiteSpace )+ ) - // SilkSchema.g:187:14: ( WhiteSpace )+ + // SilkSchema.g:188:12: ( ( WhiteSpace )+ ) + // SilkSchema.g:188:14: ( WhiteSpace )+ { - // SilkSchema.g:187:14: ( WhiteSpace )+ + // SilkSchema.g:188:14: ( WhiteSpace )+ int cnt22=0; loop22: do { @@ -1855,7 +1855,7 @@ public class SilkSchemaLexer extends Lexer { switch (alt22) { case 1 : - // SilkSchema.g:187:14: WhiteSpace + // SilkSchema.g:188:14: WhiteSpace { mWhiteSpace(); if (state.failed) return ; @@ -1887,215 +1887,215 @@ public class SilkSchemaLexer extends Lexer { // $ANTLR end "WhiteSpaces" public void mTokens() throws RecognitionException { - // SilkSchema.g:1:8: ( T__65 | Preamble | LineComment | LineBreak | String | Integer | Double | LBrace | RBrace | LBracket | RBracket | Lt | Dot | Comma | LParen | RParen | Star | Symbol | Class | Includes | End | Relation | Index | BelongsTo | Default | Projection | OrderBy | ModuleDef | QName | WhiteSpaces ) + // SilkSchema.g:1:8: ( Preamble | LineComment | LineBreak | String | Integer | Double | LBrace | RBrace | LBracket | RBracket | Lt | Dot | Comma | LParen | RParen | Star | Symbol | Class | Includes | End | Relation | Index | BelongsTo | Default | Projection | OrderBy | On | ModuleDef | QName | WhiteSpaces ) int alt23=30; alt23 = dfa23.predict(input); switch (alt23) { case 1 : - // SilkSchema.g:1:10: T__65 + // SilkSchema.g:1:10: Preamble { - mT__65(); if (state.failed) return ; + mPreamble(); if (state.failed) return ; } break; case 2 : - // SilkSchema.g:1:16: Preamble + // SilkSchema.g:1:19: LineComment { - mPreamble(); if (state.failed) return ; + mLineComment(); if (state.failed) return ; } break; case 3 : - // SilkSchema.g:1:25: LineComment + // SilkSchema.g:1:31: LineBreak { - mLineComment(); if (state.failed) return ; + mLineBreak(); if (state.failed) return ; } break; case 4 : - // SilkSchema.g:1:37: LineBreak + // SilkSchema.g:1:41: String { - mLineBreak(); if (state.failed) return ; + mString(); if (state.failed) return ; } break; case 5 : - // SilkSchema.g:1:47: String + // SilkSchema.g:1:48: Integer { - mString(); if (state.failed) return ; + mInteger(); if (state.failed) return ; } break; case 6 : - // SilkSchema.g:1:54: Integer + // SilkSchema.g:1:56: Double { - mInteger(); if (state.failed) return ; + mDouble(); if (state.failed) return ; } break; case 7 : - // SilkSchema.g:1:62: Double + // SilkSchema.g:1:63: LBrace { - mDouble(); if (state.failed) return ; + mLBrace(); if (state.failed) return ; } break; case 8 : - // SilkSchema.g:1:69: LBrace + // SilkSchema.g:1:70: RBrace { - mLBrace(); if (state.failed) return ; + mRBrace(); if (state.failed) return ; } break; case 9 : - // SilkSchema.g:1:76: RBrace + // SilkSchema.g:1:77: LBracket { - mRBrace(); if (state.failed) return ; + mLBracket(); if (state.failed) return ; } break; case 10 : - // SilkSchema.g:1:83: LBracket + // SilkSchema.g:1:86: RBracket { - mLBracket(); if (state.failed) return ; + mRBracket(); if (state.failed) return ; } break; case 11 : - // SilkSchema.g:1:92: RBracket + // SilkSchema.g:1:95: Lt { - mRBracket(); if (state.failed) return ; + mLt(); if (state.failed) return ; } break; case 12 : - // SilkSchema.g:1:101: Lt + // SilkSchema.g:1:98: Dot { - mLt(); if (state.failed) return ; + mDot(); if (state.failed) return ; } break; case 13 : - // SilkSchema.g:1:104: Dot + // SilkSchema.g:1:102: Comma { - mDot(); if (state.failed) return ; + mComma(); if (state.failed) return ; } break; case 14 : - // SilkSchema.g:1:108: Comma + // SilkSchema.g:1:108: LParen { - mComma(); if (state.failed) return ; + mLParen(); if (state.failed) return ; } break; case 15 : - // SilkSchema.g:1:114: LParen + // SilkSchema.g:1:115: RParen { - mLParen(); if (state.failed) return ; + mRParen(); if (state.failed) return ; } break; case 16 : - // SilkSchema.g:1:121: RParen + // SilkSchema.g:1:122: Star { - mRParen(); if (state.failed) return ; + mStar(); if (state.failed) return ; } break; case 17 : - // SilkSchema.g:1:128: Star + // SilkSchema.g:1:127: Symbol { - mStar(); if (state.failed) return ; + mSymbol(); if (state.failed) return ; } break; case 18 : - // SilkSchema.g:1:133: Symbol + // SilkSchema.g:1:134: Class { - mSymbol(); if (state.failed) return ; + mClass(); if (state.failed) return ; } break; case 19 : - // SilkSchema.g:1:140: Class + // SilkSchema.g:1:140: Includes { - mClass(); if (state.failed) return ; + mIncludes(); if (state.failed) return ; } break; case 20 : - // SilkSchema.g:1:146: Includes + // SilkSchema.g:1:149: End { - mIncludes(); if (state.failed) return ; + mEnd(); if (state.failed) return ; } break; case 21 : - // SilkSchema.g:1:155: End + // SilkSchema.g:1:153: Relation { - mEnd(); if (state.failed) return ; + mRelation(); if (state.failed) return ; } break; case 22 : - // SilkSchema.g:1:159: Relation + // SilkSchema.g:1:162: Index { - mRelation(); if (state.failed) return ; + mIndex(); if (state.failed) return ; } break; case 23 : - // SilkSchema.g:1:168: Index + // SilkSchema.g:1:168: BelongsTo { - mIndex(); if (state.failed) return ; + mBelongsTo(); if (state.failed) return ; } break; case 24 : - // SilkSchema.g:1:174: BelongsTo + // SilkSchema.g:1:178: Default { - mBelongsTo(); if (state.failed) return ; + mDefault(); if (state.failed) return ; } break; case 25 : - // SilkSchema.g:1:184: Default + // SilkSchema.g:1:186: Projection { - mDefault(); if (state.failed) return ; + mProjection(); if (state.failed) return ; } break; case 26 : - // SilkSchema.g:1:192: Projection + // SilkSchema.g:1:197: OrderBy { - mProjection(); if (state.failed) return ; + mOrderBy(); if (state.failed) return ; } break; case 27 : - // SilkSchema.g:1:203: OrderBy + // SilkSchema.g:1:205: On { - mOrderBy(); if (state.failed) return ; + mOn(); if (state.failed) return ; } break; case 28 : - // SilkSchema.g:1:211: ModuleDef + // SilkSchema.g:1:208: ModuleDef { mModuleDef(); if (state.failed) return ; } break; case 29 : - // SilkSchema.g:1:221: QName + // SilkSchema.g:1:218: QName { mQName(); if (state.failed) return ; } break; case 30 : - // SilkSchema.g:1:227: WhiteSpaces + // SilkSchema.g:1:224: WhiteSpaces { mWhiteSpaces(); if (state.failed) return ; @@ -2109,62 +2109,63 @@ public class SilkSchemaLexer extends Lexer { protected DFA23 dfa23 = new DFA23(this); static final String DFA23_eotS = - "\1\uffff\1\34\5\uffff\2\42\13\uffff\10\34\2\uffff\1\56\1\34\2\42"+ - "\2\uffff\1\34\1\42\10\34\1\uffff\1\34\1\uffff\1\42\1\60\1\34\1\60"+ - "\3\34\1\103\12\34\1\uffff\7\34\1\60\1\125\1\34\1\127\6\34\1\uffff"+ - "\1\34\1\uffff\11\34\1\150\1\34\1\uffff\1\152\1\153\1\154\1\34\1"+ - "\uffff\1\34\3\uffff\2\34\1\161\1\162\2\uffff"; + "\6\uffff\2\40\13\uffff\11\34\2\uffff\2\40\2\uffff\1\34\1\40\10"+ + "\34\1\74\1\34\1\uffff\1\40\1\56\1\34\1\56\3\34\1\102\5\34\1\uffff"+ + "\5\34\1\uffff\7\34\1\56\1\124\1\34\1\126\6\34\1\uffff\1\34\1\uffff"+ + "\11\34\1\147\2\34\1\uffff\1\152\1\153\1\34\1\uffff\1\34\1\156\2"+ + "\uffff\2\34\1\uffff\1\161\1\162\2\uffff"; static final String DFA23_eofS = "\163\uffff"; static final String DFA23_minS = - "\1\0\1\156\4\uffff\1\60\2\0\13\uffff\1\154\2\156\3\145\1\162\1"+ - "\157\2\uffff\1\0\1\144\2\56\1\uffff\1\0\1\53\1\0\1\141\1\143\1\144"+ - "\2\154\1\146\1\157\1\144\1\uffff\1\145\1\uffff\1\56\1\0\1\60\1\0"+ - "\1\163\1\154\1\145\1\0\1\141\1\157\1\141\1\152\1\165\1\162\1\53"+ - "\1\163\1\165\1\170\1\uffff\1\164\1\156\1\165\1\145\1\154\1\137\1"+ - "\60\2\0\1\144\1\0\1\151\1\147\1\154\1\143\1\145\1\142\1\uffff\1"+ - "\145\1\uffff\1\157\1\163\2\164\1\11\1\171\1\163\1\156\1\137\1\0"+ - "\1\151\1\uffff\3\0\1\164\1\uffff\1\157\3\uffff\1\157\1\156\2\0\2"+ - "\uffff"; + "\1\0\4\uffff\1\60\2\0\13\uffff\1\154\2\156\3\145\1\162\1\156\1"+ + "\157\2\uffff\2\56\1\uffff\1\0\1\53\1\0\1\141\1\143\1\144\2\154\1"+ + "\146\1\157\1\144\1\0\1\144\1\uffff\1\56\1\0\1\60\1\0\1\163\1\154"+ + "\1\145\1\0\1\141\1\157\1\141\1\152\1\145\1\uffff\1\165\1\53\1\163"+ + "\1\165\1\170\1\uffff\1\164\1\156\1\165\1\145\1\162\1\154\1\60\2"+ + "\0\1\144\1\0\1\151\1\147\1\154\1\143\1\137\1\145\1\uffff\1\145\1"+ + "\uffff\1\157\1\163\2\164\1\142\1\11\1\163\1\156\1\137\1\0\1\151"+ + "\1\171\1\uffff\2\0\1\164\1\uffff\1\157\1\0\2\uffff\1\157\1\156\1"+ + "\uffff\2\0\2\uffff"; static final String DFA23_maxS = - "\1\uffff\1\162\4\uffff\1\71\2\uffff\13\uffff\1\154\2\156\3\145"+ - "\1\162\1\157\2\uffff\1\uffff\1\144\2\145\1\uffff\1\uffff\1\71\1"+ - "\uffff\1\141\2\144\2\154\1\146\1\157\1\144\1\uffff\1\145\1\uffff"+ - "\1\145\1\uffff\1\71\1\uffff\1\163\1\154\1\145\1\uffff\1\141\1\157"+ - "\1\141\1\152\1\165\1\162\1\71\1\163\1\165\1\170\1\uffff\1\164\1"+ - "\156\1\165\1\145\1\154\1\137\1\71\2\uffff\1\144\1\uffff\1\151\1"+ - "\147\1\154\1\143\1\145\1\142\1\uffff\1\145\1\uffff\1\157\1\163\2"+ - "\164\1\40\1\171\1\163\1\156\1\137\1\uffff\1\151\1\uffff\3\uffff"+ - "\1\164\1\uffff\1\157\3\uffff\1\157\1\156\2\uffff\2\uffff"; + "\1\uffff\4\uffff\1\71\2\uffff\13\uffff\1\154\2\156\3\145\2\162"+ + "\1\157\2\uffff\2\145\1\uffff\1\uffff\1\71\1\uffff\1\141\2\144\2"+ + "\154\1\146\1\157\1\144\1\uffff\1\144\1\uffff\1\145\1\uffff\1\71"+ + "\1\uffff\1\163\1\154\1\145\1\uffff\1\141\1\157\1\141\1\152\1\145"+ + "\1\uffff\1\165\1\71\1\163\1\165\1\170\1\uffff\1\164\1\156\1\165"+ + "\1\145\1\162\1\154\1\71\2\uffff\1\144\1\uffff\1\151\1\147\1\154"+ + "\1\143\1\137\1\145\1\uffff\1\145\1\uffff\1\157\1\163\2\164\1\142"+ + "\1\40\1\163\1\156\1\137\1\uffff\1\151\1\171\1\uffff\2\uffff\1\164"+ + "\1\uffff\1\157\1\uffff\2\uffff\1\157\1\156\1\uffff\2\uffff\2\uffff"; static final String DFA23_acceptS = - "\2\uffff\1\2\1\3\1\4\1\5\3\uffff\1\10\1\11\1\12\1\13\1\14\1\15"+ - "\1\16\1\17\1\20\1\21\1\22\10\uffff\1\35\1\36\4\uffff\1\6\13\uffff"+ - "\1\1\1\uffff\1\7\22\uffff\1\25\21\uffff\1\23\1\uffff\1\27\13\uffff"+ - "\1\34\4\uffff\1\31\1\uffff\1\33\1\24\1\26\4\uffff\1\30\1\32"; + "\1\uffff\1\1\1\2\1\3\1\4\3\uffff\1\7\1\10\1\11\1\12\1\13\1\14\1"+ + "\15\1\16\1\17\1\20\1\21\11\uffff\1\35\1\36\2\uffff\1\5\15\uffff"+ + "\1\6\15\uffff\1\33\5\uffff\1\24\21\uffff\1\22\1\uffff\1\26\14\uffff"+ + "\1\34\3\uffff\1\30\2\uffff\1\23\1\25\2\uffff\1\32\2\uffff\1\27\1"+ + "\31"; static final String DFA23_specialS = - "\1\20\6\uffff\1\12\1\2\25\uffff\1\3\4\uffff\1\13\1\uffff\1\14\14"+ - "\uffff\1\11\1\uffff\1\1\3\uffff\1\21\22\uffff\1\16\1\17\1\uffff"+ - "\1\10\22\uffff\1\6\2\uffff\1\4\1\5\1\0\10\uffff\1\7\1\15\2\uffff}>"; + "\1\10\5\uffff\1\1\1\17\31\uffff\1\20\1\uffff\1\16\10\uffff\1\11"+ + "\3\uffff\1\15\1\uffff\1\4\3\uffff\1\12\23\uffff\1\5\1\7\1\uffff"+ + "\1\13\22\uffff\1\0\3\uffff\1\3\1\2\3\uffff\1\14\5\uffff\1\6\1\21"+ + "\2\uffff}>"; static final String[] DFA23_transitionS = { - "\11\34\1\35\1\4\2\34\1\4\22\34\1\35\1\34\1\5\1\3\1\34\1\2\1"+ - "\34\1\uffff\1\20\1\21\1\22\1\34\1\17\1\6\1\16\1\34\1\7\11\10"+ - "\1\23\1\34\1\15\1\34\1\uffff\1\34\1\uffff\32\34\1\13\1\uffff"+ - "\1\14\4\34\1\30\1\24\1\31\1\26\3\34\1\25\3\34\1\33\1\34\1\1"+ - "\1\32\1\34\1\27\10\34\1\11\1\uffff\1\12\uff82\34", - "\1\36\3\uffff\1\37", + "\11\34\1\35\1\3\2\34\1\3\22\34\1\35\1\34\1\4\1\2\1\34\1\1\1"+ + "\34\1\uffff\1\17\1\20\1\21\1\34\1\16\1\5\1\15\1\34\1\6\11\7"+ + "\1\22\1\34\1\14\1\34\1\uffff\1\34\1\uffff\32\34\1\12\1\uffff"+ + "\1\13\4\34\1\27\1\23\1\30\1\25\3\34\1\24\3\34\1\33\1\34\1\32"+ + "\1\31\1\34\1\26\10\34\1\10\1\uffff\1\11\uff82\34", "", "", "", "", - "\1\40\11\41", + "\1\36\11\37", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\2\uffff\1\43\13\34\1\uffff\1\34\1"+ - "\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\44\25\34\3\uffff\7\34"+ - "\1\44\25\34\3\uffff\uff82\34", + "\1\uffff\1\34\4\uffff\1\34\2\uffff\1\41\13\34\1\uffff\1\34\1"+ + "\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\42\25\34\3\uffff\7\34"+ + "\1\42\25\34\3\uffff\uff82\34", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\2\uffff\1\43\1\34\12\45\1\uffff\1"+ - "\34\1\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\44\25\34\3\uffff"+ - "\7\34\1\44\25\34\3\uffff\uff82\34", + "\1\uffff\1\34\4\uffff\1\34\2\uffff\1\41\1\34\12\43\1\uffff\1"+ + "\34\1\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\42\25\34\3\uffff"+ + "\7\34\1\42\25\34\3\uffff\uff82\34", "", "", "", @@ -2176,101 +2177,102 @@ public class SilkSchemaLexer extends Lexer { "", "", "", + "\1\44", + "\1\45", "\1\46", "\1\47", "\1\50", "\1\51", "\1\52", - "\1\53", - "\1\54", + "\1\54\3\uffff\1\53", "\1\55", "", "", - "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ - "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ - "\34", - "\1\57", - "\1\60\26\uffff\1\60\37\uffff\1\60", - "\1\60\1\uffff\12\61\13\uffff\1\60\37\uffff\1\60", + "\1\56\26\uffff\1\56\37\uffff\1\56", + "\1\56\1\uffff\12\57\13\uffff\1\56\37\uffff\1\56", "", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\3\uffff\1\34\12\62\1\uffff\1\34\1"+ + "\1\uffff\1\34\4\uffff\1\34\3\uffff\1\34\12\60\1\uffff\1\34\1"+ "\uffff\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff"+ "\uff82\34", - "\1\63\1\uffff\1\60\2\uffff\12\64", + "\1\61\1\uffff\1\56\2\uffff\12\62", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\2\uffff\1\43\1\34\12\45\1\uffff\1"+ - "\34\1\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\44\25\34\3\uffff"+ - "\7\34\1\44\25\34\3\uffff\uff82\34", - "\1\65", - "\1\66\1\67", + "\1\uffff\1\34\4\uffff\1\34\2\uffff\1\41\1\34\12\43\1\uffff\1"+ + "\34\1\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\42\25\34\3\uffff"+ + "\7\34\1\42\25\34\3\uffff\uff82\34", + "\1\63", + "\1\64\1\65", + "\1\66", + "\1\67", "\1\70", "\1\71", "\1\72", "\1\73", - "\1\74", + "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ + "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ + "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ + "\34", "\1\75", "", - "\1\76", - "", - "\1\60\1\uffff\12\61\13\uffff\1\60\37\uffff\1\60", + "\1\56\1\uffff\12\57\13\uffff\1\56\37\uffff\1\56", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\2\uffff\2\34\12\62\1\uffff\1\34\1"+ - "\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\77\25\34\3\uffff\7\34"+ - "\1\77\25\34\3\uffff\uff82\34", - "\12\64", + "\1\uffff\1\34\4\uffff\1\34\2\uffff\2\34\12\60\1\uffff\1\34\1"+ + "\uffff\1\34\1\uffff\1\34\1\uffff\4\34\1\76\25\34\3\uffff\7\34"+ + "\1\76\25\34\3\uffff\uff82\34", + "\12\62", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\2\uffff\2\34\12\64\1\uffff\1\34\1"+ + "\1\uffff\1\34\4\uffff\1\34\2\uffff\2\34\12\62\1\uffff\1\34\1"+ "\uffff\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff"+ "\uff82\34", + "\1\77", "\1\100", "\1\101", - "\1\102", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ "\34", + "\1\103", "\1\104", "\1\105", "\1\106", "\1\107", + "", "\1\110", - "\1\111", - "\1\112\1\uffff\1\60\2\uffff\12\113", + "\1\111\1\uffff\1\56\2\uffff\12\112", + "\1\113", "\1\114", "\1\115", - "\1\116", "", + "\1\116", "\1\117", "\1\120", "\1\121", "\1\122", "\1\123", - "\1\124", - "\12\113", + "\12\112", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ - "\1\uffff\1\34\4\uffff\1\34\2\uffff\2\34\12\113\1\uffff\1\34"+ + "\1\uffff\1\34\4\uffff\1\34\2\uffff\2\34\12\112\1\uffff\1\34"+ "\1\uffff\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff"+ "\uff82\34", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ "\34", - "\1\126", + "\1\125", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ "\34", + "\1\127", "\1\130", "\1\131", "\1\132", "\1\133", "\1\134", + "", "\1\135", "", "\1\136", - "", "\1\137", "\1\140", "\1\141", @@ -2279,11 +2281,11 @@ public class SilkSchemaLexer extends Lexer { "\1\144", "\1\145", "\1\146", - "\1\147", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ "\34", + "\1\150", "\1\151", "", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ @@ -2294,18 +2296,18 @@ public class SilkSchemaLexer extends Lexer { "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ "\34", + "\1\154", + "", + "\1\155", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ "\34", - "\1\155", - "", - "\1\156", - "", "", "", "\1\157", "\1\160", + "", "\11\34\2\uffff\2\34\1\uffff\22\34\1\uffff\1\34\2\uffff\1\34"+ "\1\uffff\1\34\4\uffff\1\34\2\uffff\14\34\1\uffff\1\34\1\uffff"+ "\1\34\1\uffff\1\34\1\uffff\32\34\3\uffff\35\34\3\uffff\uff82"+ @@ -2348,272 +2350,272 @@ public class SilkSchemaLexer extends Lexer { this.transition = DFA23_transition; } public String getDescription() { - return "1:1: Tokens : ( T__65 | Preamble | LineComment | LineBreak | String | Integer | Double | LBrace | RBrace | LBracket | RBracket | Lt | Dot | Comma | LParen | RParen | Star | Symbol | Class | Includes | End | Relation | Index | BelongsTo | Default | Projection | OrderBy | ModuleDef | QName | WhiteSpaces );"; + return "1:1: Tokens : ( Preamble | LineComment | LineBreak | String | Integer | Double | LBrace | RBrace | LBracket | RBracket | Lt | Dot | Comma | LParen | RParen | Star | Symbol | Class | Includes | End | Relation | Index | BelongsTo | Default | Projection | OrderBy | On | ModuleDef | QName | WhiteSpaces );"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { IntStream input = _input; int _s = s; switch ( s ) { case 0 : - int LA23_102 = input.LA(1); + int LA23_96 = input.LA(1); s = -1; - if ( ((LA23_102>='\u0000' && LA23_102<='\b')||(LA23_102>='\u000B' && LA23_102<='\f')||(LA23_102>='\u000E' && LA23_102<='\u001F')||LA23_102=='!'||LA23_102=='$'||LA23_102=='&'||LA23_102=='+'||(LA23_102>='.' && LA23_102<='9')||LA23_102==';'||LA23_102=='='||LA23_102=='?'||(LA23_102>='A' && LA23_102<='Z')||(LA23_102>='^' && LA23_102<='z')||(LA23_102>='~' && LA23_102<='\uFFFF')) ) {s = 28;} + if ( ((LA23_96>='\u0000' && LA23_96<='\b')||(LA23_96>='\u000B' && LA23_96<='\f')||(LA23_96>='\u000E' && LA23_96<='\u001F')||LA23_96=='!'||LA23_96=='$'||LA23_96=='&'||LA23_96=='+'||(LA23_96>='.' && LA23_96<='9')||LA23_96==';'||LA23_96=='='||LA23_96=='?'||(LA23_96>='A' && LA23_96<='Z')||(LA23_96>='^' && LA23_96<='z')||(LA23_96>='~' && LA23_96<='\uFFFF')) ) {s = 28;} - else s = 108; + else s = 103; if ( s>=0 ) return s; break; case 1 : - int LA23_52 = input.LA(1); + int LA23_6 = input.LA(1); s = -1; - if ( ((LA23_52>='0' && LA23_52<='9')) ) {s = 52;} + if ( (LA23_6=='.') ) {s = 33;} + + else if ( (LA23_6=='E'||LA23_6=='e') ) {s = 34;} - else if ( ((LA23_52>='\u0000' && LA23_52<='\b')||(LA23_52>='\u000B' && LA23_52<='\f')||(LA23_52>='\u000E' && LA23_52<='\u001F')||LA23_52=='!'||LA23_52=='$'||LA23_52=='&'||LA23_52=='+'||(LA23_52>='.' && LA23_52<='/')||LA23_52==';'||LA23_52=='='||LA23_52=='?'||(LA23_52>='A' && LA23_52<='Z')||(LA23_52>='^' && LA23_52<='z')||(LA23_52>='~' && LA23_52<='\uFFFF')) ) {s = 28;} + else if ( ((LA23_6>='\u0000' && LA23_6<='\b')||(LA23_6>='\u000B' && LA23_6<='\f')||(LA23_6>='\u000E' && LA23_6<='\u001F')||LA23_6=='!'||LA23_6=='$'||LA23_6=='&'||LA23_6=='+'||(LA23_6>='/' && LA23_6<='9')||LA23_6==';'||LA23_6=='='||LA23_6=='?'||(LA23_6>='A' && LA23_6<='D')||(LA23_6>='F' && LA23_6<='Z')||(LA23_6>='^' && LA23_6<='d')||(LA23_6>='f' && LA23_6<='z')||(LA23_6>='~' && LA23_6<='\uFFFF')) ) {s = 28;} - else s = 48; + else s = 32; if ( s>=0 ) return s; break; case 2 : - int LA23_8 = input.LA(1); + int LA23_101 = input.LA(1); s = -1; - if ( ((LA23_8>='0' && LA23_8<='9')) ) {s = 37;} - - else if ( (LA23_8=='.') ) {s = 35;} - - else if ( (LA23_8=='E'||LA23_8=='e') ) {s = 36;} - - else if ( ((LA23_8>='\u0000' && LA23_8<='\b')||(LA23_8>='\u000B' && LA23_8<='\f')||(LA23_8>='\u000E' && LA23_8<='\u001F')||LA23_8=='!'||LA23_8=='$'||LA23_8=='&'||LA23_8=='+'||LA23_8=='/'||LA23_8==';'||LA23_8=='='||LA23_8=='?'||(LA23_8>='A' && LA23_8<='D')||(LA23_8>='F' && LA23_8<='Z')||(LA23_8>='^' && LA23_8<='d')||(LA23_8>='f' && LA23_8<='z')||(LA23_8>='~' && LA23_8<='\uFFFF')) ) {s = 28;} + if ( ((LA23_101>='\u0000' && LA23_101<='\b')||(LA23_101>='\u000B' && LA23_101<='\f')||(LA23_101>='\u000E' && LA23_101<='\u001F')||LA23_101=='!'||LA23_101=='$'||LA23_101=='&'||LA23_101=='+'||(LA23_101>='.' && LA23_101<='9')||LA23_101==';'||LA23_101=='='||LA23_101=='?'||(LA23_101>='A' && LA23_101<='Z')||(LA23_101>='^' && LA23_101<='z')||(LA23_101>='~' && LA23_101<='\uFFFF')) ) {s = 28;} - else s = 34; + else s = 107; if ( s>=0 ) return s; break; case 3 : - int LA23_30 = input.LA(1); + int LA23_100 = input.LA(1); s = -1; - if ( ((LA23_30>='\u0000' && LA23_30<='\b')||(LA23_30>='\u000B' && LA23_30<='\f')||(LA23_30>='\u000E' && LA23_30<='\u001F')||LA23_30=='!'||LA23_30=='$'||LA23_30=='&'||LA23_30=='+'||(LA23_30>='.' && LA23_30<='9')||LA23_30==';'||LA23_30=='='||LA23_30=='?'||(LA23_30>='A' && LA23_30<='Z')||(LA23_30>='^' && LA23_30<='z')||(LA23_30>='~' && LA23_30<='\uFFFF')) ) {s = 28;} + if ( ((LA23_100>='\u0000' && LA23_100<='\b')||(LA23_100>='\u000B' && LA23_100<='\f')||(LA23_100>='\u000E' && LA23_100<='\u001F')||LA23_100=='!'||LA23_100=='$'||LA23_100=='&'||LA23_100=='+'||(LA23_100>='.' && LA23_100<='9')||LA23_100==';'||LA23_100=='='||LA23_100=='?'||(LA23_100>='A' && LA23_100<='Z')||(LA23_100>='^' && LA23_100<='z')||(LA23_100>='~' && LA23_100<='\uFFFF')) ) {s = 28;} - else s = 46; + else s = 106; if ( s>=0 ) return s; break; case 4 : - int LA23_100 = input.LA(1); + int LA23_50 = input.LA(1); s = -1; - if ( ((LA23_100>='\u0000' && LA23_100<='\b')||(LA23_100>='\u000B' && LA23_100<='\f')||(LA23_100>='\u000E' && LA23_100<='\u001F')||LA23_100=='!'||LA23_100=='$'||LA23_100=='&'||LA23_100=='+'||(LA23_100>='.' && LA23_100<='9')||LA23_100==';'||LA23_100=='='||LA23_100=='?'||(LA23_100>='A' && LA23_100<='Z')||(LA23_100>='^' && LA23_100<='z')||(LA23_100>='~' && LA23_100<='\uFFFF')) ) {s = 28;} + if ( ((LA23_50>='0' && LA23_50<='9')) ) {s = 50;} - else s = 106; + else if ( ((LA23_50>='\u0000' && LA23_50<='\b')||(LA23_50>='\u000B' && LA23_50<='\f')||(LA23_50>='\u000E' && LA23_50<='\u001F')||LA23_50=='!'||LA23_50=='$'||LA23_50=='&'||LA23_50=='+'||(LA23_50>='.' && LA23_50<='/')||LA23_50==';'||LA23_50=='='||LA23_50=='?'||(LA23_50>='A' && LA23_50<='Z')||(LA23_50>='^' && LA23_50<='z')||(LA23_50>='~' && LA23_50<='\uFFFF')) ) {s = 28;} + + else s = 46; if ( s>=0 ) return s; break; case 5 : - int LA23_101 = input.LA(1); + int LA23_74 = input.LA(1); s = -1; - if ( ((LA23_101>='\u0000' && LA23_101<='\b')||(LA23_101>='\u000B' && LA23_101<='\f')||(LA23_101>='\u000E' && LA23_101<='\u001F')||LA23_101=='!'||LA23_101=='$'||LA23_101=='&'||LA23_101=='+'||(LA23_101>='.' && LA23_101<='9')||LA23_101==';'||LA23_101=='='||LA23_101=='?'||(LA23_101>='A' && LA23_101<='Z')||(LA23_101>='^' && LA23_101<='z')||(LA23_101>='~' && LA23_101<='\uFFFF')) ) {s = 28;} + if ( ((LA23_74>='\u0000' && LA23_74<='\b')||(LA23_74>='\u000B' && LA23_74<='\f')||(LA23_74>='\u000E' && LA23_74<='\u001F')||LA23_74=='!'||LA23_74=='$'||LA23_74=='&'||LA23_74=='+'||(LA23_74>='.' && LA23_74<='/')||LA23_74==';'||LA23_74=='='||LA23_74=='?'||(LA23_74>='A' && LA23_74<='Z')||(LA23_74>='^' && LA23_74<='z')||(LA23_74>='~' && LA23_74<='\uFFFF')) ) {s = 28;} - else s = 107; + else if ( ((LA23_74>='0' && LA23_74<='9')) ) {s = 74;} + + else s = 46; if ( s>=0 ) return s; break; case 6 : - int LA23_97 = input.LA(1); + int LA23_111 = input.LA(1); s = -1; - if ( ((LA23_97>='\u0000' && LA23_97<='\b')||(LA23_97>='\u000B' && LA23_97<='\f')||(LA23_97>='\u000E' && LA23_97<='\u001F')||LA23_97=='!'||LA23_97=='$'||LA23_97=='&'||LA23_97=='+'||(LA23_97>='.' && LA23_97<='9')||LA23_97==';'||LA23_97=='='||LA23_97=='?'||(LA23_97>='A' && LA23_97<='Z')||(LA23_97>='^' && LA23_97<='z')||(LA23_97>='~' && LA23_97<='\uFFFF')) ) {s = 28;} + if ( ((LA23_111>='\u0000' && LA23_111<='\b')||(LA23_111>='\u000B' && LA23_111<='\f')||(LA23_111>='\u000E' && LA23_111<='\u001F')||LA23_111=='!'||LA23_111=='$'||LA23_111=='&'||LA23_111=='+'||(LA23_111>='.' && LA23_111<='9')||LA23_111==';'||LA23_111=='='||LA23_111=='?'||(LA23_111>='A' && LA23_111<='Z')||(LA23_111>='^' && LA23_111<='z')||(LA23_111>='~' && LA23_111<='\uFFFF')) ) {s = 28;} - else s = 104; + else s = 113; if ( s>=0 ) return s; break; case 7 : - int LA23_111 = input.LA(1); + int LA23_75 = input.LA(1); s = -1; - if ( ((LA23_111>='\u0000' && LA23_111<='\b')||(LA23_111>='\u000B' && LA23_111<='\f')||(LA23_111>='\u000E' && LA23_111<='\u001F')||LA23_111=='!'||LA23_111=='$'||LA23_111=='&'||LA23_111=='+'||(LA23_111>='.' && LA23_111<='9')||LA23_111==';'||LA23_111=='='||LA23_111=='?'||(LA23_111>='A' && LA23_111<='Z')||(LA23_111>='^' && LA23_111<='z')||(LA23_111>='~' && LA23_111<='\uFFFF')) ) {s = 28;} + if ( ((LA23_75>='\u0000' && LA23_75<='\b')||(LA23_75>='\u000B' && LA23_75<='\f')||(LA23_75>='\u000E' && LA23_75<='\u001F')||LA23_75=='!'||LA23_75=='$'||LA23_75=='&'||LA23_75=='+'||(LA23_75>='.' && LA23_75<='9')||LA23_75==';'||LA23_75=='='||LA23_75=='?'||(LA23_75>='A' && LA23_75<='Z')||(LA23_75>='^' && LA23_75<='z')||(LA23_75>='~' && LA23_75<='\uFFFF')) ) {s = 28;} - else s = 113; + else s = 84; if ( s>=0 ) return s; break; case 8 : - int LA23_78 = input.LA(1); + int LA23_0 = input.LA(1); + + int index23_0 = input.index(); + input.rewind(); s = -1; - if ( ((LA23_78>='\u0000' && LA23_78<='\b')||(LA23_78>='\u000B' && LA23_78<='\f')||(LA23_78>='\u000E' && LA23_78<='\u001F')||LA23_78=='!'||LA23_78=='$'||LA23_78=='&'||LA23_78=='+'||(LA23_78>='.' && LA23_78<='9')||LA23_78==';'||LA23_78=='='||LA23_78=='?'||(LA23_78>='A' && LA23_78<='Z')||(LA23_78>='^' && LA23_78<='z')||(LA23_78>='~' && LA23_78<='\uFFFF')) ) {s = 28;} + if ( (LA23_0=='%') && (( getCharPositionInLine() == 0 ))) {s = 1;} - else s = 87; + else if ( (LA23_0=='#') ) {s = 2;} - if ( s>=0 ) return s; - break; - case 9 : - int LA23_50 = input.LA(1); + else if ( (LA23_0=='\n'||LA23_0=='\r') ) {s = 3;} - s = -1; - if ( ((LA23_50>='\u0000' && LA23_50<='\b')||(LA23_50>='\u000B' && LA23_50<='\f')||(LA23_50>='\u000E' && LA23_50<='\u001F')||LA23_50=='!'||LA23_50=='$'||LA23_50=='&'||LA23_50=='+'||(LA23_50>='.' && LA23_50<='/')||LA23_50==';'||LA23_50=='='||LA23_50=='?'||(LA23_50>='A' && LA23_50<='D')||(LA23_50>='F' && LA23_50<='Z')||(LA23_50>='^' && LA23_50<='d')||(LA23_50>='f' && LA23_50<='z')||(LA23_50>='~' && LA23_50<='\uFFFF')) ) {s = 28;} + else if ( (LA23_0=='\"') ) {s = 4;} - else if ( (LA23_50=='E'||LA23_50=='e') ) {s = 63;} + else if ( (LA23_0=='-') ) {s = 5;} - else if ( ((LA23_50>='0' && LA23_50<='9')) ) {s = 50;} + else if ( (LA23_0=='0') ) {s = 6;} - else s = 48; + else if ( ((LA23_0>='1' && LA23_0<='9')) ) {s = 7;} - if ( s>=0 ) return s; - break; - case 10 : - int LA23_7 = input.LA(1); + else if ( (LA23_0=='{') ) {s = 8;} - s = -1; - if ( (LA23_7=='.') ) {s = 35;} + else if ( (LA23_0=='}') ) {s = 9;} - else if ( (LA23_7=='E'||LA23_7=='e') ) {s = 36;} + else if ( (LA23_0=='[') ) {s = 10;} - else if ( ((LA23_7>='\u0000' && LA23_7<='\b')||(LA23_7>='\u000B' && LA23_7<='\f')||(LA23_7>='\u000E' && LA23_7<='\u001F')||LA23_7=='!'||LA23_7=='$'||LA23_7=='&'||LA23_7=='+'||(LA23_7>='/' && LA23_7<='9')||LA23_7==';'||LA23_7=='='||LA23_7=='?'||(LA23_7>='A' && LA23_7<='D')||(LA23_7>='F' && LA23_7<='Z')||(LA23_7>='^' && LA23_7<='d')||(LA23_7>='f' && LA23_7<='z')||(LA23_7>='~' && LA23_7<='\uFFFF')) ) {s = 28;} + else if ( (LA23_0==']') ) {s = 11;} - else s = 34; + else if ( (LA23_0=='<') ) {s = 12;} - if ( s>=0 ) return s; - break; - case 11 : - int LA23_35 = input.LA(1); + else if ( (LA23_0=='.') ) {s = 13;} - s = -1; - if ( ((LA23_35>='0' && LA23_35<='9')) ) {s = 50;} + else if ( (LA23_0==',') ) {s = 14;} - else if ( ((LA23_35>='\u0000' && LA23_35<='\b')||(LA23_35>='\u000B' && LA23_35<='\f')||(LA23_35>='\u000E' && LA23_35<='\u001F')||LA23_35=='!'||LA23_35=='$'||LA23_35=='&'||LA23_35=='+'||LA23_35=='/'||LA23_35==';'||LA23_35=='='||LA23_35=='?'||(LA23_35>='A' && LA23_35<='Z')||(LA23_35>='^' && LA23_35<='z')||(LA23_35>='~' && LA23_35<='\uFFFF')) ) {s = 28;} + else if ( (LA23_0=='(') ) {s = 15;} - if ( s>=0 ) return s; - break; - case 12 : - int LA23_37 = input.LA(1); + else if ( (LA23_0==')') ) {s = 16;} - s = -1; - if ( (LA23_37=='.') ) {s = 35;} + else if ( (LA23_0=='*') ) {s = 17;} - else if ( (LA23_37=='E'||LA23_37=='e') ) {s = 36;} + else if ( (LA23_0==':') ) {s = 18;} - else if ( ((LA23_37>='0' && LA23_37<='9')) ) {s = 37;} + else if ( (LA23_0=='c') ) {s = 19;} - else if ( ((LA23_37>='\u0000' && LA23_37<='\b')||(LA23_37>='\u000B' && LA23_37<='\f')||(LA23_37>='\u000E' && LA23_37<='\u001F')||LA23_37=='!'||LA23_37=='$'||LA23_37=='&'||LA23_37=='+'||LA23_37=='/'||LA23_37==';'||LA23_37=='='||LA23_37=='?'||(LA23_37>='A' && LA23_37<='D')||(LA23_37>='F' && LA23_37<='Z')||(LA23_37>='^' && LA23_37<='d')||(LA23_37>='f' && LA23_37<='z')||(LA23_37>='~' && LA23_37<='\uFFFF')) ) {s = 28;} + else if ( (LA23_0=='i') ) {s = 20;} - else s = 34; + else if ( (LA23_0=='e') ) {s = 21;} - if ( s>=0 ) return s; - break; - case 13 : - int LA23_112 = input.LA(1); + else if ( (LA23_0=='r') ) {s = 22;} - s = -1; - if ( ((LA23_112>='\u0000' && LA23_112<='\b')||(LA23_112>='\u000B' && LA23_112<='\f')||(LA23_112>='\u000E' && LA23_112<='\u001F')||LA23_112=='!'||LA23_112=='$'||LA23_112=='&'||LA23_112=='+'||(LA23_112>='.' && LA23_112<='9')||LA23_112==';'||LA23_112=='='||LA23_112=='?'||(LA23_112>='A' && LA23_112<='Z')||(LA23_112>='^' && LA23_112<='z')||(LA23_112>='~' && LA23_112<='\uFFFF')) ) {s = 28;} + else if ( (LA23_0=='b') ) {s = 23;} - else s = 114; + else if ( (LA23_0=='d') ) {s = 24;} - if ( s>=0 ) return s; - break; - case 14 : - int LA23_75 = input.LA(1); + else if ( (LA23_0=='p') ) {s = 25;} - s = -1; - if ( ((LA23_75>='\u0000' && LA23_75<='\b')||(LA23_75>='\u000B' && LA23_75<='\f')||(LA23_75>='\u000E' && LA23_75<='\u001F')||LA23_75=='!'||LA23_75=='$'||LA23_75=='&'||LA23_75=='+'||(LA23_75>='.' && LA23_75<='/')||LA23_75==';'||LA23_75=='='||LA23_75=='?'||(LA23_75>='A' && LA23_75<='Z')||(LA23_75>='^' && LA23_75<='z')||(LA23_75>='~' && LA23_75<='\uFFFF')) ) {s = 28;} + else if ( (LA23_0=='o') ) {s = 26;} - else if ( ((LA23_75>='0' && LA23_75<='9')) ) {s = 75;} + else if ( (LA23_0=='m') ) {s = 27;} + + else if ( ((LA23_0>='\u0000' && LA23_0<='\b')||(LA23_0>='\u000B' && LA23_0<='\f')||(LA23_0>='\u000E' && LA23_0<='\u001F')||LA23_0=='!'||LA23_0=='$'||LA23_0=='&'||LA23_0=='+'||LA23_0=='/'||LA23_0==';'||LA23_0=='='||LA23_0=='?'||(LA23_0>='A' && LA23_0<='Z')||(LA23_0>='^' && LA23_0<='a')||(LA23_0>='f' && LA23_0<='h')||(LA23_0>='j' && LA23_0<='l')||LA23_0=='n'||LA23_0=='q'||(LA23_0>='s' && LA23_0<='z')||(LA23_0>='~' && LA23_0<='\uFFFF')) ) {s = 28;} - else s = 48; + else if ( (LA23_0=='\t'||LA23_0==' ') ) {s = 29;} + + input.seek(index23_0); if ( s>=0 ) return s; break; - case 15 : - int LA23_76 = input.LA(1); + case 9 : + int LA23_44 = input.LA(1); s = -1; - if ( ((LA23_76>='\u0000' && LA23_76<='\b')||(LA23_76>='\u000B' && LA23_76<='\f')||(LA23_76>='\u000E' && LA23_76<='\u001F')||LA23_76=='!'||LA23_76=='$'||LA23_76=='&'||LA23_76=='+'||(LA23_76>='.' && LA23_76<='9')||LA23_76==';'||LA23_76=='='||LA23_76=='?'||(LA23_76>='A' && LA23_76<='Z')||(LA23_76>='^' && LA23_76<='z')||(LA23_76>='~' && LA23_76<='\uFFFF')) ) {s = 28;} + if ( ((LA23_44>='\u0000' && LA23_44<='\b')||(LA23_44>='\u000B' && LA23_44<='\f')||(LA23_44>='\u000E' && LA23_44<='\u001F')||LA23_44=='!'||LA23_44=='$'||LA23_44=='&'||LA23_44=='+'||(LA23_44>='.' && LA23_44<='9')||LA23_44==';'||LA23_44=='='||LA23_44=='?'||(LA23_44>='A' && LA23_44<='Z')||(LA23_44>='^' && LA23_44<='z')||(LA23_44>='~' && LA23_44<='\uFFFF')) ) {s = 28;} - else s = 85; + else s = 60; if ( s>=0 ) return s; break; - case 16 : - int LA23_0 = input.LA(1); + case 10 : + int LA23_54 = input.LA(1); - - int index23_0 = input.index(); - input.rewind(); s = -1; - if ( (LA23_0=='o') ) {s = 1;} + if ( ((LA23_54>='\u0000' && LA23_54<='\b')||(LA23_54>='\u000B' && LA23_54<='\f')||(LA23_54>='\u000E' && LA23_54<='\u001F')||LA23_54=='!'||LA23_54=='$'||LA23_54=='&'||LA23_54=='+'||(LA23_54>='.' && LA23_54<='9')||LA23_54==';'||LA23_54=='='||LA23_54=='?'||(LA23_54>='A' && LA23_54<='Z')||(LA23_54>='^' && LA23_54<='z')||(LA23_54>='~' && LA23_54<='\uFFFF')) ) {s = 28;} - else if ( (LA23_0=='%') && (( getCharPositionInLine() == 0 ))) {s = 2;} + else s = 66; - else if ( (LA23_0=='#') ) {s = 3;} - - else if ( (LA23_0=='\n'||LA23_0=='\r') ) {s = 4;} + if ( s>=0 ) return s; + break; + case 11 : + int LA23_77 = input.LA(1); - else if ( (LA23_0=='\"') ) {s = 5;} + s = -1; + if ( ((LA23_77>='\u0000' && LA23_77<='\b')||(LA23_77>='\u000B' && LA23_77<='\f')||(LA23_77>='\u000E' && LA23_77<='\u001F')||LA23_77=='!'||LA23_77=='$'||LA23_77=='&'||LA23_77=='+'||(LA23_77>='.' && LA23_77<='9')||LA23_77==';'||LA23_77=='='||LA23_77=='?'||(LA23_77>='A' && LA23_77<='Z')||(LA23_77>='^' && LA23_77<='z')||(LA23_77>='~' && LA23_77<='\uFFFF')) ) {s = 28;} - else if ( (LA23_0=='-') ) {s = 6;} + else s = 86; - else if ( (LA23_0=='0') ) {s = 7;} + if ( s>=0 ) return s; + break; + case 12 : + int LA23_105 = input.LA(1); - else if ( ((LA23_0>='1' && LA23_0<='9')) ) {s = 8;} + s = -1; + if ( ((LA23_105>='\u0000' && LA23_105<='\b')||(LA23_105>='\u000B' && LA23_105<='\f')||(LA23_105>='\u000E' && LA23_105<='\u001F')||LA23_105=='!'||LA23_105=='$'||LA23_105=='&'||LA23_105=='+'||(LA23_105>='.' && LA23_105<='9')||LA23_105==';'||LA23_105=='='||LA23_105=='?'||(LA23_105>='A' && LA23_105<='Z')||(LA23_105>='^' && LA23_105<='z')||(LA23_105>='~' && LA23_105<='\uFFFF')) ) {s = 28;} - else if ( (LA23_0=='{') ) {s = 9;} + else s = 110; - else if ( (LA23_0=='}') ) {s = 10;} + if ( s>=0 ) return s; + break; + case 13 : + int LA23_48 = input.LA(1); - else if ( (LA23_0=='[') ) {s = 11;} + s = -1; + if ( ((LA23_48>='\u0000' && LA23_48<='\b')||(LA23_48>='\u000B' && LA23_48<='\f')||(LA23_48>='\u000E' && LA23_48<='\u001F')||LA23_48=='!'||LA23_48=='$'||LA23_48=='&'||LA23_48=='+'||(LA23_48>='.' && LA23_48<='/')||LA23_48==';'||LA23_48=='='||LA23_48=='?'||(LA23_48>='A' && LA23_48<='D')||(LA23_48>='F' && LA23_48<='Z')||(LA23_48>='^' && LA23_48<='d')||(LA23_48>='f' && LA23_48<='z')||(LA23_48>='~' && LA23_48<='\uFFFF')) ) {s = 28;} - else if ( (LA23_0==']') ) {s = 12;} + else if ( (LA23_48=='E'||LA23_48=='e') ) {s = 62;} - else if ( (LA23_0=='<') ) {s = 13;} + else if ( ((LA23_48>='0' && LA23_48<='9')) ) {s = 48;} - else if ( (LA23_0=='.') ) {s = 14;} + else s = 46; - else if ( (LA23_0==',') ) {s = 15;} + if ( s>=0 ) return s; + break; + case 14 : + int LA23_35 = input.LA(1); - else if ( (LA23_0=='(') ) {s = 16;} + s = -1; + if ( ((LA23_35>='0' && LA23_35<='9')) ) {s = 35;} - else if ( (LA23_0==')') ) {s = 17;} + else if ( (LA23_35=='.') ) {s = 33;} - else if ( (LA23_0=='*') ) {s = 18;} + else if ( (LA23_35=='E'||LA23_35=='e') ) {s = 34;} - else if ( (LA23_0==':') ) {s = 19;} + else if ( ((LA23_35>='\u0000' && LA23_35<='\b')||(LA23_35>='\u000B' && LA23_35<='\f')||(LA23_35>='\u000E' && LA23_35<='\u001F')||LA23_35=='!'||LA23_35=='$'||LA23_35=='&'||LA23_35=='+'||LA23_35=='/'||LA23_35==';'||LA23_35=='='||LA23_35=='?'||(LA23_35>='A' && LA23_35<='D')||(LA23_35>='F' && LA23_35<='Z')||(LA23_35>='^' && LA23_35<='d')||(LA23_35>='f' && LA23_35<='z')||(LA23_35>='~' && LA23_35<='\uFFFF')) ) {s = 28;} - else if ( (LA23_0=='c') ) {s = 20;} + else s = 32; - else if ( (LA23_0=='i') ) {s = 21;} + if ( s>=0 ) return s; + break; + case 15 : + int LA23_7 = input.LA(1); - else if ( (LA23_0=='e') ) {s = 22;} + s = -1; + if ( ((LA23_7>='0' && LA23_7<='9')) ) {s = 35;} - else if ( (LA23_0=='r') ) {s = 23;} + else if ( (LA23_7=='.') ) {s = 33;} - else if ( (LA23_0=='b') ) {s = 24;} + else if ( (LA23_7=='E'||LA23_7=='e') ) {s = 34;} - else if ( (LA23_0=='d') ) {s = 25;} + else if ( ((LA23_7>='\u0000' && LA23_7<='\b')||(LA23_7>='\u000B' && LA23_7<='\f')||(LA23_7>='\u000E' && LA23_7<='\u001F')||LA23_7=='!'||LA23_7=='$'||LA23_7=='&'||LA23_7=='+'||LA23_7=='/'||LA23_7==';'||LA23_7=='='||LA23_7=='?'||(LA23_7>='A' && LA23_7<='D')||(LA23_7>='F' && LA23_7<='Z')||(LA23_7>='^' && LA23_7<='d')||(LA23_7>='f' && LA23_7<='z')||(LA23_7>='~' && LA23_7<='\uFFFF')) ) {s = 28;} - else if ( (LA23_0=='p') ) {s = 26;} + else s = 32; - else if ( (LA23_0=='m') ) {s = 27;} + if ( s>=0 ) return s; + break; + case 16 : + int LA23_33 = input.LA(1); - else if ( ((LA23_0>='\u0000' && LA23_0<='\b')||(LA23_0>='\u000B' && LA23_0<='\f')||(LA23_0>='\u000E' && LA23_0<='\u001F')||LA23_0=='!'||LA23_0=='$'||LA23_0=='&'||LA23_0=='+'||LA23_0=='/'||LA23_0==';'||LA23_0=='='||LA23_0=='?'||(LA23_0>='A' && LA23_0<='Z')||(LA23_0>='^' && LA23_0<='a')||(LA23_0>='f' && LA23_0<='h')||(LA23_0>='j' && LA23_0<='l')||LA23_0=='n'||LA23_0=='q'||(LA23_0>='s' && LA23_0<='z')||(LA23_0>='~' && LA23_0<='\uFFFF')) ) {s = 28;} + s = -1; + if ( ((LA23_33>='0' && LA23_33<='9')) ) {s = 48;} - else if ( (LA23_0=='\t'||LA23_0==' ') ) {s = 29;} + else if ( ((LA23_33>='\u0000' && LA23_33<='\b')||(LA23_33>='\u000B' && LA23_33<='\f')||(LA23_33>='\u000E' && LA23_33<='\u001F')||LA23_33=='!'||LA23_33=='$'||LA23_33=='&'||LA23_33=='+'||LA23_33=='/'||LA23_33==';'||LA23_33=='='||LA23_33=='?'||(LA23_33>='A' && LA23_33<='Z')||(LA23_33>='^' && LA23_33<='z')||(LA23_33>='~' && LA23_33<='\uFFFF')) ) {s = 28;} - - input.seek(index23_0); if ( s>=0 ) return s; break; case 17 : - int LA23_56 = input.LA(1); + int LA23_112 = input.LA(1); s = -1; - if ( ((LA23_56>='\u0000' && LA23_56<='\b')||(LA23_56>='\u000B' && LA23_56<='\f')||(LA23_56>='\u000E' && LA23_56<='\u001F')||LA23_56=='!'||LA23_56=='$'||LA23_56=='&'||LA23_56=='+'||(LA23_56>='.' && LA23_56<='9')||LA23_56==';'||LA23_56=='='||LA23_56=='?'||(LA23_56>='A' && LA23_56<='Z')||(LA23_56>='^' && LA23_56<='z')||(LA23_56>='~' && LA23_56<='\uFFFF')) ) {s = 28;} + if ( ((LA23_112>='\u0000' && LA23_112<='\b')||(LA23_112>='\u000B' && LA23_112<='\f')||(LA23_112>='\u000E' && LA23_112<='\u001F')||LA23_112=='!'||LA23_112=='$'||LA23_112=='&'||LA23_112=='+'||(LA23_112>='.' && LA23_112<='9')||LA23_112==';'||LA23_112=='='||LA23_112=='?'||(LA23_112>='A' && LA23_112<='Z')||(LA23_112>='^' && LA23_112<='z')||(LA23_112>='~' && LA23_112<='\uFFFF')) ) {s = 28;} - else s = 67; + else s = 114; if ( s>=0 ) return s; break; diff --git a/src/main/java/org/xerial/silk/schema/impl/SilkSchemaParser.java b/src/main/java/org/xerial/silk/schema/impl/SilkSchemaParser.java index 63a2193..91b0bf0 100644 --- a/src/main/java/org/xerial/silk/schema/impl/SilkSchemaParser.java +++ b/src/main/java/org/xerial/silk/schema/impl/SilkSchemaParser.java @@ -1,4 +1,4 @@ -// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 SilkSchema.g 2009-07-08 15:38:41 +// $ANTLR 3.1.3 Mar 17, 2009 19:23:44 SilkSchema.g 2009-07-08 19:54:25 /*-------------------------------------------------------------------------- * Copyright 2009 Taro L. Saito @@ -35,7 +35,7 @@ import org.antlr.runtime.tree.*; public class SilkSchemaParser extends Parser { public static final String[] tokenNames = new String[] { - "", "", "", "", "Schema", "Module", "ClassDef", "Name", "Parent", "Mixin", "Attribute", "IsArray", "TypeName", "DefaultValue", "AllIncluded", "TargetClass", "Function", "Argument", "LineBreakChar", "Preamble", "LineComment", "LineBreak", "Digit", "Letter", "HexDigit", "UnicodeChar", "EscapeSequence", "StringChar", "StringChar_s", "String", "Integer", "Frac", "Exp", "Double", "LBrace", "RBrace", "LBracket", "RBracket", "Lt", "Dot", "Comma", "LParen", "RParen", "Star", "UnsafeUnicodeChar", "NonWhiteSpaceChar", "SymbolChars", "Symbol", "Class", "Includes", "End", "Relation", "Index", "BelongsTo", "Default", "Projection", "OrderBy", "SafeFirstLetter", "SafeLetter", "ModuleName", "WhiteSpaces", "ModuleDef", "WhiteSpace", "QNameChar", "QName", "'on'" + "", "", "", "", "Schema", "Module", "ClassDef", "Name", "Parent", "Mixin", "Attribute", "IsArray", "TypeName", "DefaultValue", "AllIncluded", "TargetClass", "Function", "Argument", "LineBreakChar", "Preamble", "LineComment", "LineBreak", "Digit", "Letter", "HexDigit", "UnicodeChar", "EscapeSequence", "StringChar", "StringChar_s", "String", "Integer", "Frac", "Exp", "Double", "LBrace", "RBrace", "LBracket", "RBracket", "Lt", "Dot", "Comma", "LParen", "RParen", "Star", "UnsafeUnicodeChar", "NonWhiteSpaceChar", "SymbolChars", "Symbol", "Class", "Includes", "End", "Relation", "Index", "BelongsTo", "Default", "Projection", "OrderBy", "On", "SafeFirstLetter", "SafeLetter", "ModuleName", "WhiteSpaces", "ModuleDef", "WhiteSpace", "QNameChar", "QName" }; public static final int TargetClass=15; public static final int Includes=49; @@ -50,9 +50,9 @@ public class SilkSchemaParser extends Parser { public static final int HexDigit=24; public static final int Symbol=47; public static final int OrderBy=56; - public static final int T__65=65; public static final int Default=54; public static final int Argument=17; + public static final int On=57; public static final int Index=52; public static final int Module=5; public static final int Letter=23; @@ -66,30 +66,30 @@ public class SilkSchemaParser extends Parser { public static final int Integer=30; public static final int Relation=51; public static final int Mixin=9; - public static final int WhiteSpace=62; + public static final int WhiteSpace=63; public static final int ClassDef=6; public static final int LineComment=20; - public static final int ModuleName=59; + public static final int ModuleName=60; public static final int Projection=55; public static final int BelongsTo=53; - public static final int SafeFirstLetter=57; + public static final int SafeFirstLetter=58; public static final int Star=43; public static final int Preamble=19; public static final int Exp=32; - public static final int QNameChar=63; + public static final int QNameChar=64; public static final int RParen=42; public static final int UnicodeChar=25; public static final int StringChar=27; public static final int LineBreak=21; public static final int Function=16; public static final int Name=7; - public static final int ModuleDef=61; + public static final int ModuleDef=62; public static final int LParen=41; public static final int String=29; - public static final int SafeLetter=58; + public static final int SafeLetter=59; public static final int LineBreakChar=18; public static final int IsArray=11; - public static final int QName=64; + public static final int QName=65; public static final int EOF=-1; public static final int StringChar_s=28; public static final int UnsafeUnicodeChar=44; @@ -99,7 +99,7 @@ public class SilkSchemaParser extends Parser { public static final int Lt=38; public static final int Parent=8; public static final int TypeName=12; - public static final int WhiteSpaces=60; + public static final int WhiteSpaces=61; // delegates // delegators @@ -132,7 +132,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "schema" - // SilkSchema.g:192:1: schema : ( Preamble )? ( schemaElement )* -> ^( Schema ( Preamble )? ( schemaElement )* ) ; + // SilkSchema.g:193:1: schema : ( Preamble )? ( schemaElement )* -> ^( Schema ( Preamble )? ( schemaElement )* ) ; public final SilkSchemaParser.schema_return schema() throws RecognitionException { SilkSchemaParser.schema_return retval = new SilkSchemaParser.schema_return(); retval.start = input.LT(1); @@ -147,10 +147,10 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_Preamble=new RewriteRuleTokenStream(adaptor,"token Preamble"); RewriteRuleSubtreeStream stream_schemaElement=new RewriteRuleSubtreeStream(adaptor,"rule schemaElement"); try { - // SilkSchema.g:192:7: ( ( Preamble )? ( schemaElement )* -> ^( Schema ( Preamble )? ( schemaElement )* ) ) - // SilkSchema.g:192:10: ( Preamble )? ( schemaElement )* + // SilkSchema.g:193:7: ( ( Preamble )? ( schemaElement )* -> ^( Schema ( Preamble )? ( schemaElement )* ) ) + // SilkSchema.g:193:10: ( Preamble )? ( schemaElement )* { - // SilkSchema.g:192:10: ( Preamble )? + // SilkSchema.g:193:10: ( Preamble )? int alt1=2; int LA1_0 = input.LA(1); @@ -159,9 +159,9 @@ public class SilkSchemaParser extends Parser { } switch (alt1) { case 1 : - // SilkSchema.g:192:10: Preamble + // SilkSchema.g:193:10: Preamble { - Preamble1=(Token)match(input,Preamble,FOLLOW_Preamble_in_schema873); + Preamble1=(Token)match(input,Preamble,FOLLOW_Preamble_in_schema879); stream_Preamble.add(Preamble1); @@ -170,7 +170,7 @@ public class SilkSchemaParser extends Parser { } - // SilkSchema.g:192:20: ( schemaElement )* + // SilkSchema.g:193:20: ( schemaElement )* loop2: do { int alt2=2; @@ -183,9 +183,9 @@ public class SilkSchemaParser extends Parser { switch (alt2) { case 1 : - // SilkSchema.g:192:20: schemaElement + // SilkSchema.g:193:20: schemaElement { - pushFollow(FOLLOW_schemaElement_in_schema876); + pushFollow(FOLLOW_schemaElement_in_schema882); schemaElement2=schemaElement(); state._fsp--; @@ -203,7 +203,7 @@ public class SilkSchemaParser extends Parser { // AST REWRITE - // elements: Preamble, schemaElement + // elements: schemaElement, Preamble // token labels: // rule labels: retval // token list labels: @@ -213,20 +213,20 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 192:36: -> ^( Schema ( Preamble )? ( schemaElement )* ) + // 193:36: -> ^( Schema ( Preamble )? ( schemaElement )* ) { - // SilkSchema.g:192:39: ^( Schema ( Preamble )? ( schemaElement )* ) + // SilkSchema.g:193:39: ^( Schema ( Preamble )? ( schemaElement )* ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(Schema, "Schema"), root_1); - // SilkSchema.g:192:48: ( Preamble )? + // SilkSchema.g:193:48: ( Preamble )? if ( stream_Preamble.hasNext() ) { adaptor.addChild(root_1, stream_Preamble.nextNode()); } stream_Preamble.reset(); - // SilkSchema.g:192:58: ( schemaElement )* + // SilkSchema.g:193:58: ( schemaElement )* while ( stream_schemaElement.hasNext() ) { adaptor.addChild(root_1, stream_schemaElement.nextTree()); @@ -265,7 +265,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "schemaElement" - // SilkSchema.g:195:1: schemaElement : ( classDefinition | projectionDef | moduleDefinition ); + // SilkSchema.g:196:1: schemaElement : ( classDefinition | projectionDef | moduleDefinition ); public final SilkSchemaParser.schemaElement_return schemaElement() throws RecognitionException { SilkSchemaParser.schemaElement_return retval = new SilkSchemaParser.schemaElement_return(); retval.start = input.LT(1); @@ -281,7 +281,7 @@ public class SilkSchemaParser extends Parser { try { - // SilkSchema.g:196:3: ( classDefinition | projectionDef | moduleDefinition ) + // SilkSchema.g:197:3: ( classDefinition | projectionDef | moduleDefinition ) int alt3=3; switch ( input.LA(1) ) { case Class: @@ -309,11 +309,11 @@ public class SilkSchemaParser extends Parser { switch (alt3) { case 1 : - // SilkSchema.g:196:5: classDefinition + // SilkSchema.g:197:5: classDefinition { root_0 = (Object)adaptor.nil(); - pushFollow(FOLLOW_classDefinition_in_schemaElement904); + pushFollow(FOLLOW_classDefinition_in_schemaElement910); classDefinition3=classDefinition(); state._fsp--; @@ -323,11 +323,11 @@ public class SilkSchemaParser extends Parser { } break; case 2 : - // SilkSchema.g:197:5: projectionDef + // SilkSchema.g:198:5: projectionDef { root_0 = (Object)adaptor.nil(); - pushFollow(FOLLOW_projectionDef_in_schemaElement911); + pushFollow(FOLLOW_projectionDef_in_schemaElement917); projectionDef4=projectionDef(); state._fsp--; @@ -337,11 +337,11 @@ public class SilkSchemaParser extends Parser { } break; case 3 : - // SilkSchema.g:198:5: moduleDefinition + // SilkSchema.g:199:5: moduleDefinition { root_0 = (Object)adaptor.nil(); - pushFollow(FOLLOW_moduleDefinition_in_schemaElement917); + pushFollow(FOLLOW_moduleDefinition_in_schemaElement923); moduleDefinition5=moduleDefinition(); state._fsp--; @@ -376,7 +376,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "moduleDefinition" - // SilkSchema.g:202:1: moduleDefinition : ModuleDef ( schemaElement )* End -> ^( Module Name[$ModuleDef.text] ( schemaElement )* ) ; + // SilkSchema.g:203:1: moduleDefinition : ModuleDef ( schemaElement )* End -> ^( Module Name[$ModuleDef.text] ( schemaElement )* ) ; public final SilkSchemaParser.moduleDefinition_return moduleDefinition() throws RecognitionException { SilkSchemaParser.moduleDefinition_return retval = new SilkSchemaParser.moduleDefinition_return(); retval.start = input.LT(1); @@ -394,13 +394,13 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_ModuleDef=new RewriteRuleTokenStream(adaptor,"token ModuleDef"); RewriteRuleSubtreeStream stream_schemaElement=new RewriteRuleSubtreeStream(adaptor,"rule schemaElement"); try { - // SilkSchema.g:202:17: ( ModuleDef ( schemaElement )* End -> ^( Module Name[$ModuleDef.text] ( schemaElement )* ) ) - // SilkSchema.g:203:2: ModuleDef ( schemaElement )* End + // SilkSchema.g:203:17: ( ModuleDef ( schemaElement )* End -> ^( Module Name[$ModuleDef.text] ( schemaElement )* ) ) + // SilkSchema.g:204:2: ModuleDef ( schemaElement )* End { - ModuleDef6=(Token)match(input,ModuleDef,FOLLOW_ModuleDef_in_moduleDefinition929); + ModuleDef6=(Token)match(input,ModuleDef,FOLLOW_ModuleDef_in_moduleDefinition935); stream_ModuleDef.add(ModuleDef6); - // SilkSchema.g:203:12: ( schemaElement )* + // SilkSchema.g:204:12: ( schemaElement )* loop4: do { int alt4=2; @@ -413,9 +413,9 @@ public class SilkSchemaParser extends Parser { switch (alt4) { case 1 : - // SilkSchema.g:203:12: schemaElement + // SilkSchema.g:204:12: schemaElement { - pushFollow(FOLLOW_schemaElement_in_moduleDefinition931); + pushFollow(FOLLOW_schemaElement_in_moduleDefinition937); schemaElement7=schemaElement(); state._fsp--; @@ -430,7 +430,7 @@ public class SilkSchemaParser extends Parser { } } while (true); - End8=(Token)match(input,End,FOLLOW_End_in_moduleDefinition934); + End8=(Token)match(input,End,FOLLOW_End_in_moduleDefinition940); stream_End.add(End8); @@ -446,15 +446,15 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 204:2: -> ^( Module Name[$ModuleDef.text] ( schemaElement )* ) + // 205:2: -> ^( Module Name[$ModuleDef.text] ( schemaElement )* ) { - // SilkSchema.g:204:5: ^( Module Name[$ModuleDef.text] ( schemaElement )* ) + // SilkSchema.g:205:5: ^( Module Name[$ModuleDef.text] ( schemaElement )* ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(Module, "Module"), root_1); adaptor.addChild(root_1, (Object)adaptor.create(Name, (ModuleDef6!=null?ModuleDef6.getText():null))); - // SilkSchema.g:204:36: ( schemaElement )* + // SilkSchema.g:205:36: ( schemaElement )* while ( stream_schemaElement.hasNext() ) { adaptor.addChild(root_1, stream_schemaElement.nextTree()); @@ -493,7 +493,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "classDefinition" - // SilkSchema.g:207:1: classDefinition : ( Class QName ( inheritance )? ( classBody )? End -> ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) | Relation QName ( inheritance )? ( classBody )? End -> ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) ); + // SilkSchema.g:208:1: classDefinition : ( Class QName ( inheritance )? ( classBody )? End -> ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) | Relation QName ( inheritance )? ( classBody )? End -> ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) ); public final SilkSchemaParser.classDefinition_return classDefinition() throws RecognitionException { SilkSchemaParser.classDefinition_return retval = new SilkSchemaParser.classDefinition_return(); retval.start = input.LT(1); @@ -528,7 +528,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_classBody=new RewriteRuleSubtreeStream(adaptor,"rule classBody"); RewriteRuleSubtreeStream stream_inheritance=new RewriteRuleSubtreeStream(adaptor,"rule inheritance"); try { - // SilkSchema.g:208:3: ( Class QName ( inheritance )? ( classBody )? End -> ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) | Relation QName ( inheritance )? ( classBody )? End -> ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) ) + // SilkSchema.g:209:3: ( Class QName ( inheritance )? ( classBody )? End -> ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) | Relation QName ( inheritance )? ( classBody )? End -> ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) ) int alt9=2; int LA9_0 = input.LA(1); @@ -546,15 +546,15 @@ public class SilkSchemaParser extends Parser { } switch (alt9) { case 1 : - // SilkSchema.g:208:5: Class QName ( inheritance )? ( classBody )? End + // SilkSchema.g:209:5: Class QName ( inheritance )? ( classBody )? End { - Class9=(Token)match(input,Class,FOLLOW_Class_in_classDefinition966); + Class9=(Token)match(input,Class,FOLLOW_Class_in_classDefinition972); stream_Class.add(Class9); - QName10=(Token)match(input,QName,FOLLOW_QName_in_classDefinition968); + QName10=(Token)match(input,QName,FOLLOW_QName_in_classDefinition974); stream_QName.add(QName10); - // SilkSchema.g:208:17: ( inheritance )? + // SilkSchema.g:209:17: ( inheritance )? int alt5=2; int LA5_0 = input.LA(1); @@ -563,9 +563,9 @@ public class SilkSchemaParser extends Parser { } switch (alt5) { case 1 : - // SilkSchema.g:208:17: inheritance + // SilkSchema.g:209:17: inheritance { - pushFollow(FOLLOW_inheritance_in_classDefinition970); + pushFollow(FOLLOW_inheritance_in_classDefinition976); inheritance11=inheritance(); state._fsp--; @@ -577,7 +577,7 @@ public class SilkSchemaParser extends Parser { } - // SilkSchema.g:208:30: ( classBody )? + // SilkSchema.g:209:30: ( classBody )? int alt6=2; int LA6_0 = input.LA(1); @@ -586,9 +586,9 @@ public class SilkSchemaParser extends Parser { } switch (alt6) { case 1 : - // SilkSchema.g:208:30: classBody + // SilkSchema.g:209:30: classBody { - pushFollow(FOLLOW_classBody_in_classDefinition973); + pushFollow(FOLLOW_classBody_in_classDefinition979); classBody12=classBody(); state._fsp--; @@ -600,7 +600,7 @@ public class SilkSchemaParser extends Parser { } - End13=(Token)match(input,End,FOLLOW_End_in_classDefinition976); + End13=(Token)match(input,End,FOLLOW_End_in_classDefinition982); stream_End.add(End13); @@ -616,21 +616,21 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 208:45: -> ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) + // 209:45: -> ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) { - // SilkSchema.g:208:48: ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) + // SilkSchema.g:209:48: ^( ClassDef Name[$QName.text] ( inheritance )? ( classBody )? ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ClassDef, "ClassDef"), root_1); adaptor.addChild(root_1, (Object)adaptor.create(Name, (QName10!=null?QName10.getText():null))); - // SilkSchema.g:208:77: ( inheritance )? + // SilkSchema.g:209:77: ( inheritance )? if ( stream_inheritance.hasNext() ) { adaptor.addChild(root_1, stream_inheritance.nextTree()); } stream_inheritance.reset(); - // SilkSchema.g:208:90: ( classBody )? + // SilkSchema.g:209:90: ( classBody )? if ( stream_classBody.hasNext() ) { adaptor.addChild(root_1, stream_classBody.nextTree()); @@ -646,15 +646,15 @@ public class SilkSchemaParser extends Parser { } break; case 2 : - // SilkSchema.g:209:7: Relation QName ( inheritance )? ( classBody )? End + // SilkSchema.g:210:7: Relation QName ( inheritance )? ( classBody )? End { - Relation14=(Token)match(input,Relation,FOLLOW_Relation_in_classDefinition999); + Relation14=(Token)match(input,Relation,FOLLOW_Relation_in_classDefinition1005); stream_Relation.add(Relation14); - QName15=(Token)match(input,QName,FOLLOW_QName_in_classDefinition1001); + QName15=(Token)match(input,QName,FOLLOW_QName_in_classDefinition1007); stream_QName.add(QName15); - // SilkSchema.g:209:22: ( inheritance )? + // SilkSchema.g:210:22: ( inheritance )? int alt7=2; int LA7_0 = input.LA(1); @@ -663,9 +663,9 @@ public class SilkSchemaParser extends Parser { } switch (alt7) { case 1 : - // SilkSchema.g:209:22: inheritance + // SilkSchema.g:210:22: inheritance { - pushFollow(FOLLOW_inheritance_in_classDefinition1003); + pushFollow(FOLLOW_inheritance_in_classDefinition1009); inheritance16=inheritance(); state._fsp--; @@ -677,7 +677,7 @@ public class SilkSchemaParser extends Parser { } - // SilkSchema.g:209:35: ( classBody )? + // SilkSchema.g:210:35: ( classBody )? int alt8=2; int LA8_0 = input.LA(1); @@ -686,9 +686,9 @@ public class SilkSchemaParser extends Parser { } switch (alt8) { case 1 : - // SilkSchema.g:209:35: classBody + // SilkSchema.g:210:35: classBody { - pushFollow(FOLLOW_classBody_in_classDefinition1006); + pushFollow(FOLLOW_classBody_in_classDefinition1012); classBody17=classBody(); state._fsp--; @@ -700,7 +700,7 @@ public class SilkSchemaParser extends Parser { } - End18=(Token)match(input,End,FOLLOW_End_in_classDefinition1009); + End18=(Token)match(input,End,FOLLOW_End_in_classDefinition1015); stream_End.add(End18); @@ -716,21 +716,21 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 209:50: -> ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) + // 210:50: -> ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) { - // SilkSchema.g:209:53: ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) + // SilkSchema.g:210:53: ^( Relation Name[$QName.text] ( inheritance )? ( classBody )? ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot(stream_Relation.nextNode(), root_1); adaptor.addChild(root_1, (Object)adaptor.create(Name, (QName15!=null?QName15.getText():null))); - // SilkSchema.g:209:82: ( inheritance )? + // SilkSchema.g:210:82: ( inheritance )? if ( stream_inheritance.hasNext() ) { adaptor.addChild(root_1, stream_inheritance.nextTree()); } stream_inheritance.reset(); - // SilkSchema.g:209:95: ( classBody )? + // SilkSchema.g:210:95: ( classBody )? if ( stream_classBody.hasNext() ) { adaptor.addChild(root_1, stream_classBody.nextTree()); @@ -771,7 +771,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "classBody" - // SilkSchema.g:212:1: classBody : ( belongsToStatement | includeStatement | attributes | indexStatement )+ ; + // SilkSchema.g:213:1: classBody : ( belongsToStatement | includeStatement | attributes | indexStatement )+ ; public final SilkSchemaParser.classBody_return classBody() throws RecognitionException { SilkSchemaParser.classBody_return retval = new SilkSchemaParser.classBody_return(); retval.start = input.LT(1); @@ -789,12 +789,12 @@ public class SilkSchemaParser extends Parser { try { - // SilkSchema.g:212:10: ( ( belongsToStatement | includeStatement | attributes | indexStatement )+ ) - // SilkSchema.g:212:12: ( belongsToStatement | includeStatement | attributes | indexStatement )+ + // SilkSchema.g:213:10: ( ( belongsToStatement | includeStatement | attributes | indexStatement )+ ) + // SilkSchema.g:213:12: ( belongsToStatement | includeStatement | attributes | indexStatement )+ { root_0 = (Object)adaptor.nil(); - // SilkSchema.g:212:12: ( belongsToStatement | includeStatement | attributes | indexStatement )+ + // SilkSchema.g:213:12: ( belongsToStatement | includeStatement | attributes | indexStatement )+ int cnt10=0; loop10: do { @@ -825,9 +825,9 @@ public class SilkSchemaParser extends Parser { switch (alt10) { case 1 : - // SilkSchema.g:212:13: belongsToStatement + // SilkSchema.g:213:13: belongsToStatement { - pushFollow(FOLLOW_belongsToStatement_in_classBody1038); + pushFollow(FOLLOW_belongsToStatement_in_classBody1044); belongsToStatement19=belongsToStatement(); state._fsp--; @@ -837,9 +837,9 @@ public class SilkSchemaParser extends Parser { } break; case 2 : - // SilkSchema.g:212:34: includeStatement + // SilkSchema.g:213:34: includeStatement { - pushFollow(FOLLOW_includeStatement_in_classBody1042); + pushFollow(FOLLOW_includeStatement_in_classBody1048); includeStatement20=includeStatement(); state._fsp--; @@ -849,9 +849,9 @@ public class SilkSchemaParser extends Parser { } break; case 3 : - // SilkSchema.g:212:53: attributes + // SilkSchema.g:213:53: attributes { - pushFollow(FOLLOW_attributes_in_classBody1046); + pushFollow(FOLLOW_attributes_in_classBody1052); attributes21=attributes(); state._fsp--; @@ -861,9 +861,9 @@ public class SilkSchemaParser extends Parser { } break; case 4 : - // SilkSchema.g:212:66: indexStatement + // SilkSchema.g:213:66: indexStatement { - pushFollow(FOLLOW_indexStatement_in_classBody1050); + pushFollow(FOLLOW_indexStatement_in_classBody1056); indexStatement22=indexStatement(); state._fsp--; @@ -909,7 +909,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "projectionDef" - // SilkSchema.g:215:1: projectionDef : Projection c= QName 'on' t= QName ( projectColumn ( ( Comma )? projectColumn )* ) ( orderByColumns )? End -> ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) ; + // SilkSchema.g:216:1: projectionDef : Projection c= QName 'on' t= QName ( projectColumn ( ( Comma )? projectColumn )* ) ( orderByColumns )? End -> ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) ; public final SilkSchemaParser.projectionDef_return projectionDef() throws RecognitionException { SilkSchemaParser.projectionDef_return retval = new SilkSchemaParser.projectionDef_return(); retval.start = input.LT(1); @@ -935,39 +935,39 @@ public class SilkSchemaParser extends Parser { Object string_literal24_tree=null; Object Comma26_tree=null; Object End29_tree=null; - RewriteRuleTokenStream stream_65=new RewriteRuleTokenStream(adaptor,"token 65"); RewriteRuleTokenStream stream_Projection=new RewriteRuleTokenStream(adaptor,"token Projection"); RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma"); RewriteRuleTokenStream stream_End=new RewriteRuleTokenStream(adaptor,"token End"); RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); + RewriteRuleTokenStream stream_On=new RewriteRuleTokenStream(adaptor,"token On"); RewriteRuleSubtreeStream stream_projectColumn=new RewriteRuleSubtreeStream(adaptor,"rule projectColumn"); RewriteRuleSubtreeStream stream_orderByColumns=new RewriteRuleSubtreeStream(adaptor,"rule orderByColumns"); try { - // SilkSchema.g:215:14: ( Projection c= QName 'on' t= QName ( projectColumn ( ( Comma )? projectColumn )* ) ( orderByColumns )? End -> ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) ) - // SilkSchema.g:215:16: Projection c= QName 'on' t= QName ( projectColumn ( ( Comma )? projectColumn )* ) ( orderByColumns )? End + // SilkSchema.g:216:14: ( Projection c= QName 'on' t= QName ( projectColumn ( ( Comma )? projectColumn )* ) ( orderByColumns )? End -> ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) ) + // SilkSchema.g:216:16: Projection c= QName 'on' t= QName ( projectColumn ( ( Comma )? projectColumn )* ) ( orderByColumns )? End { - Projection23=(Token)match(input,Projection,FOLLOW_Projection_in_projectionDef1060); + Projection23=(Token)match(input,Projection,FOLLOW_Projection_in_projectionDef1066); stream_Projection.add(Projection23); - c=(Token)match(input,QName,FOLLOW_QName_in_projectionDef1064); + c=(Token)match(input,QName,FOLLOW_QName_in_projectionDef1070); stream_QName.add(c); - string_literal24=(Token)match(input,65,FOLLOW_65_in_projectionDef1066); - stream_65.add(string_literal24); + string_literal24=(Token)match(input,On,FOLLOW_On_in_projectionDef1072); + stream_On.add(string_literal24); - t=(Token)match(input,QName,FOLLOW_QName_in_projectionDef1070); + t=(Token)match(input,QName,FOLLOW_QName_in_projectionDef1076); stream_QName.add(t); - // SilkSchema.g:215:48: ( projectColumn ( ( Comma )? projectColumn )* ) - // SilkSchema.g:215:49: projectColumn ( ( Comma )? projectColumn )* + // SilkSchema.g:216:48: ( projectColumn ( ( Comma )? projectColumn )* ) + // SilkSchema.g:216:49: projectColumn ( ( Comma )? projectColumn )* { - pushFollow(FOLLOW_projectColumn_in_projectionDef1073); + pushFollow(FOLLOW_projectColumn_in_projectionDef1079); projectColumn25=projectColumn(); state._fsp--; stream_projectColumn.add(projectColumn25.getTree()); - // SilkSchema.g:215:63: ( ( Comma )? projectColumn )* + // SilkSchema.g:216:63: ( ( Comma )? projectColumn )* loop12: do { int alt12=2; @@ -980,9 +980,9 @@ public class SilkSchemaParser extends Parser { switch (alt12) { case 1 : - // SilkSchema.g:215:64: ( Comma )? projectColumn + // SilkSchema.g:216:64: ( Comma )? projectColumn { - // SilkSchema.g:215:64: ( Comma )? + // SilkSchema.g:216:64: ( Comma )? int alt11=2; int LA11_0 = input.LA(1); @@ -991,9 +991,9 @@ public class SilkSchemaParser extends Parser { } switch (alt11) { case 1 : - // SilkSchema.g:215:64: Comma + // SilkSchema.g:216:64: Comma { - Comma26=(Token)match(input,Comma,FOLLOW_Comma_in_projectionDef1076); + Comma26=(Token)match(input,Comma,FOLLOW_Comma_in_projectionDef1082); stream_Comma.add(Comma26); @@ -1002,7 +1002,7 @@ public class SilkSchemaParser extends Parser { } - pushFollow(FOLLOW_projectColumn_in_projectionDef1079); + pushFollow(FOLLOW_projectColumn_in_projectionDef1085); projectColumn27=projectColumn(); state._fsp--; @@ -1020,7 +1020,7 @@ public class SilkSchemaParser extends Parser { } - // SilkSchema.g:215:88: ( orderByColumns )? + // SilkSchema.g:216:88: ( orderByColumns )? int alt13=2; int LA13_0 = input.LA(1); @@ -1029,9 +1029,9 @@ public class SilkSchemaParser extends Parser { } switch (alt13) { case 1 : - // SilkSchema.g:215:88: orderByColumns + // SilkSchema.g:216:88: orderByColumns { - pushFollow(FOLLOW_orderByColumns_in_projectionDef1084); + pushFollow(FOLLOW_orderByColumns_in_projectionDef1090); orderByColumns28=orderByColumns(); state._fsp--; @@ -1043,13 +1043,13 @@ public class SilkSchemaParser extends Parser { } - End29=(Token)match(input,End,FOLLOW_End_in_projectionDef1087); + End29=(Token)match(input,End,FOLLOW_End_in_projectionDef1093); stream_End.add(End29); // AST REWRITE - // elements: Projection, orderByColumns, projectColumn + // elements: orderByColumns, Projection, projectColumn // token labels: // rule labels: retval // token list labels: @@ -1059,9 +1059,9 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 216:2: -> ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) + // 217:2: -> ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) { - // SilkSchema.g:216:5: ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) + // SilkSchema.g:217:5: ^( Projection Name[$c.text] TargetClass[$t.text] ( projectColumn )+ ( orderByColumns )? ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot(stream_Projection.nextNode(), root_1); @@ -1076,7 +1076,7 @@ public class SilkSchemaParser extends Parser { } stream_projectColumn.reset(); - // SilkSchema.g:216:68: ( orderByColumns )? + // SilkSchema.g:217:68: ( orderByColumns )? if ( stream_orderByColumns.hasNext() ) { adaptor.addChild(root_1, stream_orderByColumns.nextTree()); @@ -1115,7 +1115,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "projectColumn" - // SilkSchema.g:218:1: fragment projectColumn : ( QName -> Attribute[$QName.text] | Star -> AllIncluded[\"true\"] | Symbol -> Attribute[$Symbol.text] ); + // SilkSchema.g:219:1: fragment projectColumn : ( QName -> Attribute[$QName.text] | Star -> AllIncluded[\"true\"] | Symbol -> Attribute[$Symbol.text] ); public final SilkSchemaParser.projectColumn_return projectColumn() throws RecognitionException { SilkSchemaParser.projectColumn_return retval = new SilkSchemaParser.projectColumn_return(); retval.start = input.LT(1); @@ -1134,7 +1134,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); try { - // SilkSchema.g:220:3: ( QName -> Attribute[$QName.text] | Star -> AllIncluded[\"true\"] | Symbol -> Attribute[$Symbol.text] ) + // SilkSchema.g:221:3: ( QName -> Attribute[$QName.text] | Star -> AllIncluded[\"true\"] | Symbol -> Attribute[$Symbol.text] ) int alt14=3; switch ( input.LA(1) ) { case QName: @@ -1161,9 +1161,9 @@ public class SilkSchemaParser extends Parser { switch (alt14) { case 1 : - // SilkSchema.g:220:5: QName + // SilkSchema.g:221:5: QName { - QName30=(Token)match(input,QName,FOLLOW_QName_in_projectColumn1119); + QName30=(Token)match(input,QName,FOLLOW_QName_in_projectColumn1125); stream_QName.add(QName30); @@ -1179,7 +1179,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 220:12: -> Attribute[$QName.text] + // 221:12: -> Attribute[$QName.text] { adaptor.addChild(root_0, (Object)adaptor.create(Attribute, (QName30!=null?QName30.getText():null))); @@ -1189,9 +1189,9 @@ public class SilkSchemaParser extends Parser { } break; case 2 : - // SilkSchema.g:221:5: Star + // SilkSchema.g:222:5: Star { - Star31=(Token)match(input,Star,FOLLOW_Star_in_projectColumn1131); + Star31=(Token)match(input,Star,FOLLOW_Star_in_projectColumn1137); stream_Star.add(Star31); @@ -1207,7 +1207,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 221:10: -> AllIncluded[\"true\"] + // 222:10: -> AllIncluded[\"true\"] { adaptor.addChild(root_0, (Object)adaptor.create(AllIncluded, "true")); @@ -1217,9 +1217,9 @@ public class SilkSchemaParser extends Parser { } break; case 3 : - // SilkSchema.g:222:5: Symbol + // SilkSchema.g:223:5: Symbol { - Symbol32=(Token)match(input,Symbol,FOLLOW_Symbol_in_projectColumn1143); + Symbol32=(Token)match(input,Symbol,FOLLOW_Symbol_in_projectColumn1149); stream_Symbol.add(Symbol32); @@ -1235,7 +1235,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 222:12: -> Attribute[$Symbol.text] + // 223:12: -> Attribute[$Symbol.text] { adaptor.addChild(root_0, (Object)adaptor.create(Attribute, (Symbol32!=null?Symbol32.getText():null))); @@ -1270,7 +1270,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "orderByColumns" - // SilkSchema.g:225:1: fragment orderByColumns : OrderBy orderByItem ( Comma orderByItem )* -> ( orderByItem )+ ; + // SilkSchema.g:226:1: fragment orderByColumns : OrderBy orderByItem ( Comma orderByItem )* -> ( orderByItem )+ ; public final SilkSchemaParser.orderByColumns_return orderByColumns() throws RecognitionException { SilkSchemaParser.orderByColumns_return retval = new SilkSchemaParser.orderByColumns_return(); retval.start = input.LT(1); @@ -1290,19 +1290,19 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma"); RewriteRuleSubtreeStream stream_orderByItem=new RewriteRuleSubtreeStream(adaptor,"rule orderByItem"); try { - // SilkSchema.g:227:3: ( OrderBy orderByItem ( Comma orderByItem )* -> ( orderByItem )+ ) - // SilkSchema.g:227:5: OrderBy orderByItem ( Comma orderByItem )* + // SilkSchema.g:228:3: ( OrderBy orderByItem ( Comma orderByItem )* -> ( orderByItem )+ ) + // SilkSchema.g:228:5: OrderBy orderByItem ( Comma orderByItem )* { - OrderBy33=(Token)match(input,OrderBy,FOLLOW_OrderBy_in_orderByColumns1161); + OrderBy33=(Token)match(input,OrderBy,FOLLOW_OrderBy_in_orderByColumns1167); stream_OrderBy.add(OrderBy33); - pushFollow(FOLLOW_orderByItem_in_orderByColumns1163); + pushFollow(FOLLOW_orderByItem_in_orderByColumns1169); orderByItem34=orderByItem(); state._fsp--; stream_orderByItem.add(orderByItem34.getTree()); - // SilkSchema.g:227:25: ( Comma orderByItem )* + // SilkSchema.g:228:25: ( Comma orderByItem )* loop15: do { int alt15=2; @@ -1315,12 +1315,12 @@ public class SilkSchemaParser extends Parser { switch (alt15) { case 1 : - // SilkSchema.g:227:26: Comma orderByItem + // SilkSchema.g:228:26: Comma orderByItem { - Comma35=(Token)match(input,Comma,FOLLOW_Comma_in_orderByColumns1166); + Comma35=(Token)match(input,Comma,FOLLOW_Comma_in_orderByColumns1172); stream_Comma.add(Comma35); - pushFollow(FOLLOW_orderByItem_in_orderByColumns1168); + pushFollow(FOLLOW_orderByItem_in_orderByColumns1174); orderByItem36=orderByItem(); state._fsp--; @@ -1348,7 +1348,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 227:46: -> ( orderByItem )+ + // 228:46: -> ( orderByItem )+ { if ( !(stream_orderByItem.hasNext()) ) { throw new RewriteEarlyExitException(); @@ -1388,7 +1388,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "orderByItem" - // SilkSchema.g:230:1: fragment orderByItem : ( QName -> OrderBy[$QName.text] | Symbol -> OrderBy[$Symbol.text] ); + // SilkSchema.g:231:1: fragment orderByItem : ( QName -> OrderBy[$QName.text] | Symbol -> OrderBy[$Symbol.text] ); public final SilkSchemaParser.orderByItem_return orderByItem() throws RecognitionException { SilkSchemaParser.orderByItem_return retval = new SilkSchemaParser.orderByItem_return(); retval.start = input.LT(1); @@ -1404,7 +1404,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); try { - // SilkSchema.g:232:3: ( QName -> OrderBy[$QName.text] | Symbol -> OrderBy[$Symbol.text] ) + // SilkSchema.g:233:3: ( QName -> OrderBy[$QName.text] | Symbol -> OrderBy[$Symbol.text] ) int alt16=2; int LA16_0 = input.LA(1); @@ -1422,9 +1422,9 @@ public class SilkSchemaParser extends Parser { } switch (alt16) { case 1 : - // SilkSchema.g:232:5: QName + // SilkSchema.g:233:5: QName { - QName37=(Token)match(input,QName,FOLLOW_QName_in_orderByItem1188); + QName37=(Token)match(input,QName,FOLLOW_QName_in_orderByItem1194); stream_QName.add(QName37); @@ -1440,7 +1440,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 232:11: -> OrderBy[$QName.text] + // 233:11: -> OrderBy[$QName.text] { adaptor.addChild(root_0, (Object)adaptor.create(OrderBy, (QName37!=null?QName37.getText():null))); @@ -1450,9 +1450,9 @@ public class SilkSchemaParser extends Parser { } break; case 2 : - // SilkSchema.g:233:5: Symbol + // SilkSchema.g:234:5: Symbol { - Symbol38=(Token)match(input,Symbol,FOLLOW_Symbol_in_orderByItem1200); + Symbol38=(Token)match(input,Symbol,FOLLOW_Symbol_in_orderByItem1206); stream_Symbol.add(Symbol38); @@ -1468,7 +1468,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 233:12: -> OrderBy[$Symbol.text] + // 234:12: -> OrderBy[$Symbol.text] { adaptor.addChild(root_0, (Object)adaptor.create(OrderBy, (Symbol38!=null?Symbol38.getText():null))); @@ -1503,7 +1503,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "functionArg" - // SilkSchema.g:237:1: fragment functionArg : Symbol -> Argument[$Symbol.text] ; + // SilkSchema.g:238:1: fragment functionArg : Symbol -> Argument[$Symbol.text] ; public final SilkSchemaParser.functionArg_return functionArg() throws RecognitionException { SilkSchemaParser.functionArg_return retval = new SilkSchemaParser.functionArg_return(); retval.start = input.LT(1); @@ -1516,10 +1516,10 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_Symbol=new RewriteRuleTokenStream(adaptor,"token Symbol"); try { - // SilkSchema.g:238:12: ( Symbol -> Argument[$Symbol.text] ) - // SilkSchema.g:238:14: Symbol + // SilkSchema.g:239:12: ( Symbol -> Argument[$Symbol.text] ) + // SilkSchema.g:239:14: Symbol { - Symbol39=(Token)match(input,Symbol,FOLLOW_Symbol_in_functionArg1216); + Symbol39=(Token)match(input,Symbol,FOLLOW_Symbol_in_functionArg1222); stream_Symbol.add(Symbol39); @@ -1535,7 +1535,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 238:21: -> Argument[$Symbol.text] + // 239:21: -> Argument[$Symbol.text] { adaptor.addChild(root_0, (Object)adaptor.create(Argument, (Symbol39!=null?Symbol39.getText():null))); @@ -1568,7 +1568,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "belongsToStatement" - // SilkSchema.g:241:1: fragment belongsToStatement : BelongsTo QName -> BelongsTo[$QName.text] ; + // SilkSchema.g:242:1: fragment belongsToStatement : BelongsTo QName -> BelongsTo[$QName.text] ; public final SilkSchemaParser.belongsToStatement_return belongsToStatement() throws RecognitionException { SilkSchemaParser.belongsToStatement_return retval = new SilkSchemaParser.belongsToStatement_return(); retval.start = input.LT(1); @@ -1584,13 +1584,13 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); try { - // SilkSchema.g:242:19: ( BelongsTo QName -> BelongsTo[$QName.text] ) - // SilkSchema.g:242:21: BelongsTo QName + // SilkSchema.g:243:19: ( BelongsTo QName -> BelongsTo[$QName.text] ) + // SilkSchema.g:243:21: BelongsTo QName { - BelongsTo40=(Token)match(input,BelongsTo,FOLLOW_BelongsTo_in_belongsToStatement1232); + BelongsTo40=(Token)match(input,BelongsTo,FOLLOW_BelongsTo_in_belongsToStatement1238); stream_BelongsTo.add(BelongsTo40); - QName41=(Token)match(input,QName,FOLLOW_QName_in_belongsToStatement1234); + QName41=(Token)match(input,QName,FOLLOW_QName_in_belongsToStatement1240); stream_QName.add(QName41); @@ -1606,7 +1606,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 242:37: -> BelongsTo[$QName.text] + // 243:37: -> BelongsTo[$QName.text] { adaptor.addChild(root_0, (Object)adaptor.create(BelongsTo, (QName41!=null?QName41.getText():null))); @@ -1639,7 +1639,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "inheritance" - // SilkSchema.g:244:1: fragment inheritance : Lt QName -> Parent[$QName.text] ; + // SilkSchema.g:245:1: fragment inheritance : Lt QName -> Parent[$QName.text] ; public final SilkSchemaParser.inheritance_return inheritance() throws RecognitionException { SilkSchemaParser.inheritance_return retval = new SilkSchemaParser.inheritance_return(); retval.start = input.LT(1); @@ -1655,13 +1655,13 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); try { - // SilkSchema.g:245:12: ( Lt QName -> Parent[$QName.text] ) - // SilkSchema.g:245:14: Lt QName + // SilkSchema.g:246:12: ( Lt QName -> Parent[$QName.text] ) + // SilkSchema.g:246:14: Lt QName { - Lt42=(Token)match(input,Lt,FOLLOW_Lt_in_inheritance1252); + Lt42=(Token)match(input,Lt,FOLLOW_Lt_in_inheritance1258); stream_Lt.add(Lt42); - QName43=(Token)match(input,QName,FOLLOW_QName_in_inheritance1254); + QName43=(Token)match(input,QName,FOLLOW_QName_in_inheritance1260); stream_QName.add(QName43); @@ -1677,7 +1677,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 245:23: -> Parent[$QName.text] + // 246:23: -> Parent[$QName.text] { adaptor.addChild(root_0, (Object)adaptor.create(Parent, (QName43!=null?QName43.getText():null))); @@ -1710,7 +1710,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "includeStatement" - // SilkSchema.g:247:1: fragment includeStatement : Includes includeItem ( Comma includeItem )* -> ( includeItem )+ ; + // SilkSchema.g:248:1: fragment includeStatement : Includes includeItem ( Comma includeItem )* -> ( includeItem )+ ; public final SilkSchemaParser.includeStatement_return includeStatement() throws RecognitionException { SilkSchemaParser.includeStatement_return retval = new SilkSchemaParser.includeStatement_return(); retval.start = input.LT(1); @@ -1730,19 +1730,19 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma"); RewriteRuleSubtreeStream stream_includeItem=new RewriteRuleSubtreeStream(adaptor,"rule includeItem"); try { - // SilkSchema.g:248:17: ( Includes includeItem ( Comma includeItem )* -> ( includeItem )+ ) - // SilkSchema.g:248:19: Includes includeItem ( Comma includeItem )* + // SilkSchema.g:249:17: ( Includes includeItem ( Comma includeItem )* -> ( includeItem )+ ) + // SilkSchema.g:249:19: Includes includeItem ( Comma includeItem )* { - Includes44=(Token)match(input,Includes,FOLLOW_Includes_in_includeStatement1271); + Includes44=(Token)match(input,Includes,FOLLOW_Includes_in_includeStatement1277); stream_Includes.add(Includes44); - pushFollow(FOLLOW_includeItem_in_includeStatement1273); + pushFollow(FOLLOW_includeItem_in_includeStatement1279); includeItem45=includeItem(); state._fsp--; stream_includeItem.add(includeItem45.getTree()); - // SilkSchema.g:248:40: ( Comma includeItem )* + // SilkSchema.g:249:40: ( Comma includeItem )* loop17: do { int alt17=2; @@ -1755,12 +1755,12 @@ public class SilkSchemaParser extends Parser { switch (alt17) { case 1 : - // SilkSchema.g:248:41: Comma includeItem + // SilkSchema.g:249:41: Comma includeItem { - Comma46=(Token)match(input,Comma,FOLLOW_Comma_in_includeStatement1276); + Comma46=(Token)match(input,Comma,FOLLOW_Comma_in_includeStatement1282); stream_Comma.add(Comma46); - pushFollow(FOLLOW_includeItem_in_includeStatement1278); + pushFollow(FOLLOW_includeItem_in_includeStatement1284); includeItem47=includeItem(); state._fsp--; @@ -1788,7 +1788,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 248:61: -> ( includeItem )+ + // 249:61: -> ( includeItem )+ { if ( !(stream_includeItem.hasNext()) ) { throw new RewriteEarlyExitException(); @@ -1828,7 +1828,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "includeItem" - // SilkSchema.g:250:1: fragment includeItem : QName -> Mixin[$QName.text] ; + // SilkSchema.g:251:1: fragment includeItem : QName -> Mixin[$QName.text] ; public final SilkSchemaParser.includeItem_return includeItem() throws RecognitionException { SilkSchemaParser.includeItem_return retval = new SilkSchemaParser.includeItem_return(); retval.start = input.LT(1); @@ -1841,10 +1841,10 @@ public class SilkSchemaParser extends Parser { RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); try { - // SilkSchema.g:251:12: ( QName -> Mixin[$QName.text] ) - // SilkSchema.g:251:14: QName + // SilkSchema.g:252:12: ( QName -> Mixin[$QName.text] ) + // SilkSchema.g:252:14: QName { - QName48=(Token)match(input,QName,FOLLOW_QName_in_includeItem1295); + QName48=(Token)match(input,QName,FOLLOW_QName_in_includeItem1301); stream_QName.add(QName48); @@ -1860,7 +1860,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 251:20: -> Mixin[$QName.text] + // 252:20: -> Mixin[$QName.text] { adaptor.addChild(root_0, (Object)adaptor.create(Mixin, (QName48!=null?QName48.getText():null))); @@ -1893,7 +1893,7 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "indexStatement" - // SilkSchema.g:253:1: fragment indexStatement : Index QName indexTarget ( Comma indexTarget )* -> ^( Index TypeName[$QName.text] ( indexTarget )+ ) ; + // SilkSchema.g:254:1: fragment indexStatement : Index QName On indexTarget ( Comma indexTarget )* -> ^( Index TypeName[$QName.text] ( indexTarget )+ ) ; public final SilkSchemaParser.indexStatement_return indexStatement() throws RecognitionException { SilkSchemaParser.indexStatement_return retval = new SilkSchemaParser.indexStatement_return(); retval.start = input.LT(1); @@ -1902,36 +1902,42 @@ public class SilkSchemaParser extends Parser { Token Index49=null; Token QName50=null; - Token Comma52=null; - SilkSchemaParser.indexTarget_return indexTarget51 = null; + Token On51=null; + Token Comma53=null; + SilkSchemaParser.indexTarget_return indexTarget52 = null; - SilkSchemaParser.indexTarget_return indexTarget53 = null; + SilkSchemaParser.indexTarget_return indexTarget54 = null; Object Index49_tree=null; Object QName50_tree=null; - Object Comma52_tree=null; + Object On51_tree=null; + Object Comma53_tree=null; RewriteRuleTokenStream stream_Index=new RewriteRuleTokenStream(adaptor,"token Index"); RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma"); RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); + RewriteRuleTokenStream stream_On=new RewriteRuleTokenStream(adaptor,"token On"); RewriteRuleSubtreeStream stream_indexTarget=new RewriteRuleSubtreeStream(adaptor,"rule indexTarget"); try { - // SilkSchema.g:254:15: ( Index QName indexTarget ( Comma indexTarget )* -> ^( Index TypeName[$QName.text] ( indexTarget )+ ) ) - // SilkSchema.g:254:17: Index QName indexTarget ( Comma indexTarget )* + // SilkSchema.g:255:15: ( Index QName On indexTarget ( Comma indexTarget )* -> ^( Index TypeName[$QName.text] ( indexTarget )+ ) ) + // SilkSchema.g:255:17: Index QName On indexTarget ( Comma indexTarget )* { - Index49=(Token)match(input,Index,FOLLOW_Index_in_indexStatement1310); + Index49=(Token)match(input,Index,FOLLOW_Index_in_indexStatement1316); stream_Index.add(Index49); - QName50=(Token)match(input,QName,FOLLOW_QName_in_indexStatement1312); + QName50=(Token)match(input,QName,FOLLOW_QName_in_indexStatement1318); stream_QName.add(QName50); - pushFollow(FOLLOW_indexTarget_in_indexStatement1314); - indexTarget51=indexTarget(); + On51=(Token)match(input,On,FOLLOW_On_in_indexStatement1320); + stream_On.add(On51); + + pushFollow(FOLLOW_indexTarget_in_indexStatement1322); + indexTarget52=indexTarget(); state._fsp--; - stream_indexTarget.add(indexTarget51.getTree()); - // SilkSchema.g:254:41: ( Comma indexTarget )* + stream_indexTarget.add(indexTarget52.getTree()); + // SilkSchema.g:255:44: ( Comma indexTarget )* loop18: do { int alt18=2; @@ -1944,17 +1950,17 @@ public class SilkSchemaParser extends Parser { switch (alt18) { case 1 : - // SilkSchema.g:254:42: Comma indexTarget + // SilkSchema.g:255:45: Comma indexTarget { - Comma52=(Token)match(input,Comma,FOLLOW_Comma_in_indexStatement1317); - stream_Comma.add(Comma52); + Comma53=(Token)match(input,Comma,FOLLOW_Comma_in_indexStatement1325); + stream_Comma.add(Comma53); - pushFollow(FOLLOW_indexTarget_in_indexStatement1319); - indexTarget53=indexTarget(); + pushFollow(FOLLOW_indexTarget_in_indexStatement1327); + indexTarget54=indexTarget(); state._fsp--; - stream_indexTarget.add(indexTarget53.getTree()); + stream_indexTarget.add(indexTarget54.getTree()); } break; @@ -1977,9 +1983,9 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 255:3: -> ^( Index TypeName[$QName.text] ( indexTarget )+ ) + // 256:3: -> ^( Index TypeName[$QName.text] ( indexTarget )+ ) { - // SilkSchema.g:255:6: ^( Index TypeName[$QName.text] ( indexTarget )+ ) + // SilkSchema.g:256:6: ^( Index TypeName[$QName.text] ( indexTarget )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot(stream_Index.nextNode(), root_1); @@ -2026,24 +2032,24 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "indexTarget" - // SilkSchema.g:258:1: fragment indexTarget : Symbol -> Attribute[$Symbol.text] ; + // SilkSchema.g:259:1: fragment indexTarget : Symbol -> Attribute[$Symbol.text] ; public final SilkSchemaParser.indexTarget_return indexTarget() throws RecognitionException { SilkSchemaParser.indexTarget_return retval = new SilkSchemaParser.indexTarget_return(); retval.start = input.LT(1); Object root_0 = null; - Token Symbol54=null; + Token Symbol55=null; - Object Symbol54_tree=null; + Object Symbol55_tree=null; RewriteRuleTokenStream stream_Symbol=new RewriteRuleTokenStream(adaptor,"token Symbol"); try { - // SilkSchema.g:259:12: ( Symbol -> Attribute[$Symbol.text] ) - // SilkSchema.g:259:14: Symbol + // SilkSchema.g:260:12: ( Symbol -> Attribute[$Symbol.text] ) + // SilkSchema.g:260:14: Symbol { - Symbol54=(Token)match(input,Symbol,FOLLOW_Symbol_in_indexTarget1347); - stream_Symbol.add(Symbol54); + Symbol55=(Token)match(input,Symbol,FOLLOW_Symbol_in_indexTarget1355); + stream_Symbol.add(Symbol55); @@ -2058,9 +2064,9 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 259:21: -> Attribute[$Symbol.text] + // 260:21: -> Attribute[$Symbol.text] { - adaptor.addChild(root_0, (Object)adaptor.create(Attribute, (Symbol54!=null?Symbol54.getText():null))); + adaptor.addChild(root_0, (Object)adaptor.create(Attribute, (Symbol55!=null?Symbol55.getText():null))); } @@ -2091,33 +2097,33 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "attributes" - // SilkSchema.g:263:1: fragment attributes : attribute ( Comma attribute )* -> ( attribute )+ ; + // SilkSchema.g:264:1: fragment attributes : attribute ( Comma attribute )* -> ( attribute )+ ; public final SilkSchemaParser.attributes_return attributes() throws RecognitionException { SilkSchemaParser.attributes_return retval = new SilkSchemaParser.attributes_return(); retval.start = input.LT(1); Object root_0 = null; - Token Comma56=null; - SilkSchemaParser.attribute_return attribute55 = null; + Token Comma57=null; + SilkSchemaParser.attribute_return attribute56 = null; - SilkSchemaParser.attribute_return attribute57 = null; + SilkSchemaParser.attribute_return attribute58 = null; - Object Comma56_tree=null; + Object Comma57_tree=null; RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma"); RewriteRuleSubtreeStream stream_attribute=new RewriteRuleSubtreeStream(adaptor,"rule attribute"); try { - // SilkSchema.g:264:11: ( attribute ( Comma attribute )* -> ( attribute )+ ) - // SilkSchema.g:264:13: attribute ( Comma attribute )* + // SilkSchema.g:265:11: ( attribute ( Comma attribute )* -> ( attribute )+ ) + // SilkSchema.g:265:13: attribute ( Comma attribute )* { - pushFollow(FOLLOW_attribute_in_attributes1367); - attribute55=attribute(); + pushFollow(FOLLOW_attribute_in_attributes1375); + attribute56=attribute(); state._fsp--; - stream_attribute.add(attribute55.getTree()); - // SilkSchema.g:264:23: ( Comma attribute )* + stream_attribute.add(attribute56.getTree()); + // SilkSchema.g:265:23: ( Comma attribute )* loop19: do { int alt19=2; @@ -2130,17 +2136,17 @@ public class SilkSchemaParser extends Parser { switch (alt19) { case 1 : - // SilkSchema.g:264:24: Comma attribute + // SilkSchema.g:265:24: Comma attribute { - Comma56=(Token)match(input,Comma,FOLLOW_Comma_in_attributes1370); - stream_Comma.add(Comma56); + Comma57=(Token)match(input,Comma,FOLLOW_Comma_in_attributes1378); + stream_Comma.add(Comma57); - pushFollow(FOLLOW_attribute_in_attributes1372); - attribute57=attribute(); + pushFollow(FOLLOW_attribute_in_attributes1380); + attribute58=attribute(); state._fsp--; - stream_attribute.add(attribute57.getTree()); + stream_attribute.add(attribute58.getTree()); } break; @@ -2163,7 +2169,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 265:3: -> ( attribute )+ + // 266:3: -> ( attribute )+ { if ( !(stream_attribute.hasNext()) ) { throw new RewriteEarlyExitException(); @@ -2203,34 +2209,34 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "attribute" - // SilkSchema.g:268:1: fragment attribute : Symbol ( attributeType )? ( Default attributeValue )? -> ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) ; + // SilkSchema.g:269:1: fragment attribute : Symbol ( attributeType )? ( Default attributeValue )? -> ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) ; public final SilkSchemaParser.attribute_return attribute() throws RecognitionException { SilkSchemaParser.attribute_return retval = new SilkSchemaParser.attribute_return(); retval.start = input.LT(1); Object root_0 = null; - Token Symbol58=null; - Token Default60=null; - SilkSchemaParser.attributeType_return attributeType59 = null; + Token Symbol59=null; + Token Default61=null; + SilkSchemaParser.attributeType_return attributeType60 = null; - SilkSchemaParser.attributeValue_return attributeValue61 = null; + SilkSchemaParser.attributeValue_return attributeValue62 = null; - Object Symbol58_tree=null; - Object Default60_tree=null; + Object Symbol59_tree=null; + Object Default61_tree=null; RewriteRuleTokenStream stream_Symbol=new RewriteRuleTokenStream(adaptor,"token Symbol"); RewriteRuleTokenStream stream_Default=new RewriteRuleTokenStream(adaptor,"token Default"); RewriteRuleSubtreeStream stream_attributeValue=new RewriteRuleSubtreeStream(adaptor,"rule attributeValue"); RewriteRuleSubtreeStream stream_attributeType=new RewriteRuleSubtreeStream(adaptor,"rule attributeType"); try { - // SilkSchema.g:269:10: ( Symbol ( attributeType )? ( Default attributeValue )? -> ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) ) - // SilkSchema.g:270:3: Symbol ( attributeType )? ( Default attributeValue )? + // SilkSchema.g:270:10: ( Symbol ( attributeType )? ( Default attributeValue )? -> ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) ) + // SilkSchema.g:271:3: Symbol ( attributeType )? ( Default attributeValue )? { - Symbol58=(Token)match(input,Symbol,FOLLOW_Symbol_in_attribute1399); - stream_Symbol.add(Symbol58); + Symbol59=(Token)match(input,Symbol,FOLLOW_Symbol_in_attribute1407); + stream_Symbol.add(Symbol59); - // SilkSchema.g:270:10: ( attributeType )? + // SilkSchema.g:271:10: ( attributeType )? int alt20=2; int LA20_0 = input.LA(1); @@ -2239,21 +2245,21 @@ public class SilkSchemaParser extends Parser { } switch (alt20) { case 1 : - // SilkSchema.g:270:10: attributeType + // SilkSchema.g:271:10: attributeType { - pushFollow(FOLLOW_attributeType_in_attribute1401); - attributeType59=attributeType(); + pushFollow(FOLLOW_attributeType_in_attribute1409); + attributeType60=attributeType(); state._fsp--; - stream_attributeType.add(attributeType59.getTree()); + stream_attributeType.add(attributeType60.getTree()); } break; } - // SilkSchema.g:270:25: ( Default attributeValue )? + // SilkSchema.g:271:25: ( Default attributeValue )? int alt21=2; int LA21_0 = input.LA(1); @@ -2262,17 +2268,17 @@ public class SilkSchemaParser extends Parser { } switch (alt21) { case 1 : - // SilkSchema.g:270:26: Default attributeValue + // SilkSchema.g:271:26: Default attributeValue { - Default60=(Token)match(input,Default,FOLLOW_Default_in_attribute1405); - stream_Default.add(Default60); + Default61=(Token)match(input,Default,FOLLOW_Default_in_attribute1413); + stream_Default.add(Default61); - pushFollow(FOLLOW_attributeValue_in_attribute1407); - attributeValue61=attributeValue(); + pushFollow(FOLLOW_attributeValue_in_attribute1415); + attributeValue62=attributeValue(); state._fsp--; - stream_attributeValue.add(attributeValue61.getTree()); + stream_attributeValue.add(attributeValue62.getTree()); } break; @@ -2292,21 +2298,21 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 271:3: -> ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) + // 272:3: -> ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) { - // SilkSchema.g:271:6: ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) + // SilkSchema.g:272:6: ^( Attribute Name[$Symbol.text] ( attributeType )? ( attributeValue )? ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(Attribute, "Attribute"), root_1); - adaptor.addChild(root_1, (Object)adaptor.create(Name, (Symbol58!=null?Symbol58.getText():null))); - // SilkSchema.g:271:37: ( attributeType )? + adaptor.addChild(root_1, (Object)adaptor.create(Name, (Symbol59!=null?Symbol59.getText():null))); + // SilkSchema.g:272:37: ( attributeType )? if ( stream_attributeType.hasNext() ) { adaptor.addChild(root_1, stream_attributeType.nextTree()); } stream_attributeType.reset(); - // SilkSchema.g:271:52: ( attributeValue )? + // SilkSchema.g:272:52: ( attributeValue )? if ( stream_attributeValue.hasNext() ) { adaptor.addChild(root_1, stream_attributeValue.nextTree()); @@ -2345,29 +2351,29 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "attributeValue" - // SilkSchema.g:274:1: attributeValue : ( String | Double | Integer ) -> DefaultValue[$attributeValue.text] ; + // SilkSchema.g:275:1: attributeValue : ( String | Double | Integer ) -> DefaultValue[$attributeValue.text] ; public final SilkSchemaParser.attributeValue_return attributeValue() throws RecognitionException { SilkSchemaParser.attributeValue_return retval = new SilkSchemaParser.attributeValue_return(); retval.start = input.LT(1); Object root_0 = null; - Token String62=null; - Token Double63=null; - Token Integer64=null; + Token String63=null; + Token Double64=null; + Token Integer65=null; - Object String62_tree=null; - Object Double63_tree=null; - Object Integer64_tree=null; + Object String63_tree=null; + Object Double64_tree=null; + Object Integer65_tree=null; RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String"); RewriteRuleTokenStream stream_Integer=new RewriteRuleTokenStream(adaptor,"token Integer"); RewriteRuleTokenStream stream_Double=new RewriteRuleTokenStream(adaptor,"token Double"); try { - // SilkSchema.g:275:3: ( ( String | Double | Integer ) -> DefaultValue[$attributeValue.text] ) - // SilkSchema.g:275:5: ( String | Double | Integer ) + // SilkSchema.g:276:3: ( ( String | Double | Integer ) -> DefaultValue[$attributeValue.text] ) + // SilkSchema.g:276:5: ( String | Double | Integer ) { - // SilkSchema.g:275:5: ( String | Double | Integer ) + // SilkSchema.g:276:5: ( String | Double | Integer ) int alt22=3; switch ( input.LA(1) ) { case String: @@ -2394,28 +2400,28 @@ public class SilkSchemaParser extends Parser { switch (alt22) { case 1 : - // SilkSchema.g:275:6: String + // SilkSchema.g:276:6: String { - String62=(Token)match(input,String,FOLLOW_String_in_attributeValue1445); - stream_String.add(String62); + String63=(Token)match(input,String,FOLLOW_String_in_attributeValue1453); + stream_String.add(String63); } break; case 2 : - // SilkSchema.g:275:15: Double + // SilkSchema.g:276:15: Double { - Double63=(Token)match(input,Double,FOLLOW_Double_in_attributeValue1449); - stream_Double.add(Double63); + Double64=(Token)match(input,Double,FOLLOW_Double_in_attributeValue1457); + stream_Double.add(Double64); } break; case 3 : - // SilkSchema.g:275:24: Integer + // SilkSchema.g:276:24: Integer { - Integer64=(Token)match(input,Integer,FOLLOW_Integer_in_attributeValue1453); - stream_Integer.add(Integer64); + Integer65=(Token)match(input,Integer,FOLLOW_Integer_in_attributeValue1461); + stream_Integer.add(Integer65); } @@ -2436,7 +2442,7 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 275:33: -> DefaultValue[$attributeValue.text] + // 276:33: -> DefaultValue[$attributeValue.text] { adaptor.addChild(root_0, (Object)adaptor.create(DefaultValue, input.toString(retval.start,input.LT(-1)))); @@ -2469,25 +2475,25 @@ public class SilkSchemaParser extends Parser { }; // $ANTLR start "attributeType" - // SilkSchema.g:277:10: fragment attributeType : ( QName -> TypeName[$QName.text] | QName Star -> TypeName[$QName.text] IsArray[\"true\"] ); + // SilkSchema.g:278:10: fragment attributeType : ( QName -> TypeName[$QName.text] | QName Star -> TypeName[$QName.text] IsArray[\"true\"] ); public final SilkSchemaParser.attributeType_return attributeType() throws RecognitionException { SilkSchemaParser.attributeType_return retval = new SilkSchemaParser.attributeType_return(); retval.start = input.LT(1); Object root_0 = null; - Token QName65=null; Token QName66=null; - Token Star67=null; + Token QName67=null; + Token Star68=null; - Object QName65_tree=null; Object QName66_tree=null; - Object Star67_tree=null; + Object QName67_tree=null; + Object Star68_tree=null; RewriteRuleTokenStream stream_Star=new RewriteRuleTokenStream(adaptor,"token Star"); RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName"); try { - // SilkSchema.g:278:3: ( QName -> TypeName[$QName.text] | QName Star -> TypeName[$QName.text] IsArray[\"true\"] ) + // SilkSchema.g:279:3: ( QName -> TypeName[$QName.text] | QName Star -> TypeName[$QName.text] IsArray[\"true\"] ) int alt23=2; int LA23_0 = input.LA(1); @@ -2515,10 +2521,10 @@ public class SilkSchemaParser extends Parser { } switch (alt23) { case 1 : - // SilkSchema.g:278:5: QName + // SilkSchema.g:279:5: QName { - QName65=(Token)match(input,QName,FOLLOW_QName_in_attributeType1474); - stream_QName.add(QName65); + QName66=(Token)match(input,QName,FOLLOW_QName_in_attributeType1482); + stream_QName.add(QName66); @@ -2533,9 +2539,9 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 278:11: -> TypeName[$QName.text] + // 279:11: -> TypeName[$QName.text] { - adaptor.addChild(root_0, (Object)adaptor.create(TypeName, (QName65!=null?QName65.getText():null))); + adaptor.addChild(root_0, (Object)adaptor.create(TypeName, (QName66!=null?QName66.getText():null))); } @@ -2543,13 +2549,13 @@ public class SilkSchemaParser extends Parser { } break; case 2 : - // SilkSchema.g:279:5: QName Star + // SilkSchema.g:280:5: QName Star { - QName66=(Token)match(input,QName,FOLLOW_QName_in_attributeType1486); - stream_QName.add(QName66); + QName67=(Token)match(input,QName,FOLLOW_QName_in_attributeType1494); + stream_QName.add(QName67); - Star67=(Token)match(input,Star,FOLLOW_Star_in_attributeType1488); - stream_Star.add(Star67); + Star68=(Token)match(input,Star,FOLLOW_Star_in_attributeType1496); + stream_Star.add(Star68); @@ -2564,9 +2570,9 @@ public class SilkSchemaParser extends Parser { RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 279:16: -> TypeName[$QName.text] IsArray[\"true\"] + // 280:16: -> TypeName[$QName.text] IsArray[\"true\"] { - adaptor.addChild(root_0, (Object)adaptor.create(TypeName, (QName66!=null?QName66.getText():null))); + adaptor.addChild(root_0, (Object)adaptor.create(TypeName, (QName67!=null?QName67.getText():null))); adaptor.addChild(root_0, (Object)adaptor.create(IsArray, "true")); } @@ -2599,74 +2605,75 @@ public class SilkSchemaParser extends Parser { - public static final BitSet FOLLOW_Preamble_in_schema873 = new BitSet(new long[]{0x2089000000000002L}); - public static final BitSet FOLLOW_schemaElement_in_schema876 = new BitSet(new long[]{0x2089000000000002L}); - public static final BitSet FOLLOW_classDefinition_in_schemaElement904 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_projectionDef_in_schemaElement911 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_moduleDefinition_in_schemaElement917 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ModuleDef_in_moduleDefinition929 = new BitSet(new long[]{0x208D000000000000L}); - public static final BitSet FOLLOW_schemaElement_in_moduleDefinition931 = new BitSet(new long[]{0x208D000000000000L}); - public static final BitSet FOLLOW_End_in_moduleDefinition934 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Class_in_classDefinition966 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_QName_in_classDefinition968 = new BitSet(new long[]{0x0036804000000000L}); - public static final BitSet FOLLOW_inheritance_in_classDefinition970 = new BitSet(new long[]{0x0036800000000000L}); - public static final BitSet FOLLOW_classBody_in_classDefinition973 = new BitSet(new long[]{0x0004000000000000L}); - public static final BitSet FOLLOW_End_in_classDefinition976 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Relation_in_classDefinition999 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_QName_in_classDefinition1001 = new BitSet(new long[]{0x0036804000000000L}); - public static final BitSet FOLLOW_inheritance_in_classDefinition1003 = new BitSet(new long[]{0x0036800000000000L}); - public static final BitSet FOLLOW_classBody_in_classDefinition1006 = new BitSet(new long[]{0x0004000000000000L}); - public static final BitSet FOLLOW_End_in_classDefinition1009 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_belongsToStatement_in_classBody1038 = new BitSet(new long[]{0x0032800000000002L}); - public static final BitSet FOLLOW_includeStatement_in_classBody1042 = new BitSet(new long[]{0x0032800000000002L}); - public static final BitSet FOLLOW_attributes_in_classBody1046 = new BitSet(new long[]{0x0032800000000002L}); - public static final BitSet FOLLOW_indexStatement_in_classBody1050 = new BitSet(new long[]{0x0032800000000002L}); - public static final BitSet FOLLOW_Projection_in_projectionDef1060 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_QName_in_projectionDef1064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); - public static final BitSet FOLLOW_65_in_projectionDef1066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_QName_in_projectionDef1070 = new BitSet(new long[]{0x0000880000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_projectColumn_in_projectionDef1073 = new BitSet(new long[]{0x0104890000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_Comma_in_projectionDef1076 = new BitSet(new long[]{0x0000880000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_projectColumn_in_projectionDef1079 = new BitSet(new long[]{0x0104890000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_orderByColumns_in_projectionDef1084 = new BitSet(new long[]{0x0004000000000000L}); - public static final BitSet FOLLOW_End_in_projectionDef1087 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_QName_in_projectColumn1119 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Star_in_projectColumn1131 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Symbol_in_projectColumn1143 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_OrderBy_in_orderByColumns1161 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_orderByItem_in_orderByColumns1163 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_Comma_in_orderByColumns1166 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_orderByItem_in_orderByColumns1168 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_QName_in_orderByItem1188 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Symbol_in_orderByItem1200 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Symbol_in_functionArg1216 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_BelongsTo_in_belongsToStatement1232 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_QName_in_belongsToStatement1234 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Lt_in_inheritance1252 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_QName_in_inheritance1254 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Includes_in_includeStatement1271 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_includeItem_in_includeStatement1273 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_Comma_in_includeStatement1276 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_includeItem_in_includeStatement1278 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_QName_in_includeItem1295 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Index_in_indexStatement1310 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_QName_in_indexStatement1312 = new BitSet(new long[]{0x0000800000000000L}); - public static final BitSet FOLLOW_indexTarget_in_indexStatement1314 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_Comma_in_indexStatement1317 = new BitSet(new long[]{0x0000800000000000L}); - public static final BitSet FOLLOW_indexTarget_in_indexStatement1319 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_Symbol_in_indexTarget1347 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_attribute_in_attributes1367 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_Comma_in_attributes1370 = new BitSet(new long[]{0x0000800000000000L}); - public static final BitSet FOLLOW_attribute_in_attributes1372 = new BitSet(new long[]{0x0000010000000002L}); - public static final BitSet FOLLOW_Symbol_in_attribute1399 = new BitSet(new long[]{0x0040000000000002L,0x0000000000000001L}); - public static final BitSet FOLLOW_attributeType_in_attribute1401 = new BitSet(new long[]{0x0040000000000002L}); - public static final BitSet FOLLOW_Default_in_attribute1405 = new BitSet(new long[]{0x0000000260000000L}); - public static final BitSet FOLLOW_attributeValue_in_attribute1407 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_String_in_attributeValue1445 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Double_in_attributeValue1449 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_Integer_in_attributeValue1453 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_QName_in_attributeType1474 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_QName_in_attributeType1486 = new BitSet(new long[]{0x0000080000000000L}); - public static final BitSet FOLLOW_Star_in_attributeType1488 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Preamble_in_schema879 = new BitSet(new long[]{0x4089000000000002L}); + public static final BitSet FOLLOW_schemaElement_in_schema882 = new BitSet(new long[]{0x4089000000000002L}); + public static final BitSet FOLLOW_classDefinition_in_schemaElement910 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_projectionDef_in_schemaElement917 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_moduleDefinition_in_schemaElement923 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ModuleDef_in_moduleDefinition935 = new BitSet(new long[]{0x408D000000000000L}); + public static final BitSet FOLLOW_schemaElement_in_moduleDefinition937 = new BitSet(new long[]{0x408D000000000000L}); + public static final BitSet FOLLOW_End_in_moduleDefinition940 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Class_in_classDefinition972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_classDefinition974 = new BitSet(new long[]{0x0036804000000000L}); + public static final BitSet FOLLOW_inheritance_in_classDefinition976 = new BitSet(new long[]{0x0036800000000000L}); + public static final BitSet FOLLOW_classBody_in_classDefinition979 = new BitSet(new long[]{0x0004000000000000L}); + public static final BitSet FOLLOW_End_in_classDefinition982 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Relation_in_classDefinition1005 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_classDefinition1007 = new BitSet(new long[]{0x0036804000000000L}); + public static final BitSet FOLLOW_inheritance_in_classDefinition1009 = new BitSet(new long[]{0x0036800000000000L}); + public static final BitSet FOLLOW_classBody_in_classDefinition1012 = new BitSet(new long[]{0x0004000000000000L}); + public static final BitSet FOLLOW_End_in_classDefinition1015 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_belongsToStatement_in_classBody1044 = new BitSet(new long[]{0x0032800000000002L}); + public static final BitSet FOLLOW_includeStatement_in_classBody1048 = new BitSet(new long[]{0x0032800000000002L}); + public static final BitSet FOLLOW_attributes_in_classBody1052 = new BitSet(new long[]{0x0032800000000002L}); + public static final BitSet FOLLOW_indexStatement_in_classBody1056 = new BitSet(new long[]{0x0032800000000002L}); + public static final BitSet FOLLOW_Projection_in_projectionDef1066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_projectionDef1070 = new BitSet(new long[]{0x0200000000000000L}); + public static final BitSet FOLLOW_On_in_projectionDef1072 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_projectionDef1076 = new BitSet(new long[]{0x0000880000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_projectColumn_in_projectionDef1079 = new BitSet(new long[]{0x0104890000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_Comma_in_projectionDef1082 = new BitSet(new long[]{0x0000880000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_projectColumn_in_projectionDef1085 = new BitSet(new long[]{0x0104890000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_orderByColumns_in_projectionDef1090 = new BitSet(new long[]{0x0004000000000000L}); + public static final BitSet FOLLOW_End_in_projectionDef1093 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_projectColumn1125 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Star_in_projectColumn1137 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Symbol_in_projectColumn1149 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_OrderBy_in_orderByColumns1167 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_orderByItem_in_orderByColumns1169 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_Comma_in_orderByColumns1172 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_orderByItem_in_orderByColumns1174 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_QName_in_orderByItem1194 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Symbol_in_orderByItem1206 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Symbol_in_functionArg1222 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BelongsTo_in_belongsToStatement1238 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_belongsToStatement1240 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Lt_in_inheritance1258 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_inheritance1260 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Includes_in_includeStatement1277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_includeItem_in_includeStatement1279 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_Comma_in_includeStatement1282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_includeItem_in_includeStatement1284 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_QName_in_includeItem1301 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Index_in_indexStatement1316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_indexStatement1318 = new BitSet(new long[]{0x0200000000000000L}); + public static final BitSet FOLLOW_On_in_indexStatement1320 = new BitSet(new long[]{0x0000800000000000L}); + public static final BitSet FOLLOW_indexTarget_in_indexStatement1322 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_Comma_in_indexStatement1325 = new BitSet(new long[]{0x0000800000000000L}); + public static final BitSet FOLLOW_indexTarget_in_indexStatement1327 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_Symbol_in_indexTarget1355 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_attribute_in_attributes1375 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_Comma_in_attributes1378 = new BitSet(new long[]{0x0000800000000000L}); + public static final BitSet FOLLOW_attribute_in_attributes1380 = new BitSet(new long[]{0x0000010000000002L}); + public static final BitSet FOLLOW_Symbol_in_attribute1407 = new BitSet(new long[]{0x0040000000000002L,0x0000000000000002L}); + public static final BitSet FOLLOW_attributeType_in_attribute1409 = new BitSet(new long[]{0x0040000000000002L}); + public static final BitSet FOLLOW_Default_in_attribute1413 = new BitSet(new long[]{0x0000000260000000L}); + public static final BitSet FOLLOW_attributeValue_in_attribute1415 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_String_in_attributeValue1453 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Double_in_attributeValue1457 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_Integer_in_attributeValue1461 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_attributeType1482 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_QName_in_attributeType1494 = new BitSet(new long[]{0x0000080000000000L}); + public static final BitSet FOLLOW_Star_in_attributeType1496 = new BitSet(new long[]{0x0000000000000002L}); } \ No newline at end of file diff --git a/src/main/java/org/xerial/util/bean/BeanErrorCode.java b/src/main/java/org/xerial/util/bean/BeanErrorCode.java index bd1a075..d7dacc8 100644 --- a/src/main/java/org/xerial/util/bean/BeanErrorCode.java +++ b/src/main/java/org/xerial/util/bean/BeanErrorCode.java @@ -39,58 +39,41 @@ public enum BeanErrorCode implements ErrorCode { NoMoreSubtree, // XML - InvalidXMLData, - ParserError, - UnsupportedXMLDataType, + InvalidXMLData, ParserError, UnsupportedXMLDataType, // JSON - InvalidJSONData, - InvalidJSONArray, + InvalidJSONData, InvalidJSONArray, UnsupportedDataType, // Bean class - InvalidBeanClass, - IllegalArgument, - IllegalAccess, - NoPublicConstructor, - InstantiationFailure, - InvalidNumberFormat, - InvocationTargetException, + InvalidBeanClass, IllegalArgument, IllegalAccess, NoPublicConstructor, InstantiationFailure, InvalidNumberFormat, InvocationTargetException, BeanObjectIsNull, // binder - GetterCannotBeUsedToBindData, - BindFailure, - UnknownBeanUpdator, - InvalidKeyAndValuePair, - MapContainerIsNotFound, - MapElementConstructionFailed, - InvalidDateFormat, - InvalidFormat, - InvalidType; + GetterCannotBeUsedToBindData, BindFailure, UnknownBeanUpdator, InvalidKeyAndValuePair, MapContainerIsNotFound, MapElementConstructionFailed, InvalidDateFormat, InvalidFormat, InvalidType; private final String description; - BeanErrorCode(String description) - { + BeanErrorCode(String description) { this.description = description; } - BeanErrorCode() - { + BeanErrorCode() { this.description = EMPTY_DESCRIPTION; } - public String getCodeName() - { + public String getCodeName() { return name(); } - public String getDescription() - { + public String getDescription() { return description; } + public Enum< ? > getCode() { + return this; + } + } diff --git a/src/main/java/org/xerial/util/opt/Argument.java b/src/main/java/org/xerial/util/opt/Argument.java index af4a8ff..8d05dec 100644 --- a/src/main/java/org/xerial/util/opt/Argument.java +++ b/src/main/java/org/xerial/util/opt/Argument.java @@ -47,7 +47,7 @@ public @interface Argument { /** * This argument is required or not */ - boolean required() default true; + boolean required() default false; /** * argument index (0-origin) among the arguments without option prefix, "-" diff --git a/src/main/java/org/xerial/util/opt/OptionItem.java b/src/main/java/org/xerial/util/opt/OptionItem.java index 6998a6f..45b6d33 100644 --- a/src/main/java/org/xerial/util/opt/OptionItem.java +++ b/src/main/java/org/xerial/util/opt/OptionItem.java @@ -35,13 +35,11 @@ import org.xerial.util.bean.TypeInfo; * @author leo * */ -public class OptionItem -{ - private final Option optionDescriptor; +public class OptionItem { + private final Option optionDescriptor; private final OptionSetter optionSetter; - public OptionItem(Method method) - { + public OptionItem(Method method) { Option option = method.getAnnotation(Option.class); if (option == null) throw new IllegalArgumentException(method + " is not an option item"); @@ -50,8 +48,7 @@ public class OptionItem this.optionSetter = new OptionSetterViaMethod(method); } - public OptionItem(Field field) - { + public OptionItem(Field field) { Option option = field.getAnnotation(Option.class); if (option == null) throw new IllegalArgumentException(field + " is not an option item"); @@ -61,10 +58,8 @@ public class OptionItem } @Override - public boolean equals(Object obj) - { - if (obj instanceof OptionItem) - { + public boolean equals(Object obj) { + if (obj instanceof OptionItem) { OptionItem other = (OptionItem) obj; return optionDescriptor.equals(other.optionDescriptor); } @@ -73,38 +68,31 @@ public class OptionItem } @Override - public int hashCode() - { + public int hashCode() { return optionDescriptor.hashCode(); } - public boolean needsArgument() - { + public boolean needsArgument() { return optionSetter.takesArgument(); } - public boolean hasSymbol() - { + public boolean hasSymbol() { return optionDescriptor.symbol() != null && optionDescriptor.symbol().length() > 0; } - public boolean hasLongName() - { + public boolean hasLongName() { return optionDescriptor.longName() != null && optionDescriptor.longName().length() > 0; } - public Option getOption() - { + public Option getOption() { return optionDescriptor; } - public boolean takesMultipleArguments() - { + public boolean takesMultipleArguments() { return TypeInfo.isCollection(optionSetter.getOptionDataType()); } - public void setOption(Object bean, String value) throws OptionParserException - { + public void setOption(Object bean, String value) throws OptionParserException { optionSetter.setOption(bean, value); // Class< ? > optionType = optionSetter.getOptionDataType(); @@ -120,15 +108,13 @@ public class OptionItem } - public void initialize(Object optionHolder) throws OptionParserException - { + public void initialize(Object optionHolder) throws OptionParserException { optionSetter.initialize(optionHolder); } @Override - public String toString() - { - return String.format("symbol=%s, longName=%s, description=%s", optionDescriptor.symbol(), optionDescriptor + public String toString() { + return String.format("-%s, --%s :%s", optionDescriptor.symbol(), optionDescriptor .longName(), optionDescriptor.description()); } } diff --git a/src/main/java/org/xerial/util/opt/OptionParser.java b/src/main/java/org/xerial/util/opt/OptionParser.java index b04db6a..be7be3a 100644 --- a/src/main/java/org/xerial/util/opt/OptionParser.java +++ b/src/main/java/org/xerial/util/opt/OptionParser.java @@ -31,7 +31,11 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import org.xerial.core.XerialError; import org.xerial.core.XerialErrorCode; +import org.xerial.util.bean.BeanErrorCode; +import org.xerial.util.bean.BeanException; +import org.xerial.util.bean.TypeInfo; /** * A command-line option and argument parser @@ -39,8 +43,7 @@ import org.xerial.core.XerialErrorCode; * @author leo * */ -public class OptionParser -{ +public class OptionParser { private final OptionSchema schema; private final Object optionHolder; @@ -49,44 +52,53 @@ public class OptionParser private HashSet activatedArgument = new HashSet(); private List unusedArgument = new ArrayList(); - public OptionParser(T optionHolder) - { + public OptionParser(T optionHolder) { this.optionHolder = optionHolder; schema = OptionSchema.newOptionSchema(optionHolder); } - OptionItem findOptionItem(OptionSchema schema, String optionName) throws OptionParserException - { + public OptionParser(Class optionHolderType) { + try { + this.optionHolder = TypeInfo.createInstance(optionHolderType); + } + catch (BeanException e) { + throw new XerialError(XerialErrorCode.INVALID_ARGUMENT, e); + } + + schema = OptionSchema.newOptionSchema(optionHolder); + } + + @SuppressWarnings("unchecked") + public T getOptionHolder() { + return (T) optionHolder; + } + + OptionItem findOptionItem(OptionSchema schema, String optionName) throws OptionParserException { OptionItem optionItem = schema.getOption(optionName); - if (optionItem == null) - { - if (!ignoreUnknownOption) - { - throw new OptionParserException(XerialErrorCode.SYNTAX_ERROR, "unknown option: " + optionName); + if (optionItem == null) { + if (!ignoreUnknownOption) { + throw new OptionParserException(XerialErrorCode.SYNTAX_ERROR, "unknown option: " + + optionName); } } return optionItem; } - public void printUsage() - { + public void printUsage() { printUsage(System.out); } - public void printUsage(Writer out) - { + public void printUsage(Writer out) { assert schema != null; schema.printUsage(out); } - public void printUsage(OutputStream out) - { + public void printUsage(OutputStream out) { assert schema != null; schema.printUsage(out); } - public String getUsage() - { + public String getUsage() { StringWriter buf = new StringWriter(); printUsage(buf); return buf.toString(); @@ -98,8 +110,7 @@ public class OptionParser * * @return */ - public String[] getUnusedArguments() - { + public String[] getUnusedArguments() { String[] result = new String[unusedArgument.size()]; for (int i = 0; i < unusedArgument.size(); ++i) result[i] = unusedArgument.get(i); @@ -117,8 +128,7 @@ public class OptionParser * options are found. * @throws OptionParserException */ - public void parse(String[] args, boolean ignoreUnknownOption) throws OptionParserException - { + public void parse(String[] args, boolean ignoreUnknownOption) throws OptionParserException { setIgnoreUnknownOption(ignoreUnknownOption); parse(args); } @@ -130,40 +140,33 @@ public class OptionParser * @param args * @throws OptionParserException */ - public void parse(String[] args) throws OptionParserException - { + public void parse(String[] args) throws OptionParserException { // clear unusedArgument.clear(); activatedOption.clear(); activatedArgument.clear(); // initialize collections in the OptionHolder - for (OptionItem each : schema.getOptionItemList()) - { + for (OptionItem each : schema.getOptionItemList()) { each.initialize(optionHolder); } - for (ArgumentItem each : schema.getArgumentItemList()) - { + for (ArgumentItem each : schema.getArgumentItemList()) { each.initialize(optionHolder); } int index = 0; // index in the args array int argIndex = 0; // argument index - for (; index < args.length; index++) - { + for (; index < args.length; index++) { String currentArg = args[index]; - if (currentArg.startsWith("--")) - { + if (currentArg.startsWith("--")) { // long name option int splitPos = currentArg.indexOf('='); - if (splitPos == -1) - { + if (splitPos == -1) { // no value is found String longOptionName = currentArg.substring(2); OptionItem optionItem = findOptionItem(schema, longOptionName); - if (optionItem == null) - { + if (optionItem == null) { unusedArgument.add(currentArg); continue; } @@ -174,91 +177,89 @@ public class OptionParser optionItem.setOption(optionHolder, "true"); - if (!optionItem.takesMultipleArguments() && activatedOption.contains(optionItem.getOption())) - throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, optionItem.getOption() - .toString()); + if (!optionItem.takesMultipleArguments() + && activatedOption.contains(optionItem.getOption())) + throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, + optionItem.getOption().toString()); activatedOption.add(optionItem.getOption()); } - else - { + else { // option is a (key, value) pair String longOptionName = currentArg.substring(2, splitPos); String value = currentArg.substring(splitPos + 1); OptionItem optionItem = findOptionItem(schema, longOptionName); - if (optionItem == null) - { + if (optionItem == null) { unusedArgument.add(currentArg); continue; } - if (!optionItem.needsArgument()) - { - throw new OptionParserException(XerialErrorCode.SYNTAX_ERROR, "syntax error --" - + longOptionName); + if (!optionItem.needsArgument()) { + throw new OptionParserException(XerialErrorCode.SYNTAX_ERROR, + "syntax error --" + longOptionName); } optionItem.setOption(optionHolder, value); - if (!optionItem.takesMultipleArguments() && activatedOption.contains(optionItem.getOption())) - throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, optionItem.getOption() - .toString()); + if (!optionItem.takesMultipleArguments() + && activatedOption.contains(optionItem.getOption())) + throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, + optionItem.getOption().toString()); activatedOption.add(optionItem.getOption()); } } - else if (currentArg.startsWith("-")) - { + else if (currentArg.startsWith("-")) { // option with a leading hyphen (e.g. "-txvf" is equivalent to "-t", "-x", "-v" and "-f") String shortOptionList = currentArg.substring(1); - for (int i = 0; i < shortOptionList.length(); i++) - { + for (int i = 0; i < shortOptionList.length(); i++) { String shortOptionName = shortOptionList.substring(i, i + 1); OptionItem optionItem = findOptionItem(schema, shortOptionName); - if (optionItem == null) - { + if (optionItem == null) { unusedArgument.add(currentArg); continue; } - if (optionItem.needsArgument()) - { + if (optionItem.needsArgument()) { if (shortOptionList.length() != 1) - throw new OptionParserException(XerialErrorCode.SYNTAX_ERROR, String.format( - "short name option -%s with an arguments must be a single notation", - shortOptionName)); - - optionItem.setOption(optionHolder, args[++index]); + throw new OptionParserException( + XerialErrorCode.SYNTAX_ERROR, + String + .format( + "short name option -%s with an arguments must be a single notation", + shortOptionName)); + + setOption(optionItem, args[++index]); } else - optionItem.setOption(optionHolder, "true"); + setOption(optionItem, "true"); - if (!optionItem.takesMultipleArguments() && activatedOption.contains(optionItem.getOption())) - throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, optionItem.getOption() - .toString()); + if (!optionItem.takesMultipleArguments() + && activatedOption.contains(optionItem.getOption())) + throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, + optionItem.getOption().toString()); activatedOption.add(optionItem.getOption()); } } - else - { + else { // general argument ArgumentItem argItem = schema.getArgument(argIndex); - if (argItem == null) - { - if (ignoreUnknownOption) - { + if (argItem == null) { + if (ignoreUnknownOption) { unusedArgument.add(currentArg); continue; } else - throw new OptionParserException(XerialErrorCode.SYNTAX_ERROR, "unused argument: " + currentArg); + throw new OptionParserException(XerialErrorCode.SYNTAX_ERROR, + "unused argument: " + currentArg); } argItem.set(optionHolder, currentArg); - if (!argItem.takesMultipleArguments() && activatedArgument.contains(argItem.getArgumentDescriptor())) - throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, argItem.getArgumentDescriptor() - .toString()); + if (!argItem.takesMultipleArguments() + && activatedArgument.contains(argItem.getArgumentDescriptor())) + throw new OptionParserException(XerialErrorCode.DUPLICATE_OPTION, argItem + .getArgumentDescriptor().toString()); activatedArgument.add(argItem.getArgumentDescriptor()); argIndex++; @@ -267,11 +268,30 @@ public class OptionParser } // verify missing options & arguments - for (ArgumentItem argItem : schema.getArgumentItemList()) - { + for (ArgumentItem argItem : schema.getArgumentItemList()) { if (argItem.getArgumentDescriptor().required() && !activatedArgument.contains(argItem.getArgumentDescriptor())) - throw new OptionParserException(XerialErrorCode.MISSING_ARGUMENT, argItem.toString()); + throw new OptionParserException(XerialErrorCode.MISSING_ARGUMENT, argItem + .toString()); + } + } + + private void setOption(OptionItem item, String value) throws OptionParserException { + try { + item.setOption(optionHolder, value); + } + catch (OptionParserException e) { + if (BeanErrorCode.class.isInstance(e.getErrorCode())) { + BeanErrorCode be = BeanErrorCode.class.cast(e.getErrorCode()); + switch (be) { + case InvalidFormat: + throw new OptionParserException(XerialErrorCode.INVALID_ARGUMENT, String + .format("cannot set %s to %s", value, item.toString())); + } + + } + + throw e; } } @@ -281,8 +301,7 @@ public class OptionParser * * @param ignore */ - public void setIgnoreUnknownOption(boolean ignore) - { + public void setIgnoreUnknownOption(boolean ignore) { ignoreUnknownOption = ignore; } diff --git a/src/main/java/org/xerial/util/opt/OptionParserException.java b/src/main/java/org/xerial/util/opt/OptionParserException.java index 52fd45c..0a57045 100644 --- a/src/main/java/org/xerial/util/opt/OptionParserException.java +++ b/src/main/java/org/xerial/util/opt/OptionParserException.java @@ -34,31 +34,31 @@ import org.xerial.core.XerialException; * @author leo * */ -public class OptionParserException extends XerialException -{ +public class OptionParserException extends XerialException { /** * Comment for serialVersionUID */ private static final long serialVersionUID = 1L; - public OptionParserException(ErrorCode errorCode, String message, Throwable cause) - { + public OptionParserException(ErrorCode errorCode, String message, Throwable cause) { super(errorCode, message, cause); } - public OptionParserException(ErrorCode errorCode, String message) - { + public OptionParserException(ErrorCode errorCode, String message) { super(errorCode, message); } - public OptionParserException(ErrorCode errorCode, Throwable cause) - { + public OptionParserException(ErrorCode errorCode, Throwable cause) { super(errorCode, cause); } - public OptionParserException(ErrorCode errorCode) - { + public OptionParserException(ErrorCode errorCode) { super(errorCode); } + @Override + public String getMessage() { + + return super.getMessage(); + } } diff --git a/src/main/java/org/xerial/util/opt/OptionSchema.java b/src/main/java/org/xerial/util/opt/OptionSchema.java index 5bf3e1a..ffc76e1 100644 --- a/src/main/java/org/xerial/util/opt/OptionSchema.java +++ b/src/main/java/org/xerial/util/opt/OptionSchema.java @@ -53,55 +53,45 @@ import org.xerial.util.template.Template; * @author leo * */ -public class OptionSchema -{ - private final ArrayList optionItemList = new ArrayList(); +public class OptionSchema { + private final ArrayList optionItemList = new ArrayList(); private final ArrayList argumentItemList = new ArrayList(); - private Usage usage = null; + private Usage usage = null; - List getOptionItemList() - { + List getOptionItemList() { return optionItemList; } - List getArgumentItemList() - { + List getArgumentItemList() { return argumentItemList; } - Usage getUsage() - { + Usage getUsage() { return usage; } - protected static String optionDescription(OptionItem optionItem) - { + protected static String optionDescription(OptionItem optionItem) { StringBuilder line = new StringBuilder(); Option opt = optionItem.getOption(); - if (optionItem.hasSymbol()) - { + if (optionItem.hasSymbol()) { line.append(String.format("-%s", opt.symbol())); - if (optionItem.hasLongName()) - { + if (optionItem.hasLongName()) { line.append(String.format(", --%s", opt.longName())); if (optionItem.needsArgument()) line.append(String.format("=%s", opt.varName())); } - else - { + else { if (optionItem.needsArgument()) line.append(String.format(" ", opt.varName())); } } - else if (optionItem.hasLongName()) - { + else if (optionItem.hasLongName()) { line.append(String.format(" --%s", opt.longName())); if (optionItem.needsArgument()) line.append(String.format("=%s", opt.varName())); } - else - { + else { throw new XerialError(XerialErrorCode.NO_OPTION, optionItem.toString()); } @@ -109,8 +99,7 @@ public class OptionSchema } - protected static String argumentExpression(ArgumentItem argItem) - { + protected static String argumentExpression(ArgumentItem argItem) { StringBuilder line = new StringBuilder(); Argument arg = argItem.getArgumentDescriptor(); @@ -128,8 +117,7 @@ public class OptionSchema return line.toString(); } - public void printUsage(OutputStream out) - { + public void printUsage(OutputStream out) { printUsage(new OutputStreamWriter(out)); } @@ -137,45 +125,42 @@ public class OptionSchema COMMAND, ARGUMENT_LIST, DESCRIPTION, OPTION_LIST } - public void printUsage(Writer out) - { + public void printUsage(Writer out) { Properties helpMessageTemplateValue = new Properties(); // argument list Collections.sort(argumentItemList, new Comparator() { - public int compare(ArgumentItem o1, ArgumentItem o2) - { + public int compare(ArgumentItem o1, ArgumentItem o2) { return o1.getRange().compareTo(o2.getRange()); } }); - List argExpressionList = Algorithm.map(argumentItemList, new Mapper() { - public String map(ArgumentItem input) - { - return argumentExpression(input); - } - }); + List argExpressionList = Algorithm.map(argumentItemList, + new Mapper() { + public String map(ArgumentItem input) { + return argumentExpression(input); + } + }); // usage information - if (usage != null) - { + if (usage != null) { helpMessageTemplateValue.put(TemplateVariable.COMMAND.name(), usage.command()); if (usage.description() != null && usage.description().length() > 0) - helpMessageTemplateValue.put(TemplateVariable.DESCRIPTION.name(), usage.description()); + helpMessageTemplateValue.put(TemplateVariable.DESCRIPTION.name(), usage + .description()); } - helpMessageTemplateValue.put(TemplateVariable.ARGUMENT_LIST.name(), StringUtil.join(argExpressionList, " ")); + helpMessageTemplateValue.put(TemplateVariable.ARGUMENT_LIST.name(), StringUtil.join( + argExpressionList, " ")); // option list Collections.sort(optionItemList, new Comparator() { - public int compare(OptionItem o1, OptionItem o2) - { + public int compare(OptionItem o1, OptionItem o2) { Option opt1 = o1.getOption(); Option opt2 = o2.getOption(); // prefer options that have a short name - if (o1.hasSymbol()) - { + if (o1.hasSymbol()) { if (!o2.hasSymbol()) return -1; } @@ -190,12 +175,12 @@ public class OptionSchema } }); - List descriptionList = Algorithm.map(optionItemList, new Mapper() { - public String map(OptionItem input) - { - return optionDescription(input); - } - }); + List descriptionList = Algorithm.map(optionItemList, + new Mapper() { + public String map(OptionItem input) { + return optionDescription(input); + } + }); int maxDescriptionLength = 15; for (String each : descriptionList) @@ -205,34 +190,32 @@ public class OptionSchema String optionHelpFormat = String.format(" %%-%ds %%s", maxDescriptionLength); StringWriter optionListHelpWriter = new StringWriter(); - for (int i = 0; i < optionItemList.size(); ++i) - { + for (int i = 0; i < optionItemList.size(); ++i) { OptionItem optionItem = optionItemList.get(i); String optionHelp = descriptionList.get(i); - String line = String.format(optionHelpFormat, optionHelp, optionItem.getOption().description()); + String line = String.format(optionHelpFormat, optionHelp, optionItem.getOption() + .description()); optionListHelpWriter.append(line); optionListHelpWriter.append(StringUtil.newline()); } - helpMessageTemplateValue.put(TemplateVariable.OPTION_LIST.name(), optionListHelpWriter.toString()); + helpMessageTemplateValue.put(TemplateVariable.OPTION_LIST.name(), optionListHelpWriter + .toString()); // render help messages using template - ResourcePath rp = usage != null ? new ResourcePath(usage.templatePath()) : new ResourcePath( - Usage.DEFAULT_TEMPLATE); + ResourcePath rp = new ResourcePath(usage != null ? usage.templatePath() + : Usage.DEFAULT_TEMPLATE); - try - { + try { Template helpMessageTemplate = new Template(rp.openBinaryStream()); String helpMessage = helpMessageTemplate.apply(helpMessageTemplateValue); out.append(helpMessage); out.flush(); } - catch (IOException e) - { + catch (IOException e) { throw new XerialError(XerialErrorCode.OUTPUT_ERROR, e); } - catch (XerialException e) - { + catch (XerialException e) { throw new XerialError(e); } @@ -242,10 +225,8 @@ public class OptionSchema * @param optionName * @return */ - public OptionItem getOption(String optionName) - { - for (OptionItem eachOption : optionItemList) - { + public OptionItem getOption(String optionName) { + for (OptionItem eachOption : optionItemList) { Option opt = eachOption.getOption(); if (optionName.equals(opt.symbol())) return eachOption; @@ -258,10 +239,8 @@ public class OptionSchema return null; } - public ArgumentItem getArgument(int argumentIndex) - { - for (ArgumentItem each : argumentItemList) - { + public ArgumentItem getArgument(int argumentIndex) { + for (ArgumentItem each : argumentItemList) { Argument arg = each.getArgumentDescriptor(); if (arg.index() == argumentIndex) return each; @@ -272,37 +251,31 @@ public class OptionSchema return null; } - public void addOptionItem(Method setter) - { + public void addOptionItem(Method setter) { OptionItem newOption = new OptionItem(setter); optionItemList.add(newOption); } - public void addOptionItem(Field field) - { + public void addOptionItem(Field field) { OptionItem newOption = new OptionItem(field); optionItemList.add(newOption); } - public void addArgumentItem(Method setter) - { + public void addArgumentItem(Method setter) { ArgumentItem newArg = new ArgumentItem(setter); validate(newArg); argumentItemList.add(newArg); } - public void addArgumentItem(Field field) - { + public void addArgumentItem(Field field) { ArgumentItem newArg = new ArgumentItem(field); validate(newArg); argumentItemList.add(newArg); } - private void validate(ArgumentItem newArg) - { + private void validate(ArgumentItem newArg) { Range newRange = newArg.getRange(); - for (ArgumentItem each : argumentItemList) - { + for (ArgumentItem each : argumentItemList) { Range r = each.getRange(); if (r.overlaps(newRange)) throw new XerialError(XerialErrorCode.DUPLICATE_OPTION, String.format( @@ -310,17 +283,14 @@ public class OptionSchema } } - public static OptionSchema newOptionSchema(Class< ? > optionHolderType) - { + public static OptionSchema newOptionSchema(Class< ? > optionHolderType) { OptionSchema optionSchema = new OptionSchema(); // traverses through super classes for (Class< ? > optionHolderClass = optionHolderType; optionHolderClass != null; optionHolderClass = optionHolderClass - .getSuperclass()) - { + .getSuperclass()) { // looks for bean methods annotated with Option or Argument - for (Method eachMethod : optionHolderClass.getDeclaredMethods()) - { + for (Method eachMethod : optionHolderClass.getDeclaredMethods()) { if (eachMethod.getAnnotation(Option.class) != null) optionSchema.addOptionItem(eachMethod); @@ -329,8 +299,7 @@ public class OptionSchema } // looks for bean fields annotated with Option or Argument - for (Field f : optionHolderClass.getDeclaredFields()) - { + for (Field f : optionHolderClass.getDeclaredFields()) { if (f.getAnnotation(Option.class) != null) optionSchema.addOptionItem(f); @@ -338,8 +307,7 @@ public class OptionSchema optionSchema.addArgumentItem(f); } - if (optionHolderClass.getAnnotation(Usage.class) != null) - { + if (optionHolderClass.getAnnotation(Usage.class) != null) { optionSchema.setUsage(optionHolderClass); } } @@ -347,8 +315,7 @@ public class OptionSchema return optionSchema; } - private void setUsage(Class< ? > optionHolderClass) - { + private void setUsage(Class< ? > optionHolderClass) { Usage newUsage = optionHolderClass.getAnnotation(Usage.class); if (newUsage == null) throw new XerialError(XerialErrorCode.NO_USAGE_ANNOTATION, optionHolderClass.toString()); @@ -357,8 +324,7 @@ public class OptionSchema usage = newUsage; } - public static OptionSchema newOptionSchema(OptionHolder optionHolder) - { + public static OptionSchema newOptionSchema(OptionHolder optionHolder) { return newOptionSchema(optionHolder.getClass()); } diff --git a/src/main/java/org/xerial/util/opt/ShellError.java b/src/main/java/org/xerial/util/opt/ShellError.java index c5fef3f..fed6589 100644 --- a/src/main/java/org/xerial/util/opt/ShellError.java +++ b/src/main/java/org/xerial/util/opt/ShellError.java @@ -34,24 +34,24 @@ public enum ShellError implements ErrorCode { private final String description; - private ShellError() - { + private ShellError() { this.description = ""; } - private ShellError(String description) - { + private ShellError(String description) { this.description = description; } - public String getCodeName() - { + public String getCodeName() { return name(); } - public String getDescription() - { + public String getDescription() { return description; } + public Enum< ? > getCode() { + return this; + } + } diff --git a/src/main/java/org/xerial/util/opt/help-message.template b/src/main/java/org/xerial/util/opt/help-message.template index 5c0de4b..069a262 100644 --- a/src/main/java/org/xerial/util/opt/help-message.template +++ b/src/main/java/org/xerial/util/opt/help-message.template @@ -1,5 +1,5 @@ usage: $COMMAND$ $ARGUMENT_LIST$ $DESCRIPTION$ -[options] +[available options] $OPTION_LIST$ diff --git a/src/main/java/org/xerial/util/xml/XMLErrorCode.java b/src/main/java/org/xerial/util/xml/XMLErrorCode.java index 6e01366..778de36 100644 --- a/src/main/java/org/xerial/util/xml/XMLErrorCode.java +++ b/src/main/java/org/xerial/util/xml/XMLErrorCode.java @@ -34,33 +34,28 @@ import org.xerial.core.ErrorCode; */ public enum XMLErrorCode implements ErrorCode { - INVALID_XML_STRUCTURE, - NO_MORE_TAG_TO_CLOSE, - PARSE_ERROR, - SAX_ERROR, - INVALID_PARSER_CONFIGURATION, - FAILED_TO_CREATE_XML_PARSER; + INVALID_XML_STRUCTURE, NO_MORE_TAG_TO_CLOSE, PARSE_ERROR, SAX_ERROR, INVALID_PARSER_CONFIGURATION, FAILED_TO_CREATE_XML_PARSER; private final String description; - private XMLErrorCode() - { + private XMLErrorCode() { this.description = EMPTY_DESCRIPTION; } - private XMLErrorCode(String description) - { + private XMLErrorCode(String description) { this.description = description; } - public String getCodeName() - { + public String getCodeName() { return name(); } - public String getDescription() - { + public String getDescription() { return description; } + public Enum< ? > getCode() { + return this; + } + } diff --git a/src/test/java/org/xerial/lens/LensTest.java b/src/test/java/org/xerial/lens/LensTest.java index 20e43ff..00db13b 100644 --- a/src/test/java/org/xerial/lens/LensTest.java +++ b/src/test/java/org/xerial/lens/LensTest.java @@ -24,7 +24,8 @@ //-------------------------------------- package org.xerial.lens; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.util.ArrayList; @@ -35,6 +36,7 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.xerial.core.XerialException; +import org.xerial.silk.SilkParser; import org.xerial.silk.SilkUtilTest; import org.xerial.util.FileResource; import org.xerial.util.HashedArrayList; @@ -323,4 +325,47 @@ public class LensTest { assertEquals("{\"list\":[]}", Lens.toJSON(d)); } + public static class MyGene { + public String name; + public long start; + public String link; + } + + public static class MyGeneQuery { + private List geneList = new ArrayList(); + + public void addGene_Coordinate(MyGene gene, Chr c) { + if (c.name.equals("chr1")) + geneList.add(gene); + } + + public List getGeneList() { + return geneList; + } + } + + public static class Chr { + public String name; + } + + @Test + public void testLens() throws Exception { + + MyGeneQuery result = Lens.loadSilk(MyGeneQuery.class, FileResource.open(LensTest.class, + "sequence.silk")); + + _logger.debug(Lens.toJSON(result)); + } + + @Test + public void testFind() throws Exception { + Lens.find(MyGene.class, "gene", new SilkParser(FileResource.find(LensTest.class, + "sequence.silk")), new ObjectHandler() { + + public void handle(MyGene input) throws Exception { + _logger.info(Lens.toJSON(input)); + } + }); + } + } diff --git a/src/test/java/org/xerial/silk/schema/SilkSchemaTest.java b/src/test/java/org/xerial/silk/schema/SilkSchemaTest.java index b711a6b..4c10800 100644 --- a/src/test/java/org/xerial/silk/schema/SilkSchemaTest.java +++ b/src/test/java/org/xerial/silk/schema/SilkSchemaTest.java @@ -24,7 +24,9 @@ //-------------------------------------- package org.xerial.silk.schema; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import org.junit.After; import org.junit.Before; @@ -107,6 +109,9 @@ public class SilkSchemaTest { public void buildQuery() throws Exception { SilkSchema schema = SilkSchema.parse(FileResource.open(SilkSchemaTest.class, "read.silk")); + + _logger.info(Lens.toJSON(schema)); + QuerySet qs = schema.buildAmoebaJoinQuery(); _logger.info(qs); @@ -119,7 +124,7 @@ public class SilkSchemaTest { public void newAmoeba(Schema schema, Node coreNode, Node attributeNode) throws Exception { - _logger.info(String.format("amoeba (%s, %s)", coreNode, attributeNode)); + _logger.trace(String.format("amoeba (%s, %s)", coreNode, attributeNode)); } public void text(Schema schema, Node coreNode, Node textNode, String text) diff --git a/src/test/java/org/xerial/silk/schema/read.silk b/src/test/java/org/xerial/silk/schema/read.silk index f8f9183..14d4ce2 100644 --- a/src/test/java/org/xerial/silk/schema/read.silk +++ b/src/test/java/org/xerial/silk/schema/read.silk @@ -19,7 +19,7 @@ class Locus # :zvalue zvalue(:start, :end) :strand - index keyword :name + index keyword on :name end # reference sequence diff --git a/src/test/java/org/xerial/util/opt/OptionParserTest.java b/src/test/java/org/xerial/util/opt/OptionParserTest.java index e657c77..de6686d 100644 --- a/src/test/java/org/xerial/util/opt/OptionParserTest.java +++ b/src/test/java/org/xerial/util/opt/OptionParserTest.java @@ -39,33 +39,28 @@ import org.junit.Test; import org.xerial.util.log.LogLevel; import org.xerial.util.log.Logger; -public class OptionParserTest -{ +public class OptionParserTest { private static Logger _logger = Logger.getLogger(OptionParserTest.class); @Before - public void setUp() throws Exception - {} + public void setUp() throws Exception {} @After - public void tearDown() throws Exception - {} + public void tearDown() throws Exception {} - class MyOption - { + class MyOption { @Option(symbol = "h", longName = "help", description = "display help message") - private boolean displayHelp; + private boolean displayHelp; - @Argument(index = 0) - private String subCommand; + @Argument(index = 0, required = true) + private String subCommand; @Argument(name = "input_file", index = 1, required = false) private List fileList; } @Test - public void optionBinding() throws OptionParserException - { + public void optionBinding() throws OptionParserException { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); @@ -81,8 +76,7 @@ public class OptionParserTest } @Test - public void printUsage() - { + public void printUsage() { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); @@ -93,10 +87,8 @@ public class OptionParserTest } @Test - public void testDuplicatedOptionFlag() - { - try - { + public void testDuplicatedOptionFlag() { + try { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); @@ -104,17 +96,14 @@ public class OptionParserTest fail("must detect the presence of duplicated option flags"); } - catch (OptionParserException e) - { + catch (OptionParserException e) { } } @Test - public void testDuplicatedLongOptionFlag() - { - try - { + public void testDuplicatedLongOptionFlag() { + try { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); @@ -122,17 +111,14 @@ public class OptionParserTest fail("must detect the presence of duplicated option flags"); } - catch (OptionParserException e) - { + catch (OptionParserException e) { } } @Test - public void detectMissingArgument() - { - try - { + public void detectMissingArgument() { + try { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); @@ -140,16 +126,14 @@ public class OptionParserTest fail("must detect some argument is missing"); } - catch (OptionParserException e) - { + catch (OptionParserException e) { } } @Test - public void initializeCollectionsInOptionHolder() throws OptionParserException - { + public void initializeCollectionsInOptionHolder() throws OptionParserException { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); @@ -162,15 +146,13 @@ public class OptionParserTest } - class LoglevelCommand - { + class LoglevelCommand { @Option(symbol = "l", longName = "loglevel", varName = "LOG_LEVEL") private LogLevel loglevel = LogLevel.INFO; } @Test - public void enumOption() throws OptionParserException - { + public void enumOption() throws OptionParserException { LoglevelCommand opt = new LoglevelCommand(); OptionParser parser = new OptionParser(opt); parser.parse(new String[] { "--loglevel=DEBUG" }); @@ -178,15 +160,13 @@ public class OptionParserTest assertEquals(LogLevel.DEBUG, opt.loglevel); } - class MultipleName - { + class MultipleName { @Option(longName = "name") private List name; } @Test - public void mulpleOptionOccurences() throws OptionParserException - { + public void mulpleOptionOccurences() throws OptionParserException { MultipleName mn = new MultipleName(); OptionParser parser = new OptionParser(mn); parser.parse(new String[] { "--name=leo", "--name=yui" }); @@ -197,18 +177,16 @@ public class OptionParserTest assertEquals("yui", mn.name.get(1)); } - class IntArg - { + class IntArg { @Option(symbol = "i") - int num; + int num; @Argument(name = "value") List value; } @Test - public void intArgument() throws OptionParserException - { + public void intArgument() throws OptionParserException { IntArg intArg = new IntArg(); OptionParser parser = new OptionParser(intArg); @@ -223,8 +201,7 @@ public class OptionParserTest } - class AmbiguousTypeArg - { + class AmbiguousTypeArg { @Argument(name = "value") List< ? > value; @@ -233,12 +210,11 @@ public class OptionParserTest */ @SuppressWarnings("unchecked") @Option(symbol = "d") - List d; + List d; } @Test - public void ambiguousType() throws OptionParserException - { + public void ambiguousType() throws OptionParserException { AmbiguousTypeArg arg = new AmbiguousTypeArg(); OptionParser parser = new OptionParser(arg); @@ -258,61 +234,52 @@ public class OptionParserTest } @Test - public void detectUnknownOption() - { + public void detectUnknownOption() { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); - try - { + try { parser.parse(new String[] { "-v", "file" }); fail("must detect unknown options "); } - catch (OptionParserException e) - { + catch (OptionParserException e) { } } @Test - public void ignoreUnknownOption() - { + public void ignoreUnknownOption() { MyOption myOption = new MyOption(); OptionParser parser = new OptionParser(myOption); parser.setIgnoreUnknownOption(true); - try - { + try { parser.parse(new String[] { "-v", "file" }); } - catch (OptionParserException e) - { + catch (OptionParserException e) { fail("must ignore unknown options "); } } - class MainCommand - { + class MainCommand { @Argument(name = "sub_command") String subCommand = null; } - class SubCommand - { + class SubCommand { @Option(symbol = "h", longName = "help") boolean displayHelp = false; @Argument(name = "input") - String input = null; + String input = null; } @Test - public void retrieveUnusedArguments() throws OptionParserException - { + public void retrieveUnusedArguments() throws OptionParserException { MainCommand mainCommand = new MainCommand(); OptionParser mainCommandParser = new OptionParser(mainCommand); mainCommandParser.setIgnoreUnknownOption(true); @@ -334,4 +301,37 @@ public class OptionParserTest assertEquals("input.txt", subCommand.input); assertTrue(subCommand.displayHelp); } + + @Test + public void getOptionHolderTest() throws Exception { + + OptionParser mainCommandParser = new OptionParser(new MainCommand()); + mainCommandParser.parse(new String[] { "action" }); + MainCommand mc = mainCommandParser.getOptionHolder(); + + assertEquals("action", mc.subCommand); + + } + + static class MyOpt { + @Option(symbol = "v", longName = "value", description = "integer value") + int value = -1; + } + + @Test + public void errorMessage() throws Exception { + OptionParser p = new OptionParser(MyOpt.class); + try { + p.parse(new String[] { "-v", "abc" }); // use wrong type + } + catch (OptionParserException e) { + _logger.debug(e); + assertTrue(String.format( + "error message must explain which option argument causes the error: %s", e + .getMessage()), e.getMessage().contains("-v")); + return; + } + fail("cannot reach here"); + + } }