diff options
-rw-r--r-- | src/jvm/Reader.g | 71 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 8 | ||||
-rw-r--r-- | src/jvm/clojure/lang/ReaderLexer.java | 898 | ||||
-rw-r--r-- | src/jvm/clojure/lang/ReaderParser.java | 927 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Symbol.java | 12 |
5 files changed, 1043 insertions, 873 deletions
diff --git a/src/jvm/Reader.g b/src/jvm/Reader.g index 4b0a13b5..4ed11f79 100644 --- a/src/jvm/Reader.g +++ b/src/jvm/Reader.g @@ -17,7 +17,15 @@ import java.io.Writer; import java.io.PrintWriter; } @lexer::header { - +/** + * Copyright (c) Rich Hickey. All rights reserved. + * The use and distribution terms for this software are covered by the + * Common Public License 1.0 (http://opensource.org/licenses/cpl.php) + * which can be found in the file CPL.TXT at the root of this distribution. + * By using this software in any fashion, you are agreeing to be bound by + * the terms of this license. + * You must not remove this notice, or any other, from this software. + **/ package clojure.lang; } @lexer::members{ @@ -41,17 +49,24 @@ import java.io.PrintWriter; //after: // if (failed) return val; -/*WARNING- HAND MODIFIED! -if(es == null) es = new ArrayList(); -es.add(e); -// END HAND MODIFIED*/ + /* + //WARNING- HAND MODIFIED! + if(es == null) es = new ArrayList(); + es.add(e); + // END HAND MODIFIED + */ + //add this to mapexpr: -/*WARNING- HAND MODIFIED! - val = val.assoc(k, v); -// END HAND MODIFIED*/ + /* + //WARNING- HAND MODIFIED! + val = val.assoc(k, v); + // END HAND MODIFIED + */ final static Symbol DOTDOT = new Symbol(".."); +final static Symbol QUOTE = new Symbol("quote"); +final static Symbol META = new Symbol("meta"); public static void main(String[] args) throws Exception { Writer w = new PrintWriter(System.out); @@ -67,7 +82,7 @@ ReaderParser parser = new ReaderParser(tokens); try{ if(lexer.rex != null) throw lexer.rex; - for(int i=0;i<10;i++) + for(int i=0;i<20;i++) { Object e = parser.expression(); RT.print(e,w); @@ -112,6 +127,8 @@ expression returns[Object val] |me = mapExpression {$val = $me.val;} |mx = metaExpression {$val = $mx.val;} |g = dotExpression {$val = $g.val;} + |q = quotedExpression {$val = $q.val;} + |ct = caretExpression {$val = $ct.val;} ; listExpression returns[ISeq val] @@ -134,13 +151,13 @@ val = PersistentHashMap.EMPTY; ; symbol returns[Symbol val] - :n = (Identifier|JavaIdentifier) {$val = new Symbol($n.text);} - |ns = (Identifier|JavaIdentifier) '/' nn = (Identifier|JavaIdentifier) {$val = new Symbol($ns.text,$nn.text);} + :n = Identifier {$val = new Symbol($n.text);} + |n = NSIdentifier {$val = new Symbol($n.text);} |dd = DotDot {$val = DOTDOT;} ; keyword returns[Keyword val] - :':' s = symbol {$val = new Keyword($s.val);} + :k = KeywordIdentifier {$val = new Keyword($k.text.substring(1));} ; @@ -186,7 +203,7 @@ metaExpression returns [Obj val] fragment member returns [Object val] - : '.' i = JavaIdentifier {$val = new Symbol($i.text);} + : '.' i = Identifier {$val = new Symbol($i.text);} | '.' m = method {$val = $m.val;} ; @@ -207,9 +224,18 @@ dotExpression returns [Object val] List es = null; } :s = symbol e = member+ {$val = RT.listStar(DOTDOT,s,RT.seq(es));} - ; + ; + +quotedExpression returns[Object val] + :'\'' e = expression {$val = RT.list(QUOTE,e);} + ; + +caretExpression returns[Object val] + :'^' e = expression {$val = RT.list(META,e);} + ; // LEXER Comma : ','; + TrueToken : 'true'; NullToken : 'null' ; @@ -264,15 +290,26 @@ fragment UnicodeEscape : '\\' 'u' HexDigit HexDigit HexDigit HexDigit ; - + +/* JavaIdentifier : Letter (Letter|JavaIDDigit)* ; +*/ Identifier - : Letter ('-' |Letter|JavaIDDigit)* + :Letter ('-' |Letter|JavaIDDigit)* ; - + +NSIdentifier + :Identifier '/' Identifier + ; + +KeywordIdentifier + :':' Identifier '/' Identifier + |':' Identifier + ; + MethodIdentifier : Letter (Letter|JavaIDDigit)* '(' ; diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 05b27836..5cf0f4b5 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -380,19 +380,19 @@ static public ISeq list(Object arg1){ return new PersistentList(arg1); } -static public ISeq list(Object arg1, Object arg2) throws Exception{ +static public ISeq list(Object arg1, Object arg2){ return listStar(arg1, arg2, null); } -static public ISeq list(Object arg1, Object arg2, Object arg3) throws Exception{ +static public ISeq list(Object arg1, Object arg2, Object arg3){ return listStar(arg1, arg2, arg3, null); } -static public ISeq list(Object arg1, Object arg2, Object arg3, Object arg4) throws Exception{ +static public ISeq list(Object arg1, Object arg2, Object arg3, Object arg4){ return listStar(arg1, arg2, arg3, arg4, null); } -static public ISeq list(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) throws Exception{ +static public ISeq list(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5){ return listStar(arg1, arg2, arg3, arg4, arg5, null); } diff --git a/src/jvm/clojure/lang/ReaderLexer.java b/src/jvm/clojure/lang/ReaderLexer.java index 631f002f..d50e9540 100644 --- a/src/jvm/clojure/lang/ReaderLexer.java +++ b/src/jvm/clojure/lang/ReaderLexer.java @@ -1,6 +1,14 @@ -// $ANTLR 3.0 /Users/rich/dev/clojure/src/jvm/Reader.g 2007-07-13 12:56:20 - - +// $ANTLR 3.0 /Users/rich/dev/clojure/src/jvm/Reader.g 2007-07-16 11:13:35 + +/** + * Copyright (c) Rich Hickey. All rights reserved. + * The use and distribution terms for this software are covered by the + * Common Public License 1.0 (http://opensource.org/licenses/cpl.php) + * which can be found in the file CPL.TXT at the root of this distribution. + * By using this software in any fashion, you are agreeing to be bound by + * the terms of this license. + * You must not remove this notice, or any other, from this software. + **/ package clojure.lang; @@ -11,42 +19,44 @@ import java.util.List; import java.util.ArrayList; public class ReaderLexer extends Lexer{ -public static final int TrueToken = 10; +public static final int TrueToken = 11; public static final int T29 = 29; -public static final int Exponent = 18; -public static final int OctalLiteral = 14; +public static final int Exponent = 19; +public static final int OctalLiteral = 15; public static final int T33 = 33; public static final int Identifier = 4; -public static final int HexDigit = 17; +public static final int HexDigit = 18; public static final int T36 = 36; -public static final int WS = 25; -public static final int CharacterLiteral = 8; -public static final int MethodIdentifier = 15; -public static final int T28 = 28; +public static final int WS = 26; +public static final int CharacterLiteral = 9; +public static final int MethodIdentifier = 16; +public static final int NSIdentifier = 5; public static final int T35 = 35; -public static final int COMMENT = 26; -public static final int StringLiteral = 9; -public static final int LINE_COMMENT = 27; +public static final int COMMENT = 27; +public static final int KeywordIdentifier = 7; +public static final int StringLiteral = 10; +public static final int LINE_COMMENT = 28; public static final int DotDot = 6; public static final int T34 = 34; -public static final int JavaIDDigit = 24; -public static final int Letter = 23; -public static final int UnicodeEscape = 21; -public static final int Comma = 16; -public static final int HexLiteral = 13; +public static final int JavaIDDigit = 25; +public static final int Letter = 24; +public static final int UnicodeEscape = 22; +public static final int Comma = 17; +public static final int HexLiteral = 14; public static final int T37 = 37; -public static final int EscapeSequence = 20; -public static final int NullToken = 11; +public static final int EscapeSequence = 21; +public static final int NullToken = 12; public static final int EOF = -1; -public static final int DecimalLiteral = 12; +public static final int DecimalLiteral = 13; public static final int T32 = 32; -public static final int Tokens = 38; +public static final int Tokens = 40; public static final int T31 = 31; -public static final int OctalEscape = 22; -public static final int FloatingPointLiteral = 7; +public static final int OctalEscape = 23; +public static final int T38 = 38; +public static final int FloatingPointLiteral = 8; public static final int T30 = 30; -public static final int FloatTypeSuffix = 19; -public static final int JavaIdentifier = 5; +public static final int FloatTypeSuffix = 20; +public static final int T39 = 39; RecognitionException rex = null; @@ -73,36 +83,15 @@ public String getGrammarFileName(){ return "/Users/rich/dev/clojure/src/jvm/Reader.g"; } -// $ANTLR start T28 -public final void mT28() throws RecognitionException{ - try - { - int _type = T28; - // /Users/rich/dev/clojure/src/jvm/Reader.g:25:7: ( '(' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:25:7: '(' - { - match('('); - - } - - this.type = _type; - } - finally - { - } -} -// $ANTLR end T28 - // $ANTLR start T29 - public final void mT29() throws RecognitionException{ try { int _type = T29; - // /Users/rich/dev/clojure/src/jvm/Reader.g:26:7: ( ')' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:26:7: ')' + // /Users/rich/dev/clojure/src/jvm/Reader.g:33:7: ( '(' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:33:7: '(' { - match(')'); + match('('); } @@ -120,10 +109,10 @@ public final void mT30() throws RecognitionException{ try { int _type = T30; - // /Users/rich/dev/clojure/src/jvm/Reader.g:27:7: ( '[' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:27:7: '[' + // /Users/rich/dev/clojure/src/jvm/Reader.g:34:7: ( ')' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:34:7: ')' { - match('['); + match(')'); } @@ -141,10 +130,10 @@ public final void mT31() throws RecognitionException{ try { int _type = T31; - // /Users/rich/dev/clojure/src/jvm/Reader.g:28:7: ( ']' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:28:7: ']' + // /Users/rich/dev/clojure/src/jvm/Reader.g:35:7: ( '[' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:35:7: '[' { - match(']'); + match('['); } @@ -162,10 +151,10 @@ public final void mT32() throws RecognitionException{ try { int _type = T32; - // /Users/rich/dev/clojure/src/jvm/Reader.g:29:7: ( '{' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:29:7: '{' + // /Users/rich/dev/clojure/src/jvm/Reader.g:36:7: ( ']' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:36:7: ']' { - match('{'); + match(']'); } @@ -183,10 +172,10 @@ public final void mT33() throws RecognitionException{ try { int _type = T33; - // /Users/rich/dev/clojure/src/jvm/Reader.g:30:7: ( '}' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:30:7: '}' + // /Users/rich/dev/clojure/src/jvm/Reader.g:37:7: ( '{' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:37:7: '{' { - match('}'); + match('{'); } @@ -204,10 +193,10 @@ public final void mT34() throws RecognitionException{ try { int _type = T34; - // /Users/rich/dev/clojure/src/jvm/Reader.g:31:7: ( '/' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:31:7: '/' + // /Users/rich/dev/clojure/src/jvm/Reader.g:38:7: ( '}' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:38:7: '}' { - match('/'); + match('}'); } @@ -225,10 +214,10 @@ public final void mT35() throws RecognitionException{ try { int _type = T35; - // /Users/rich/dev/clojure/src/jvm/Reader.g:32:7: ( ':' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:32:7: ':' + // /Users/rich/dev/clojure/src/jvm/Reader.g:39:7: ( '/' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:39:7: '/' { - match(':'); + match('/'); } @@ -246,8 +235,8 @@ public final void mT36() throws RecognitionException{ try { int _type = T36; - // /Users/rich/dev/clojure/src/jvm/Reader.g:33:7: ( '#^' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:33:7: '#^' + // /Users/rich/dev/clojure/src/jvm/Reader.g:40:7: ( '#^' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:40:7: '#^' { match("#^"); @@ -268,8 +257,8 @@ public final void mT37() throws RecognitionException{ try { int _type = T37; - // /Users/rich/dev/clojure/src/jvm/Reader.g:34:7: ( '.' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:34:7: '.' + // /Users/rich/dev/clojure/src/jvm/Reader.g:41:7: ( '.' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:41:7: '.' { match('.'); @@ -283,14 +272,56 @@ public final void mT37() throws RecognitionException{ } // $ANTLR end T37 +// $ANTLR start T38 + +public final void mT38() throws RecognitionException{ + try + { + int _type = T38; + // /Users/rich/dev/clojure/src/jvm/Reader.g:42:7: ( '\\'' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:42:7: '\\'' + { + match('\''); + + } + + this.type = _type; + } + finally + { + } +} +// $ANTLR end T38 + +// $ANTLR start T39 + +public final void mT39() throws RecognitionException{ + try + { + int _type = T39; + // /Users/rich/dev/clojure/src/jvm/Reader.g:43:7: ( '^' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:43:7: '^' + { + match('^'); + + } + + this.type = _type; + } + finally + { + } +} +// $ANTLR end T39 + // $ANTLR start Comma public final void mComma() throws RecognitionException{ try { int _type = Comma; - // /Users/rich/dev/clojure/src/jvm/Reader.g:212:10: ( ',' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:212:10: ',' + // /Users/rich/dev/clojure/src/jvm/Reader.g:237:10: ( ',' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:237:10: ',' { match(','); @@ -310,8 +341,8 @@ public final void mTrueToken() throws RecognitionException{ try { int _type = TrueToken; - // /Users/rich/dev/clojure/src/jvm/Reader.g:213:16: ( 'true' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:213:16: 'true' + // /Users/rich/dev/clojure/src/jvm/Reader.g:239:16: ( 'true' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:239:16: 'true' { match("true"); @@ -332,8 +363,8 @@ public final void mNullToken() throws RecognitionException{ try { int _type = NullToken; - // /Users/rich/dev/clojure/src/jvm/Reader.g:215:16: ( 'null' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:215:16: 'null' + // /Users/rich/dev/clojure/src/jvm/Reader.g:241:16: ( 'null' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:241:16: 'null' { match("null"); @@ -354,8 +385,8 @@ public final void mDotDot() throws RecognitionException{ try { int _type = DotDot; - // /Users/rich/dev/clojure/src/jvm/Reader.g:217:10: ( '..' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:217:10: '..' + // /Users/rich/dev/clojure/src/jvm/Reader.g:243:10: ( '..' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:243:10: '..' { match(".."); @@ -376,8 +407,8 @@ public final void mHexLiteral() throws RecognitionException{ try { int _type = HexLiteral; - // /Users/rich/dev/clojure/src/jvm/Reader.g:219:14: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:219:14: '0' ( 'x' | 'X' ) ( HexDigit )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:245:14: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:245:14: '0' ( 'x' | 'X' ) ( HexDigit )+ { match('0'); if(input.LA(1) == 'X' || input.LA(1) == 'x') @@ -393,7 +424,7 @@ public final void mHexLiteral() throws RecognitionException{ throw mse; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:219:28: ( HexDigit )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:245:28: ( HexDigit )+ int cnt1 = 0; loop1: do @@ -410,7 +441,7 @@ public final void mHexLiteral() throws RecognitionException{ switch(alt1) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:219:28: HexDigit + // /Users/rich/dev/clojure/src/jvm/Reader.g:245:28: HexDigit { mHexDigit(); @@ -443,10 +474,10 @@ public final void mDecimalLiteral() throws RecognitionException{ try { int _type = DecimalLiteral; - // /Users/rich/dev/clojure/src/jvm/Reader.g:221:18: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:221:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:247:18: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:247:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) { - // /Users/rich/dev/clojure/src/jvm/Reader.g:221:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:247:18: ( '0' | '1' .. '9' ( '0' .. '9' )* ) int alt3 = 2; int LA3_0 = input.LA(1); @@ -461,24 +492,24 @@ public final void mDecimalLiteral() throws RecognitionException{ else { NoViableAltException nvae = - new NoViableAltException("221:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 3, 0, input); + new NoViableAltException("247:18: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 3, 0, input); throw nvae; } switch(alt3) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:221:19: '0' + // /Users/rich/dev/clojure/src/jvm/Reader.g:247:19: '0' { match('0'); } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:221:25: '1' .. '9' ( '0' .. '9' )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:247:25: '1' .. '9' ( '0' .. '9' )* { matchRange('1', '9'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:221:34: ( '0' .. '9' )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:247:34: ( '0' .. '9' )* loop2: do { @@ -494,7 +525,7 @@ public final void mDecimalLiteral() throws RecognitionException{ switch(alt2) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:221:34: '0' .. '9' + // /Users/rich/dev/clojure/src/jvm/Reader.g:247:34: '0' .. '9' { matchRange('0', '9'); @@ -529,11 +560,11 @@ public final void mOctalLiteral() throws RecognitionException{ try { int _type = OctalLiteral; - // /Users/rich/dev/clojure/src/jvm/Reader.g:223:16: ( '0' ( '0' .. '7' )+ ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:223:16: '0' ( '0' .. '7' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:249:16: ( '0' ( '0' .. '7' )+ ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:249:16: '0' ( '0' .. '7' )+ { match('0'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:223:20: ( '0' .. '7' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:249:20: ( '0' .. '7' )+ int cnt4 = 0; loop4: do @@ -550,7 +581,7 @@ public final void mOctalLiteral() throws RecognitionException{ switch(alt4) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:223:21: '0' .. '7' + // /Users/rich/dev/clojure/src/jvm/Reader.g:249:21: '0' .. '7' { matchRange('0', '7'); @@ -582,8 +613,8 @@ public final void mOctalLiteral() throws RecognitionException{ public final void mHexDigit() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:226:12: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:226:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:252:12: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:252:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) { if((input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= 'A' && input.LA(1) <= 'F') || (input.LA(1) >= 'a' && input.LA(1) <= 'f')) @@ -615,15 +646,15 @@ public final void mFloatingPointLiteral() throws RecognitionException{ try { int _type = FloatingPointLiteral; - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:9: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:9: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix ) int alt16 = 4; alt16 = dfa16.predict(input); switch(alt16) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? { - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:9: ( '0' .. '9' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:9: ( '0' .. '9' )+ int cnt5 = 0; loop5: do @@ -640,7 +671,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt5) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:10: '0' .. '9' + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:10: '0' .. '9' { matchRange('0', '9'); @@ -657,7 +688,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } while(true); match('.'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:25: ( '0' .. '9' )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:25: ( '0' .. '9' )* loop6: do { @@ -673,7 +704,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt6) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:26: '0' .. '9' + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:26: '0' .. '9' { matchRange('0', '9'); @@ -685,7 +716,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } } while(true); - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:37: ( Exponent )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:37: ( Exponent )? int alt7 = 2; int LA7_0 = input.LA(1); @@ -696,7 +727,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt7) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:37: Exponent + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:37: Exponent { mExponent(); @@ -705,7 +736,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:47: ( FloatTypeSuffix )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:47: ( FloatTypeSuffix )? int alt8 = 2; int LA8_0 = input.LA(1); @@ -716,7 +747,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt8) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:229:47: FloatTypeSuffix + // /Users/rich/dev/clojure/src/jvm/Reader.g:255:47: FloatTypeSuffix { mFloatTypeSuffix(); @@ -729,10 +760,10 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:230:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:256:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? { match('.'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:230:13: ( '0' .. '9' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:256:13: ( '0' .. '9' )+ int cnt9 = 0; loop9: do @@ -749,7 +780,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt9) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:230:14: '0' .. '9' + // /Users/rich/dev/clojure/src/jvm/Reader.g:256:14: '0' .. '9' { matchRange('0', '9'); @@ -765,7 +796,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ cnt9++; } while(true); - // /Users/rich/dev/clojure/src/jvm/Reader.g:230:25: ( Exponent )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:256:25: ( Exponent )? int alt10 = 2; int LA10_0 = input.LA(1); @@ -776,7 +807,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt10) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:230:25: Exponent + // /Users/rich/dev/clojure/src/jvm/Reader.g:256:25: Exponent { mExponent(); @@ -785,7 +816,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } - // /Users/rich/dev/clojure/src/jvm/Reader.g:230:35: ( FloatTypeSuffix )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:256:35: ( FloatTypeSuffix )? int alt11 = 2; int LA11_0 = input.LA(1); @@ -796,7 +827,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt11) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:230:35: FloatTypeSuffix + // /Users/rich/dev/clojure/src/jvm/Reader.g:256:35: FloatTypeSuffix { mFloatTypeSuffix(); @@ -809,9 +840,9 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:231:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:257:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? { - // /Users/rich/dev/clojure/src/jvm/Reader.g:231:9: ( '0' .. '9' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:257:9: ( '0' .. '9' )+ int cnt12 = 0; loop12: do @@ -828,7 +859,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt12) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:231:10: '0' .. '9' + // /Users/rich/dev/clojure/src/jvm/Reader.g:257:10: '0' .. '9' { matchRange('0', '9'); @@ -845,7 +876,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } while(true); mExponent(); - // /Users/rich/dev/clojure/src/jvm/Reader.g:231:30: ( FloatTypeSuffix )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:257:30: ( FloatTypeSuffix )? int alt13 = 2; int LA13_0 = input.LA(1); @@ -856,7 +887,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt13) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:231:30: FloatTypeSuffix + // /Users/rich/dev/clojure/src/jvm/Reader.g:257:30: FloatTypeSuffix { mFloatTypeSuffix(); @@ -869,9 +900,9 @@ public final void mFloatingPointLiteral() throws RecognitionException{ } break; case 4: - // /Users/rich/dev/clojure/src/jvm/Reader.g:232:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix + // /Users/rich/dev/clojure/src/jvm/Reader.g:258:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix { - // /Users/rich/dev/clojure/src/jvm/Reader.g:232:9: ( '0' .. '9' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:258:9: ( '0' .. '9' )+ int cnt14 = 0; loop14: do @@ -888,7 +919,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt14) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:232:10: '0' .. '9' + // /Users/rich/dev/clojure/src/jvm/Reader.g:258:10: '0' .. '9' { matchRange('0', '9'); @@ -904,7 +935,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ cnt14++; } while(true); - // /Users/rich/dev/clojure/src/jvm/Reader.g:232:21: ( Exponent )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:258:21: ( Exponent )? int alt15 = 2; int LA15_0 = input.LA(1); @@ -915,7 +946,7 @@ public final void mFloatingPointLiteral() throws RecognitionException{ switch(alt15) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:232:21: Exponent + // /Users/rich/dev/clojure/src/jvm/Reader.g:258:21: Exponent { mExponent(); @@ -943,8 +974,8 @@ public final void mFloatingPointLiteral() throws RecognitionException{ public final void mExponent() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:236:12: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:236:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:262:12: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:262:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ { if(input.LA(1) == 'E' || input.LA(1) == 'e') { @@ -959,7 +990,7 @@ public final void mExponent() throws RecognitionException{ throw mse; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:236:22: ( '+' | '-' )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:262:22: ( '+' | '-' )? int alt17 = 2; int LA17_0 = input.LA(1); @@ -991,7 +1022,7 @@ public final void mExponent() throws RecognitionException{ } - // /Users/rich/dev/clojure/src/jvm/Reader.g:236:33: ( '0' .. '9' )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:262:33: ( '0' .. '9' )+ int cnt18 = 0; loop18: do @@ -1008,7 +1039,7 @@ public final void mExponent() throws RecognitionException{ switch(alt18) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:236:34: '0' .. '9' + // /Users/rich/dev/clojure/src/jvm/Reader.g:262:34: '0' .. '9' { matchRange('0', '9'); @@ -1039,8 +1070,8 @@ public final void mExponent() throws RecognitionException{ public final void mFloatTypeSuffix() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:239:19: ( ( 'f' | 'F' | 'd' | 'D' ) ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:239:19: ( 'f' | 'F' | 'd' | 'D' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:265:19: ( ( 'f' | 'F' | 'd' | 'D' ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:265:19: ( 'f' | 'F' | 'd' | 'D' ) { if(input.LA(1) == 'D' || input.LA(1) == 'F' || input.LA(1) == 'd' || input.LA(1) == 'f') { @@ -1071,11 +1102,11 @@ public final void mCharacterLiteral() throws RecognitionException{ try { int _type = CharacterLiteral; - // /Users/rich/dev/clojure/src/jvm/Reader.g:242:9: ( '\\\\' ( EscapeSequence | ~ ( '\\\\' ) ) ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:242:9: '\\\\' ( EscapeSequence | ~ ( '\\\\' ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:268:9: ( '\\\\' ( EscapeSequence | ~ ( '\\\\' ) ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:268:9: '\\\\' ( EscapeSequence | ~ ( '\\\\' ) ) { match('\\'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:242:14: ( EscapeSequence | ~ ( '\\\\' ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:268:14: ( EscapeSequence | ~ ( '\\\\' ) ) int alt19 = 2; int LA19_0 = input.LA(1); @@ -1090,21 +1121,21 @@ public final void mCharacterLiteral() throws RecognitionException{ else { NoViableAltException nvae = - new NoViableAltException("242:14: ( EscapeSequence | ~ ( '\\\\' ) )", 19, 0, input); + new NoViableAltException("268:14: ( EscapeSequence | ~ ( '\\\\' ) )", 19, 0, input); throw nvae; } switch(alt19) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:242:16: EscapeSequence + // /Users/rich/dev/clojure/src/jvm/Reader.g:268:16: EscapeSequence { mEscapeSequence(); } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:242:33: ~ ( '\\\\' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:268:33: ~ ( '\\\\' ) { if((input.LA(1) >= '\u0000' && input.LA(1) <= '[') || (input.LA(1) >= ']' && input.LA(1) <= '\uFFFE')) { @@ -1142,11 +1173,11 @@ public final void mStringLiteral() throws RecognitionException{ try { int _type = StringLiteral; - // /Users/rich/dev/clojure/src/jvm/Reader.g:246:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:246:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' + // /Users/rich/dev/clojure/src/jvm/Reader.g:272:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:272:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' { match('\"'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:246:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:272:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* loop20: do { @@ -1167,14 +1198,14 @@ public final void mStringLiteral() throws RecognitionException{ switch(alt20) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:246:14: EscapeSequence + // /Users/rich/dev/clojure/src/jvm/Reader.g:272:14: EscapeSequence { mEscapeSequence(); } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:246:31: ~ ( '\\\\' | '\"' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:272:31: ~ ( '\\\\' | '\"' ) { if((input.LA(1) >= '\u0000' && input.LA(1) <= '!') || (input.LA(1) >= '#' && input.LA(1) <= '[') || (input.LA(1) >= ']' && input.LA(1) <= '\uFFFE')) @@ -1216,7 +1247,7 @@ public final void mStringLiteral() throws RecognitionException{ public final void mEscapeSequence() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:251:9: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:277:9: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape ) int alt21 = 3; int LA21_0 = input.LA(1); @@ -1224,11 +1255,6 @@ public final void mEscapeSequence() throws RecognitionException{ { switch(input.LA(2)) { - case'u': - { - alt21 = 2; - } - break; case'\"': case'\'': case'\\': @@ -1241,6 +1267,11 @@ public final void mEscapeSequence() throws RecognitionException{ alt21 = 1; } break; + case'u': + { + alt21 = 2; + } + break; case'0': case'1': case'2': @@ -1256,7 +1287,7 @@ public final void mEscapeSequence() throws RecognitionException{ default: NoViableAltException nvae = new NoViableAltException( - "249:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", + "275:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 21, 1, input); throw nvae; @@ -1267,7 +1298,7 @@ public final void mEscapeSequence() throws RecognitionException{ { NoViableAltException nvae = new NoViableAltException( - "249:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", + "275:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 21, 0, input); throw nvae; @@ -1275,7 +1306,7 @@ public final void mEscapeSequence() throws RecognitionException{ switch(alt21) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:251:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:277:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) { match('\\'); if(input.LA(1) == '\"' || input.LA(1) == '\'' || input.LA(1) == '\\' || input.LA(1) == 'b' || @@ -1296,14 +1327,14 @@ public final void mEscapeSequence() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:252:9: UnicodeEscape + // /Users/rich/dev/clojure/src/jvm/Reader.g:278:9: UnicodeEscape { mUnicodeEscape(); } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:253:9: OctalEscape + // /Users/rich/dev/clojure/src/jvm/Reader.g:279:9: OctalEscape { mOctalEscape(); @@ -1323,7 +1354,7 @@ public final void mEscapeSequence() throws RecognitionException{ public final void mOctalEscape() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:9: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ) int alt22 = 3; int LA22_0 = input.LA(1); @@ -1370,7 +1401,7 @@ public final void mOctalEscape() throws RecognitionException{ { NoViableAltException nvae = new NoViableAltException( - "256:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", + "282:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 22, 1, input); throw nvae; @@ -1380,7 +1411,7 @@ public final void mOctalEscape() throws RecognitionException{ { NoViableAltException nvae = new NoViableAltException( - "256:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", + "282:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 22, 0, input); throw nvae; @@ -1388,25 +1419,25 @@ public final void mOctalEscape() throws RecognitionException{ switch(alt22) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) { match('\\'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:14: ( '0' .. '3' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:15: '0' .. '3' + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:14: ( '0' .. '3' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:15: '0' .. '3' { matchRange('0', '3'); } - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:25: ( '0' .. '7' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:26: '0' .. '7' + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:25: ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:26: '0' .. '7' { matchRange('0', '7'); } - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:36: ( '0' .. '7' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:258:37: '0' .. '7' + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:36: ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:284:37: '0' .. '7' { matchRange('0', '7'); @@ -1416,18 +1447,18 @@ public final void mOctalEscape() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:259:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:285:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) { match('\\'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:259:14: ( '0' .. '7' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:259:15: '0' .. '7' + // /Users/rich/dev/clojure/src/jvm/Reader.g:285:14: ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:285:15: '0' .. '7' { matchRange('0', '7'); } - // /Users/rich/dev/clojure/src/jvm/Reader.g:259:25: ( '0' .. '7' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:259:26: '0' .. '7' + // /Users/rich/dev/clojure/src/jvm/Reader.g:285:25: ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:285:26: '0' .. '7' { matchRange('0', '7'); @@ -1437,11 +1468,11 @@ public final void mOctalEscape() throws RecognitionException{ } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:260:9: '\\\\' ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:286:9: '\\\\' ( '0' .. '7' ) { match('\\'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:260:14: ( '0' .. '7' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:260:15: '0' .. '7' + // /Users/rich/dev/clojure/src/jvm/Reader.g:286:14: ( '0' .. '7' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:286:15: '0' .. '7' { matchRange('0', '7'); @@ -1464,8 +1495,8 @@ public final void mOctalEscape() throws RecognitionException{ public final void mUnicodeEscape() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:265:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:265:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit + // /Users/rich/dev/clojure/src/jvm/Reader.g:291:9: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:291:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit { match('\\'); match('u'); @@ -1483,29 +1514,29 @@ public final void mUnicodeEscape() throws RecognitionException{ } // $ANTLR end UnicodeEscape -// $ANTLR start JavaIdentifier +// $ANTLR start Identifier -public final void mJavaIdentifier() throws RecognitionException{ +public final void mIdentifier() throws RecognitionException{ try { - int _type = JavaIdentifier; - // /Users/rich/dev/clojure/src/jvm/Reader.g:269:9: ( Letter ( Letter | JavaIDDigit )* ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:269:9: Letter ( Letter | JavaIDDigit )* + int _type = Identifier; + // /Users/rich/dev/clojure/src/jvm/Reader.g:301:6: ( Letter ( '-' | Letter | JavaIDDigit )* ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:301:6: Letter ( '-' | Letter | JavaIDDigit )* { mLetter(); - // /Users/rich/dev/clojure/src/jvm/Reader.g:269:16: ( Letter | JavaIDDigit )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:301:13: ( '-' | Letter | JavaIDDigit )* loop23: do { int alt23 = 2; int LA23_0 = input.LA(1); - if((LA23_0 == '$' || (LA23_0 >= '0' && LA23_0 <= '9') || (LA23_0 >= 'A' && LA23_0 <= 'Z') || - LA23_0 == '_' || (LA23_0 >= 'a' && LA23_0 <= 'z') || (LA23_0 >= '\u00C0' && LA23_0 <= '\u00D6') || - (LA23_0 >= '\u00D8' && LA23_0 <= '\u00F6') || (LA23_0 >= '\u00F8' && LA23_0 <= '\u1FFF') || - (LA23_0 >= '\u3040' && LA23_0 <= '\u318F') || (LA23_0 >= '\u3300' && LA23_0 <= '\u337F') || - (LA23_0 >= '\u3400' && LA23_0 <= '\u3D2D') || (LA23_0 >= '\u4E00' && LA23_0 <= '\u9FFF') || - (LA23_0 >= '\uF900' && LA23_0 <= '\uFAFF'))) + if((LA23_0 == '$' || LA23_0 == '-' || (LA23_0 >= '0' && LA23_0 <= '9') || + (LA23_0 >= 'A' && LA23_0 <= 'Z') || LA23_0 == '_' || (LA23_0 >= 'a' && LA23_0 <= 'z') || + (LA23_0 >= '\u00C0' && LA23_0 <= '\u00D6') || (LA23_0 >= '\u00D8' && LA23_0 <= '\u00F6') || + (LA23_0 >= '\u00F8' && LA23_0 <= '\u1FFF') || (LA23_0 >= '\u3040' && LA23_0 <= '\u318F') || + (LA23_0 >= '\u3300' && LA23_0 <= '\u337F') || (LA23_0 >= '\u3400' && LA23_0 <= '\u3D2D') || + (LA23_0 >= '\u4E00' && LA23_0 <= '\u9FFF') || (LA23_0 >= '\uF900' && LA23_0 <= '\uFAFF'))) { alt23 = 1; } @@ -1516,7 +1547,7 @@ public final void mJavaIdentifier() throws RecognitionException{ case 1: // /Users/rich/dev/clojure/src/jvm/Reader.g: { - if(input.LA(1) == '$' || (input.LA(1) >= '0' && input.LA(1) <= '9') || + if(input.LA(1) == '$' || 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') || (input.LA(1) >= '\u00C0' && input.LA(1) <= '\u00D6') || (input.LA(1) >= '\u00D8' && input.LA(1) <= '\u00F6') || @@ -1556,82 +1587,69 @@ public final void mJavaIdentifier() throws RecognitionException{ { } } -// $ANTLR end JavaIdentifier +// $ANTLR end Identifier -// $ANTLR start Identifier +// $ANTLR start NSIdentifier -public final void mIdentifier() throws RecognitionException{ +public final void mNSIdentifier() throws RecognitionException{ try { - int _type = Identifier; - // /Users/rich/dev/clojure/src/jvm/Reader.g:273:9: ( Letter ( '-' | Letter | JavaIDDigit )* ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:273:9: Letter ( '-' | Letter | JavaIDDigit )* + int _type = NSIdentifier; + // /Users/rich/dev/clojure/src/jvm/Reader.g:305:3: ( Identifier '/' Identifier ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:305:3: Identifier '/' Identifier { - mLetter(); - // /Users/rich/dev/clojure/src/jvm/Reader.g:273:16: ( '-' | Letter | JavaIDDigit )* - loop24: - do - { - int alt24 = 2; - int LA24_0 = input.LA(1); - - if((LA24_0 == '$' || LA24_0 == '-' || (LA24_0 >= '0' && LA24_0 <= '9') || - (LA24_0 >= 'A' && LA24_0 <= 'Z') || LA24_0 == '_' || (LA24_0 >= 'a' && LA24_0 <= 'z') || - (LA24_0 >= '\u00C0' && LA24_0 <= '\u00D6') || (LA24_0 >= '\u00D8' && LA24_0 <= '\u00F6') || - (LA24_0 >= '\u00F8' && LA24_0 <= '\u1FFF') || (LA24_0 >= '\u3040' && LA24_0 <= '\u318F') || - (LA24_0 >= '\u3300' && LA24_0 <= '\u337F') || (LA24_0 >= '\u3400' && LA24_0 <= '\u3D2D') || - (LA24_0 >= '\u4E00' && LA24_0 <= '\u9FFF') || (LA24_0 >= '\uF900' && LA24_0 <= '\uFAFF'))) - { - alt24 = 1; - } - - - switch(alt24) - { - case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g: - { - if(input.LA(1) == '$' || 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') || (input.LA(1) >= '\u00C0' && input.LA(1) <= '\u00D6') || - (input.LA(1) >= '\u00D8' && input.LA(1) <= '\u00F6') || - (input.LA(1) >= '\u00F8' && input.LA(1) <= '\u1FFF') || - (input.LA(1) >= '\u3040' && input.LA(1) <= '\u318F') || - (input.LA(1) >= '\u3300' && input.LA(1) <= '\u337F') || - (input.LA(1) >= '\u3400' && input.LA(1) <= '\u3D2D') || - (input.LA(1) >= '\u4E00' && input.LA(1) <= '\u9FFF') || - (input.LA(1) >= '\uF900' && input.LA(1) <= '\uFAFF')) - { - input.consume(); + mIdentifier(); + match('/'); + mIdentifier(); - } - else - { - MismatchedSetException mse = - new MismatchedSetException(null, input); - recover(mse); - throw mse; - } + } + this.type = _type; + } + finally + { + } +} +// $ANTLR end NSIdentifier - } - break; +// $ANTLR start KeywordIdentifier - default: - break loop24; - } - } while(true); +public final void mKeywordIdentifier() throws RecognitionException{ + try + { + int _type = KeywordIdentifier; + // /Users/rich/dev/clojure/src/jvm/Reader.g:309:3: ( ':' Identifier '/' Identifier | ':' Identifier ) + int alt24 = 2; + alt24 = dfa24.predict(input); + switch(alt24) + { + case 1: + // /Users/rich/dev/clojure/src/jvm/Reader.g:309:3: ':' Identifier '/' Identifier + { + match(':'); + mIdentifier(); + match('/'); + mIdentifier(); + } + break; + case 2: + // /Users/rich/dev/clojure/src/jvm/Reader.g:310:3: ':' Identifier + { + match(':'); + mIdentifier(); - } + } + break; + } this.type = _type; } finally { } } -// $ANTLR end Identifier +// $ANTLR end KeywordIdentifier // $ANTLR start MethodIdentifier @@ -1639,11 +1657,11 @@ public final void mMethodIdentifier() throws RecognitionException{ try { int _type = MethodIdentifier; - // /Users/rich/dev/clojure/src/jvm/Reader.g:277:9: ( Letter ( Letter | JavaIDDigit )* '(' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:277:9: Letter ( Letter | JavaIDDigit )* '(' + // /Users/rich/dev/clojure/src/jvm/Reader.g:314:9: ( Letter ( Letter | JavaIDDigit )* '(' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:314:9: Letter ( Letter | JavaIDDigit )* '(' { mLetter(); - // /Users/rich/dev/clojure/src/jvm/Reader.g:277:16: ( Letter | JavaIDDigit )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:314:16: ( Letter | JavaIDDigit )* loop25: do { @@ -1714,7 +1732,7 @@ public final void mMethodIdentifier() throws RecognitionException{ public final void mLetter() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:284:8: ( '\\u0024' | '\\u0041' .. '\\u005a' | '\\u005f' | '\\u0061' .. '\\u007a' | '\\u00c0' .. '\\u00d6' | '\\u00d8' .. '\\u00f6' | '\\u00f8' .. '\\u00ff' | '\\u0100' .. '\\u1fff' | '\\u3040' .. '\\u318f' | '\\u3300' .. '\\u337f' | '\\u3400' .. '\\u3d2d' | '\\u4e00' .. '\\u9fff' | '\\uf900' .. '\\ufaff' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:321:8: ( '\\u0024' | '\\u0041' .. '\\u005a' | '\\u005f' | '\\u0061' .. '\\u007a' | '\\u00c0' .. '\\u00d6' | '\\u00d8' .. '\\u00f6' | '\\u00f8' .. '\\u00ff' | '\\u0100' .. '\\u1fff' | '\\u3040' .. '\\u318f' | '\\u3300' .. '\\u337f' | '\\u3400' .. '\\u3d2d' | '\\u4e00' .. '\\u9fff' | '\\uf900' .. '\\ufaff' ) // /Users/rich/dev/clojure/src/jvm/Reader.g: { if(input.LA(1) == '$' || (input.LA(1) >= 'A' && input.LA(1) <= 'Z') || input.LA(1) == '_' || @@ -1752,7 +1770,7 @@ public final void mLetter() throws RecognitionException{ public final void mJavaIDDigit() throws RecognitionException{ try { - // /Users/rich/dev/clojure/src/jvm/Reader.g:302:6: ( '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06f0' .. '\\u06f9' | '\\u0966' .. '\\u096f' | '\\u09e6' .. '\\u09ef' | '\\u0a66' .. '\\u0a6f' | '\\u0ae6' .. '\\u0aef' | '\\u0b66' .. '\\u0b6f' | '\\u0be7' .. '\\u0bef' | '\\u0c66' .. '\\u0c6f' | '\\u0ce6' .. '\\u0cef' | '\\u0d66' .. '\\u0d6f' | '\\u0e50' .. '\\u0e59' | '\\u0ed0' .. '\\u0ed9' | '\\u1040' .. '\\u1049' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:339:6: ( '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06f0' .. '\\u06f9' | '\\u0966' .. '\\u096f' | '\\u09e6' .. '\\u09ef' | '\\u0a66' .. '\\u0a6f' | '\\u0ae6' .. '\\u0aef' | '\\u0b66' .. '\\u0b6f' | '\\u0be7' .. '\\u0bef' | '\\u0c66' .. '\\u0c6f' | '\\u0ce6' .. '\\u0cef' | '\\u0d66' .. '\\u0d6f' | '\\u0e50' .. '\\u0e59' | '\\u0ed0' .. '\\u0ed9' | '\\u1040' .. '\\u1049' ) // /Users/rich/dev/clojure/src/jvm/Reader.g: { if((input.LA(1) >= '0' && input.LA(1) <= '9') || (input.LA(1) >= '\u0660' && input.LA(1) <= '\u0669') || @@ -1796,8 +1814,8 @@ public final void mWS() throws RecognitionException{ try { int _type = WS; - // /Users/rich/dev/clojure/src/jvm/Reader.g:319:8: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:319:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:356:8: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:356:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) { if((input.LA(1) >= '\t' && input.LA(1) <= '\n') || (input.LA(1) >= '\f' && input.LA(1) <= '\r') || input.LA(1) == ' ') @@ -1831,12 +1849,12 @@ public final void mCOMMENT() throws RecognitionException{ try { int _type = COMMENT; - // /Users/rich/dev/clojure/src/jvm/Reader.g:323:9: ( '#|' ( options {greedy=false; } : . )* '|#' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:323:9: '#|' ( options {greedy=false; } : . )* '|#' + // /Users/rich/dev/clojure/src/jvm/Reader.g:360:9: ( '#|' ( options {greedy=false; } : . )* '|#' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:360:9: '#|' ( options {greedy=false; } : . )* '|#' { match("#|"); - // /Users/rich/dev/clojure/src/jvm/Reader.g:323:14: ( options {greedy=false; } : . )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:360:14: ( options {greedy=false; } : . )* loop26: do { @@ -1867,7 +1885,7 @@ public final void mCOMMENT() throws RecognitionException{ switch(alt26) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:323:42: . + // /Users/rich/dev/clojure/src/jvm/Reader.g:360:42: . { matchAny(); @@ -1899,11 +1917,11 @@ public final void mLINE_COMMENT() throws RecognitionException{ try { int _type = LINE_COMMENT; - // /Users/rich/dev/clojure/src/jvm/Reader.g:327:7: ( ';' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:327:7: ';' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' + // /Users/rich/dev/clojure/src/jvm/Reader.g:364:7: ( ';' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:364:7: ';' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' { match(';'); - // /Users/rich/dev/clojure/src/jvm/Reader.g:327:11: (~ ( '\\n' | '\\r' ) )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:364:11: (~ ( '\\n' | '\\r' ) )* loop27: do { @@ -1920,7 +1938,7 @@ public final void mLINE_COMMENT() throws RecognitionException{ switch(alt27) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:327:11: ~ ( '\\n' | '\\r' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:364:11: ~ ( '\\n' | '\\r' ) { if((input.LA(1) >= '\u0000' && input.LA(1) <= '\t') || (input.LA(1) >= '\u000B' && input.LA(1) <= '\f') || @@ -1946,7 +1964,7 @@ public final void mLINE_COMMENT() throws RecognitionException{ } } while(true); - // /Users/rich/dev/clojure/src/jvm/Reader.g:327:25: ( '\\r' )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:364:25: ( '\\r' )? int alt28 = 2; int LA28_0 = input.LA(1); @@ -1957,7 +1975,7 @@ public final void mLINE_COMMENT() throws RecognitionException{ switch(alt28) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:327:25: '\\r' + // /Users/rich/dev/clojure/src/jvm/Reader.g:364:25: '\\r' { match('\r'); @@ -1980,188 +1998,202 @@ public final void mLINE_COMMENT() throws RecognitionException{ // $ANTLR end LINE_COMMENT public void mTokens() throws RecognitionException{ - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:10: ( T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | Comma | TrueToken | NullToken | DotDot | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | JavaIdentifier | Identifier | MethodIdentifier | WS | COMMENT | LINE_COMMENT ) - int alt29 = 26; + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:10: ( T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | Comma | TrueToken | NullToken | DotDot | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | Identifier | NSIdentifier | KeywordIdentifier | MethodIdentifier | WS | COMMENT | LINE_COMMENT ) + int alt29 = 28; alt29 = dfa29.predict(input); switch(alt29) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:10: T28 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:10: T29 { - mT28(); + mT29(); } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:14: T29 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:14: T30 { - mT29(); + mT30(); } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:18: T30 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:18: T31 { - mT30(); + mT31(); } break; case 4: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:22: T31 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:22: T32 { - mT31(); + mT32(); } break; case 5: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:26: T32 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:26: T33 { - mT32(); + mT33(); } break; case 6: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:30: T33 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:30: T34 { - mT33(); + mT34(); } break; case 7: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:34: T34 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:34: T35 { - mT34(); + mT35(); } break; case 8: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:38: T35 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:38: T36 { - mT35(); + mT36(); } break; case 9: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:42: T36 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:42: T37 { - mT36(); + mT37(); } break; case 10: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:46: T37 + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:46: T38 { - mT37(); + mT38(); } break; case 11: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:50: Comma + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:50: T39 { - mComma(); + mT39(); } break; case 12: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:56: TrueToken + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:54: Comma { - mTrueToken(); + mComma(); } break; case 13: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:66: NullToken + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:60: TrueToken { - mNullToken(); + mTrueToken(); } break; case 14: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:76: DotDot + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:70: NullToken { - mDotDot(); + mNullToken(); } break; case 15: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:83: HexLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:80: DotDot { - mHexLiteral(); + mDotDot(); } break; case 16: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:94: DecimalLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:87: HexLiteral { - mDecimalLiteral(); + mHexLiteral(); } break; case 17: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:109: OctalLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:98: DecimalLiteral { - mOctalLiteral(); + mDecimalLiteral(); } break; case 18: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:122: FloatingPointLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:113: OctalLiteral { - mFloatingPointLiteral(); + mOctalLiteral(); } break; case 19: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:143: CharacterLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:126: FloatingPointLiteral { - mCharacterLiteral(); + mFloatingPointLiteral(); } break; case 20: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:160: StringLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:147: CharacterLiteral { - mStringLiteral(); + mCharacterLiteral(); } break; case 21: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:174: JavaIdentifier + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:164: StringLiteral { - mJavaIdentifier(); + mStringLiteral(); } break; case 22: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:189: Identifier + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:178: Identifier { mIdentifier(); } break; case 23: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:200: MethodIdentifier + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:189: NSIdentifier { - mMethodIdentifier(); + mNSIdentifier(); } break; case 24: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:217: WS + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:202: KeywordIdentifier { - mWS(); + mKeywordIdentifier(); } break; case 25: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:220: COMMENT + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:220: MethodIdentifier { - mCOMMENT(); + mMethodIdentifier(); } break; case 26: - // /Users/rich/dev/clojure/src/jvm/Reader.g:1:228: LINE_COMMENT + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:237: WS + { + mWS(); + + } + break; + case 27: + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:240: COMMENT + { + mCOMMENT(); + + } + break; + case 28: + // /Users/rich/dev/clojure/src/jvm/Reader.g:1:248: LINE_COMMENT { mLINE_COMMENT(); @@ -2174,6 +2206,7 @@ public void mTokens() throws RecognitionException{ protected DFA16 dfa16 = new DFA16(this); +protected DFA24 dfa24 = new DFA24(this); protected DFA29 dfa29 = new DFA29(this); static final String DFA16_eotS = "\7\uffff\1\10\2\uffff"; @@ -2184,12 +2217,12 @@ static final String DFA16_minS = static final String DFA16_maxS = "\1\71\1\146\1\uffff\1\71\2\uffff\1\71\1\146\2\uffff"; static final String DFA16_acceptS = - "\2\uffff\1\2\1\uffff\1\4\1\1\2\uffff\2\3"; + "\2\uffff\1\2\1\uffff\1\1\1\4\2\uffff\2\3"; static final String DFA16_specialS = "\12\uffff}>"; static final String[] DFA16_transitionS = { "\1\2\1\uffff\12\1", - "\1\5\1\uffff\12\1\12\uffff\1\4\1\3\1\4\35\uffff\1\4\1\3\1\4", + "\1\4\1\uffff\12\1\12\uffff\1\5\1\3\1\5\35\uffff\1\5\1\3\1\5", "", "\1\6\1\uffff\1\6\2\uffff\12\7", "", @@ -2233,69 +2266,139 @@ class DFA16 extends DFA{ } public String getDescription(){ - return "228:1: FloatingPointLiteral : ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix );"; + return "254:1: FloatingPointLiteral : ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix );"; + } +} + +static final String DFA24_eotS = + "\2\uffff\1\3\1\uffff\1\3\1\uffff"; +static final String DFA24_eofS = + "\6\uffff"; +static final String DFA24_minS = + "\1\72\2\44\1\uffff\1\44\1\uffff"; +static final String DFA24_maxS = + "\1\72\2\ufaff\1\uffff\1\ufaff\1\uffff"; +static final String DFA24_acceptS = + "\3\uffff\1\2\1\uffff\1\1"; +static final String DFA24_specialS = + "\6\uffff}>"; +static final String[] DFA24_transitionS = { + "\1\1", + "\1\2\34\uffff\32\2\4\uffff\1\2\1\uffff\32\2\105\uffff\27\2\1" + + "\uffff\37\2\1\uffff\u1f08\2\u1040\uffff\u0150\2\u0170\uffff" + + "\u0080\2\u0080\uffff\u092e\2\u10d2\uffff\u5200\2\u5900\uffff" + + "\u0200\2", + "\1\4\10\uffff\1\4\1\uffff\1\5\12\4\7\uffff\32\4\4\uffff\1\4" + + "\1\uffff\32\4\105\uffff\27\4\1\uffff\37\4\1\uffff\u1f08\4\u1040" + + "\uffff\u0150\4\u0170\uffff\u0080\4\u0080\uffff\u092e\4\u10d2" + + "\uffff\u5200\4\u5900\uffff\u0200\4", + "", + "\1\4\10\uffff\1\4\1\uffff\1\5\12\4\7\uffff\32\4\4\uffff\1\4" + + "\1\uffff\32\4\105\uffff\27\4\1\uffff\37\4\1\uffff\u1f08\4\u1040" + + "\uffff\u0150\4\u0170\uffff\u0080\4\u0080\uffff\u092e\4\u10d2" + + "\uffff\u5200\4\u5900\uffff\u0200\4", + "" +}; + +static final short[] DFA24_eot = DFA.unpackEncodedString(DFA24_eotS); +static final short[] DFA24_eof = DFA.unpackEncodedString(DFA24_eofS); +static final char[] DFA24_min = DFA.unpackEncodedStringToUnsignedChars(DFA24_minS); +static final char[] DFA24_max = DFA.unpackEncodedStringToUnsignedChars(DFA24_maxS); +static final short[] DFA24_accept = DFA.unpackEncodedString(DFA24_acceptS); +static final short[] DFA24_special = DFA.unpackEncodedString(DFA24_specialS); +static final short[][] DFA24_transition; + +static + { + int numStates = DFA24_transitionS.length; + DFA24_transition = new short[numStates][]; + for(int i = 0; i < numStates; i++) + { + DFA24_transition[i] = DFA.unpackEncodedString(DFA24_transitionS[i]); + } + } + +class DFA24 extends DFA{ + + public DFA24(BaseRecognizer recognizer){ + this.recognizer = recognizer; + this.decisionNumber = 24; + this.eot = DFA24_eot; + this.eof = DFA24_eof; + this.min = DFA24_min; + this.max = DFA24_max; + this.accept = DFA24_accept; + this.special = DFA24_special; + this.transition = DFA24_transition; + } + + public String getDescription(){ + return "308:1: KeywordIdentifier : ( ':' Identifier '/' Identifier | ':' Identifier );"; } } static final String DFA29_eotS = - "\12\uffff\1\31\1\uffff\2\33\2\42\2\uffff\1\33\7\uffff\1\33\1\uffff" + - "\1\33\2\uffff\1\33\1\uffff\1\46\1\uffff\1\42\2\33\1\uffff\1\51\1" + - "\52\2\uffff"; + "\11\uffff\1\32\3\uffff\2\35\2\45\2\uffff\1\35\10\uffff\1\35\1\uffff" + + "\1\35\1\uffff\1\35\1\uffff\1\35\1\uffff\1\51\1\uffff\1\45\2\35\1" + + "\uffff\1\54\1\55\2\uffff"; static final String DFA29_eofS = - "\53\uffff"; + "\56\uffff"; static final String DFA29_minS = - "\1\11\10\uffff\1\136\1\56\1\uffff\2\44\2\56\2\uffff\1\44\7\uffff" + - "\1\44\1\uffff\1\44\2\uffff\1\44\1\uffff\1\56\1\uffff\1\56\2\44\1" + - "\uffff\2\44\2\uffff"; + "\1\11\7\uffff\1\136\1\56\3\uffff\2\44\2\56\2\uffff\1\44\10\uffff" + + "\1\44\1\uffff\1\44\1\uffff\1\44\1\uffff\1\44\1\uffff\1\56\1\uffff" + + "\1\56\2\44\1\uffff\2\44\2\uffff"; static final String DFA29_maxS = - "\1\ufaff\10\uffff\1\174\1\71\1\uffff\2\ufaff\1\170\1\146\2\uffff" + - "\1\ufaff\7\uffff\1\ufaff\1\uffff\1\ufaff\2\uffff\1\ufaff\1\uffff" + - "\1\146\1\uffff\1\146\2\ufaff\1\uffff\2\ufaff\2\uffff"; + "\1\ufaff\7\uffff\1\174\1\71\3\uffff\2\ufaff\1\170\1\146\2\uffff" + + "\1\ufaff\10\uffff\1\ufaff\1\uffff\1\ufaff\1\uffff\1\ufaff\1\uffff" + + "\1\ufaff\1\uffff\1\146\1\uffff\1\146\2\ufaff\1\uffff\2\ufaff\2\uffff"; static final String DFA29_acceptS = - "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\2\uffff\1\13\4\uffff\1" + - "\23\1\24\1\uffff\1\30\1\32\1\31\1\11\1\16\1\22\1\12\1\uffff\1\25" + - "\1\uffff\1\27\1\26\1\uffff\1\17\1\uffff\1\20\3\uffff\1\21\2\uffff" + - "\1\14\1\15"; + "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\2\uffff\1\12\1\13\1\14\4\uffff" + + "\1\24\1\25\1\uffff\1\30\1\32\1\34\1\10\1\33\1\17\1\11\1\23\1\uffff" + + "\1\26\1\uffff\1\31\1\uffff\1\27\1\uffff\1\20\1\uffff\1\21\3\uffff" + + "\1\22\2\uffff\1\15\1\16"; static final String DFA29_specialS = - "\53\uffff}>"; + "\56\uffff}>"; static final String[] DFA29_transitionS = { - "\2\23\1\uffff\2\23\22\uffff\1\23\1\uffff\1\21\1\11\1\22\3\uffff" + - "\1\1\1\2\2\uffff\1\13\1\uffff\1\12\1\7\1\16\11\17\1\10\1\24" + - "\5\uffff\32\22\1\3\1\20\1\4\1\uffff\1\22\1\uffff\15\22\1\15" + - "\5\22\1\14\6\22\1\5\1\uffff\1\6\102\uffff\27\22\1\uffff\37\22" + - "\1\uffff\u1f08\22\u1040\uffff\u0150\22\u0170\uffff\u0080\22" + - "\u0080\uffff\u092e\22\u10d2\uffff\u5200\22\u5900\uffff\u0200" + - "\22", + "\2\25\1\uffff\2\25\22\uffff\1\25\1\uffff\1\22\1\10\1\23\2\uffff" + + "\1\12\1\1\1\2\2\uffff\1\14\1\uffff\1\11\1\7\1\17\11\20\1\24" + + "\1\26\5\uffff\32\23\1\3\1\21\1\4\1\13\1\23\1\uffff\15\23\1\16" + + "\5\23\1\15\6\23\1\5\1\uffff\1\6\102\uffff\27\23\1\uffff\37\23" + + "\1\uffff\u1f08\23\u1040\uffff\u0150\23\u0170\uffff\u0080\23" + + "\u0080\uffff\u092e\23\u10d2\uffff\u5200\23\u5900\uffff\u0200" + + "\23", + "", + "", "", "", "", "", "", + "\1\27\35\uffff\1\30", + "\1\31\1\uffff\12\33", "", "", "", - "\1\26\35\uffff\1\25", - "\1\27\1\uffff\12\30", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\21\36\1\34\10\36\105\uffff\27\36\1" + + "\uffff\37\36\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff" + + "\u0080\36\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff" + + "\u0200\36", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\24\36\1\42\5\36\105\uffff\27\36\1\uffff" + + "\37\36\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080" + + "\36\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200" + + "\36", + "\1\33\1\uffff\10\44\2\33\12\uffff\3\33\21\uffff\1\43\13\uffff" + + "\3\33\21\uffff\1\43", + "\1\33\1\uffff\12\46\12\uffff\3\33\35\uffff\3\33", "", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\21\34\1\32\10\34\105\uffff\27\34\1\uffff" + - "\37\34\1\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080" + - "\34\u0080\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200" + - "\34", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\24\34\1\37\5\34\105\uffff\27\34\1\uffff" + - "\37\34\1\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080" + - "\34\u0080\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200" + - "\34", - "\1\30\1\uffff\10\41\2\30\12\uffff\3\30\21\uffff\1\40\13\uffff" + - "\3\30\21\uffff\1\40", - "\1\30\1\uffff\12\43\12\uffff\3\30\35\uffff\3\30", "", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36" + + "\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080\36" + + "\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200" + + "\36", "", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\32\34\105\uffff\27\34\1\uffff\37\34\1" + - "\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080\34\u0080" + - "\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200\34", "", "", "", @@ -2303,46 +2406,53 @@ static final String[] DFA29_transitionS = { "", "", "", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\24\34\1\44\5\34\105\uffff\27\34\1\uffff" + - "\37\34\1\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080" + - "\34\u0080\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200" + - "\34", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\24\36\1\47\5\36\105\uffff\27\36\1\uffff" + + "\37\36\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080" + + "\36\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200" + + "\36", "", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\32\34\105\uffff\27\34\1\uffff\37\34\1" + - "\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080\34\u0080" + - "\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200\34", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36" + + "\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080\36" + + "\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200" + + "\36", "", + "\1\40\10\uffff\1\40\1\uffff\1\41\12\40\7\uffff\32\40\4\uffff" + + "\1\40\1\uffff\32\40\105\uffff\27\40\1\uffff\37\40\1\uffff\u1f08" + + "\40\u1040\uffff\u0150\40\u0170\uffff\u0080\40\u0080\uffff\u092e" + + "\40\u10d2\uffff\u5200\40\u5900\uffff\u0200\40", "", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\13\34\1\45\16\34\105\uffff\27\34\1\uffff" + - "\37\34\1\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080" + - "\34\u0080\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200" + - "\34", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\13\36\1\50\16\36\105\uffff\27\36\1" + + "\uffff\37\36\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff" + + "\u0080\36\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff" + + "\u0200\36", "", - "\1\30\1\uffff\10\41\2\30\12\uffff\3\30\35\uffff\3\30", + "\1\33\1\uffff\10\44\2\33\12\uffff\3\33\35\uffff\3\33", "", - "\1\30\1\uffff\12\43\12\uffff\3\30\35\uffff\3\30", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\4\34\1\47\25\34\105\uffff\27\34\1\uffff" + - "\37\34\1\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080" + - "\34\u0080\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200" + - "\34", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\13\34\1\50\16\34\105\uffff\27\34\1\uffff" + - "\37\34\1\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080" + - "\34\u0080\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200" + - "\34", + "\1\33\1\uffff\12\46\12\uffff\3\33\35\uffff\3\33", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\4\36\1\52\25\36\105\uffff\27\36\1\uffff" + + "\37\36\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080" + + "\36\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200" + + "\36", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\13\36\1\53\16\36\105\uffff\27\36\1" + + "\uffff\37\36\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff" + + "\u0080\36\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff" + + "\u0200\36", "", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\32\34\105\uffff\27\34\1\uffff\37\34\1" + - "\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080\34\u0080" + - "\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200\34", - "\1\34\3\uffff\1\35\4\uffff\1\36\2\uffff\12\34\7\uffff\32\34" + - "\4\uffff\1\34\1\uffff\32\34\105\uffff\27\34\1\uffff\37\34\1" + - "\uffff\u1f08\34\u1040\uffff\u0150\34\u0170\uffff\u0080\34\u0080" + - "\uffff\u092e\34\u10d2\uffff\u5200\34\u5900\uffff\u0200\34", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36" + + "\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080\36" + + "\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200" + + "\36", + "\1\36\3\uffff\1\37\4\uffff\1\40\1\uffff\1\41\12\36\7\uffff\32" + + "\36\4\uffff\1\36\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36" + + "\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080\36" + + "\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200" + + "\36", "", "" }; @@ -2380,7 +2490,7 @@ class DFA29 extends DFA{ } public String getDescription(){ - return "1:1: Tokens : ( T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | Comma | TrueToken | NullToken | DotDot | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | JavaIdentifier | Identifier | MethodIdentifier | WS | COMMENT | LINE_COMMENT );"; + return "1:1: Tokens : ( T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | Comma | TrueToken | NullToken | DotDot | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | Identifier | NSIdentifier | KeywordIdentifier | MethodIdentifier | WS | COMMENT | LINE_COMMENT );"; } } diff --git a/src/jvm/clojure/lang/ReaderParser.java b/src/jvm/clojure/lang/ReaderParser.java index 5cfab491..e4ab4e96 100644 --- a/src/jvm/clojure/lang/ReaderParser.java +++ b/src/jvm/clojure/lang/ReaderParser.java @@ -1,4 +1,4 @@ -// $ANTLR 3.0 /Users/rich/dev/clojure/src/jvm/Reader.g 2007-07-13 12:56:20 +// $ANTLR 3.0 /Users/rich/dev/clojure/src/jvm/Reader.g 2007-07-16 11:13:34 package clojure.lang; @@ -26,41 +26,42 @@ import java.util.HashMap; */ public class ReaderParser extends Parser{ public static final String[] tokenNames = new String[]{ - "<invalid>", "<EOR>", "<DOWN>", "<UP>", "Identifier", "JavaIdentifier", "DotDot", "FloatingPointLiteral", - "CharacterLiteral", "StringLiteral", "TrueToken", "NullToken", "DecimalLiteral", "HexLiteral", "OctalLiteral", - "MethodIdentifier", "Comma", "HexDigit", "Exponent", "FloatTypeSuffix", "EscapeSequence", "UnicodeEscape", - "OctalEscape", "Letter", "JavaIDDigit", "WS", "COMMENT", "LINE_COMMENT", "'('", "')'", "'['", "']'", "'{'", - "'}'", "'/'", "':'", "'#^'", "'.'" + "<invalid>", "<EOR>", "<DOWN>", "<UP>", "Identifier", "NSIdentifier", "DotDot", "KeywordIdentifier", + "FloatingPointLiteral", "CharacterLiteral", "StringLiteral", "TrueToken", "NullToken", "DecimalLiteral", + "HexLiteral", "OctalLiteral", "MethodIdentifier", "Comma", "HexDigit", "Exponent", "FloatTypeSuffix", + "EscapeSequence", "UnicodeEscape", "OctalEscape", "Letter", "JavaIDDigit", "WS", "COMMENT", "LINE_COMMENT", + "'('", "')'", "'['", "']'", "'{'", "'}'", "'/'", "'#^'", "'.'", "'\\''", "'^'" }; -public static final int TrueToken = 10; -public static final int Exponent = 18; -public static final int OctalLiteral = 14; +public static final int TrueToken = 11; +public static final int Exponent = 19; +public static final int OctalLiteral = 15; public static final int Identifier = 4; -public static final int HexDigit = 17; -public static final int WS = 25; -public static final int CharacterLiteral = 8; -public static final int MethodIdentifier = 15; -public static final int COMMENT = 26; -public static final int StringLiteral = 9; -public static final int LINE_COMMENT = 27; +public static final int HexDigit = 18; +public static final int WS = 26; +public static final int CharacterLiteral = 9; +public static final int MethodIdentifier = 16; +public static final int NSIdentifier = 5; +public static final int COMMENT = 27; +public static final int KeywordIdentifier = 7; +public static final int StringLiteral = 10; +public static final int LINE_COMMENT = 28; public static final int DotDot = 6; -public static final int JavaIDDigit = 24; -public static final int Letter = 23; -public static final int UnicodeEscape = 21; -public static final int HexLiteral = 13; -public static final int Comma = 16; -public static final int EscapeSequence = 20; +public static final int JavaIDDigit = 25; +public static final int Letter = 24; +public static final int UnicodeEscape = 22; +public static final int HexLiteral = 14; +public static final int Comma = 17; +public static final int EscapeSequence = 21; public static final int EOF = -1; -public static final int NullToken = 11; -public static final int DecimalLiteral = 12; -public static final int OctalEscape = 22; -public static final int FloatingPointLiteral = 7; -public static final int JavaIdentifier = 5; -public static final int FloatTypeSuffix = 19; +public static final int NullToken = 12; +public static final int DecimalLiteral = 13; +public static final int OctalEscape = 23; +public static final int FloatingPointLiteral = 8; +public static final int FloatTypeSuffix = 20; public ReaderParser(TokenStream input){ super(input); - ruleMemo = new HashMap[47 + 1]; + ruleMemo = new HashMap[48 + 1]; } @@ -77,17 +78,23 @@ public String getGrammarFileName(){ //after: // if (failed) return val; -/*WARNING- HAND MODIFIED! - if(es == null) es = new ArrayList(); - es.add(e); - // END HAND MODIFIED*/ +/* + //WARNING- HAND MODIFIED! + if(es == null) es = new ArrayList(); + es.add(e); + // END HAND MODIFIED + */ //add this to mapexpr: -/*WARNING- HAND MODIFIED! - val = val.assoc(k, v); - // END HAND MODIFIED*/ +/* + //WARNING- HAND MODIFIED! + val = val.assoc(k, v); + // END HAND MODIFIED + */ final static Symbol DOTDOT = new Symbol(".."); +final static Symbol QUOTE = new Symbol("quote"); +final static Symbol META = new Symbol("meta"); public static void main(String[] args) throws Exception{ Writer w = new PrintWriter(System.out); @@ -104,7 +111,7 @@ public static void main(String[] args) throws Exception{ { if(lexer.rex != null) throw lexer.rex; - for(int i = 0; i < 10; i++) + for(int i = 0; i < 20; i++) { Object e = parser.expression(); RT.print(e, w); @@ -132,7 +139,7 @@ public void recoverFromMismatchedSet(IntStream input, // $ANTLR start expression -// /Users/rich/dev/clojure/src/jvm/Reader.g:106:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression ); +// /Users/rich/dev/clojure/src/jvm/Reader.g:121:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression | q= quotedExpression | ct= caretExpression ); public final Object expression() throws RecognitionException{ Object val = null; int expression_StartIndex = input.index(); @@ -152,6 +159,10 @@ public final Object expression() throws RecognitionException{ Object g = null; + Object q = null; + + Object ct = null; + try { @@ -159,8 +170,8 @@ public final Object expression() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:107:4: (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression ) - int alt1 = 8; + // /Users/rich/dev/clojure/src/jvm/Reader.g:122:4: (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression | q= quotedExpression | ct= caretExpression ) + int alt1 = 10; switch(input.LA(1)) { case FloatingPointLiteral: @@ -176,116 +187,75 @@ public final Object expression() throws RecognitionException{ } break; case Identifier: - case JavaIdentifier: { - switch(input.LA(2)) + int LA1_2 = input.LA(2); + + if((LA1_2 == EOF || (LA1_2 >= Identifier && LA1_2 <= OctalLiteral) || LA1_2 == Comma || + (LA1_2 >= 29 && LA1_2 <= 34) || LA1_2 == 36 || (LA1_2 >= 38 && LA1_2 <= 39))) { - case 34: + alt1 = 2; + } + else if((LA1_2 == 37)) { - int LA1_9 = input.LA(3); - - if(((LA1_9 >= Identifier && LA1_9 <= JavaIdentifier))) + alt1 = 8; + } + else + { + if(backtracking > 0) { - int LA1_12 = input.LA(4); - - if((LA1_12 == 37)) - { - alt1 = 8; - } - else if((LA1_12 == EOF || (LA1_12 >= Identifier && LA1_12 <= OctalLiteral) || LA1_12 == Comma || - (LA1_12 >= 28 && LA1_12 <= 33) || (LA1_12 >= 35 && LA1_12 <= 36))) - { - alt1 = 2; - } - else - { - if(backtracking > 0) - { - failed = true; - return val; - } - NoViableAltException nvae = - new NoViableAltException( - "106:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression );", - 1, 12, input); - - throw nvae; - } + failed = true; + return val; } - else - { - if(backtracking > 0) - { - failed = true; - return val; - } - NoViableAltException nvae = - new NoViableAltException( - "106:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression );", - 1, 9, input); + NoViableAltException nvae = + new NoViableAltException( + "121:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression | q= quotedExpression | ct= caretExpression );", + 1, 2, input); - throw nvae; - } + throw nvae; } - break; - case 37: + } + break; + case NSIdentifier: + { + int LA1_3 = input.LA(2); + + if((LA1_3 == EOF || (LA1_3 >= Identifier && LA1_3 <= OctalLiteral) || LA1_3 == Comma || + (LA1_3 >= 29 && LA1_3 <= 34) || LA1_3 == 36 || (LA1_3 >= 38 && LA1_3 <= 39))) { - alt1 = 8; + alt1 = 2; } - break; - case EOF: - case Identifier: - case JavaIdentifier: - case DotDot: - case FloatingPointLiteral: - case CharacterLiteral: - case StringLiteral: - case TrueToken: - case NullToken: - case DecimalLiteral: - case HexLiteral: - case OctalLiteral: - case Comma: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 35: - case 36: + else if((LA1_3 == 37)) { - alt1 = 2; + alt1 = 8; } - break; - default: - if(backtracking > 0) - { - failed = true; - return val; - } - NoViableAltException nvae = - new NoViableAltException( - "106:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression );", - 1, 2, input); + else + { + if(backtracking > 0) + { + failed = true; + return val; + } + NoViableAltException nvae = + new NoViableAltException( + "121:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression | q= quotedExpression | ct= caretExpression );", + 1, 3, input); - throw nvae; + throw nvae; } - } break; case DotDot: { - int LA1_3 = input.LA(2); + int LA1_4 = input.LA(2); - if((LA1_3 == 37)) + if((LA1_4 == EOF || (LA1_4 >= Identifier && LA1_4 <= OctalLiteral) || LA1_4 == Comma || + (LA1_4 >= 29 && LA1_4 <= 34) || LA1_4 == 36 || (LA1_4 >= 38 && LA1_4 <= 39))) { - alt1 = 8; + alt1 = 2; } - else if((LA1_3 == EOF || (LA1_3 >= Identifier && LA1_3 <= OctalLiteral) || LA1_3 == Comma || - (LA1_3 >= 28 && LA1_3 <= 33) || (LA1_3 >= 35 && LA1_3 <= 36))) + else if((LA1_4 == 37)) { - alt1 = 2; + alt1 = 8; } else { @@ -296,29 +266,29 @@ public final Object expression() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "106:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression );", - 1, 3, input); + "121:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression | q= quotedExpression | ct= caretExpression );", + 1, 4, input); throw nvae; } } break; - case 35: + case KeywordIdentifier: { alt1 = 3; } break; - case 28: + case 29: { alt1 = 4; } break; - case 30: + case 31: { alt1 = 5; } break; - case 32: + case 33: { alt1 = 6; } @@ -328,6 +298,16 @@ public final Object expression() throws RecognitionException{ alt1 = 7; } break; + case 38: + { + alt1 = 9; + } + break; + case 39: + { + alt1 = 10; + } + break; default: if(backtracking > 0) { @@ -336,7 +316,7 @@ public final Object expression() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "106:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression );", + "121:1: expression returns [Object val] : (lt= literal | s= symbol | k= keyword | le= listExpression | ve= vectorExpression | me= mapExpression | mx= metaExpression | g= dotExpression | q= quotedExpression | ct= caretExpression );", 1, 0, input); throw nvae; @@ -345,7 +325,7 @@ public final Object expression() throws RecognitionException{ switch(alt1) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:107:4: lt= literal + // /Users/rich/dev/clojure/src/jvm/Reader.g:122:4: lt= literal { pushFollow(FOLLOW_literal_in_expression73); lt = literal(); @@ -359,7 +339,7 @@ public final Object expression() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:108:3: s= symbol + // /Users/rich/dev/clojure/src/jvm/Reader.g:123:3: s= symbol { pushFollow(FOLLOW_symbol_in_expression83); s = symbol(); @@ -373,7 +353,7 @@ public final Object expression() throws RecognitionException{ } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:109:3: k= keyword + // /Users/rich/dev/clojure/src/jvm/Reader.g:124:3: k= keyword { pushFollow(FOLLOW_keyword_in_expression93); k = keyword(); @@ -387,7 +367,7 @@ public final Object expression() throws RecognitionException{ } break; case 4: - // /Users/rich/dev/clojure/src/jvm/Reader.g:110:3: le= listExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:125:3: le= listExpression { pushFollow(FOLLOW_listExpression_in_expression103); le = listExpression(); @@ -401,7 +381,7 @@ public final Object expression() throws RecognitionException{ } break; case 5: - // /Users/rich/dev/clojure/src/jvm/Reader.g:111:3: ve= vectorExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:126:3: ve= vectorExpression { pushFollow(FOLLOW_vectorExpression_in_expression113); ve = vectorExpression(); @@ -415,7 +395,7 @@ public final Object expression() throws RecognitionException{ } break; case 6: - // /Users/rich/dev/clojure/src/jvm/Reader.g:112:3: me= mapExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:127:3: me= mapExpression { pushFollow(FOLLOW_mapExpression_in_expression123); me = mapExpression(); @@ -429,7 +409,7 @@ public final Object expression() throws RecognitionException{ } break; case 7: - // /Users/rich/dev/clojure/src/jvm/Reader.g:113:3: mx= metaExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:128:3: mx= metaExpression { pushFollow(FOLLOW_metaExpression_in_expression133); mx = metaExpression(); @@ -443,7 +423,7 @@ public final Object expression() throws RecognitionException{ } break; case 8: - // /Users/rich/dev/clojure/src/jvm/Reader.g:114:3: g= dotExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:129:3: g= dotExpression { pushFollow(FOLLOW_dotExpression_in_expression143); g = dotExpression(); @@ -456,6 +436,34 @@ public final Object expression() throws RecognitionException{ } break; + case 9: + // /Users/rich/dev/clojure/src/jvm/Reader.g:130:3: q= quotedExpression + { + pushFollow(FOLLOW_quotedExpression_in_expression153); + q = quotedExpression(); + _fsp--; + if(failed) return val; + if(backtracking == 0) + { + val = q; + } + + } + break; + case 10: + // /Users/rich/dev/clojure/src/jvm/Reader.g:131:3: ct= caretExpression + { + pushFollow(FOLLOW_caretExpression_in_expression163); + ct = caretExpression(); + _fsp--; + if(failed) return val; + if(backtracking == 0) + { + val = ct; + } + + } + break; } } @@ -476,7 +484,7 @@ public final Object expression() throws RecognitionException{ // $ANTLR end expression // $ANTLR start listExpression -// /Users/rich/dev/clojure/src/jvm/Reader.g:117:1: listExpression returns [ISeq val] : '(' es= expressions ')' ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:134:1: listExpression returns [ISeq val] : '(' es= expressions ')' ; public final ISeq listExpression() throws RecognitionException{ ISeq val = null; @@ -490,16 +498,16 @@ public final ISeq listExpression() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:118:4: ( '(' es= expressions ')' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:118:4: '(' es= expressions ')' + // /Users/rich/dev/clojure/src/jvm/Reader.g:135:4: ( '(' es= expressions ')' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:135:4: '(' es= expressions ')' { - match(input, 28, FOLLOW_28_in_listExpression160); + match(input, 29, FOLLOW_29_in_listExpression180); if(failed) return val; - pushFollow(FOLLOW_expressions_in_listExpression167); + pushFollow(FOLLOW_expressions_in_listExpression187); es = expressions(); _fsp--; if(failed) return val; - match(input, 29, FOLLOW_29_in_listExpression169); + match(input, 30, FOLLOW_30_in_listExpression189); if(failed) return val; if(backtracking == 0) { @@ -526,7 +534,7 @@ public final ISeq listExpression() throws RecognitionException{ // $ANTLR end listExpression // $ANTLR start expressions -// /Users/rich/dev/clojure/src/jvm/Reader.g:121:10: fragment expressions returns [List es] : (e= expression )* ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:138:10: fragment expressions returns [List es] : (e= expression )* ; public final List expressions() throws RecognitionException{ List es = null; @@ -540,18 +548,18 @@ public final List expressions() throws RecognitionException{ { return es; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:122:4: ( (e= expression )* ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:122:4: (e= expression )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:139:4: ( (e= expression )* ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:139:4: (e= expression )* { - // /Users/rich/dev/clojure/src/jvm/Reader.g:122:6: (e= expression )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:139:6: (e= expression )* loop2: do { int alt2 = 2; int LA2_0 = input.LA(1); - if(((LA2_0 >= Identifier && LA2_0 <= OctalLiteral) || LA2_0 == 28 || LA2_0 == 30 || LA2_0 == 32 || - (LA2_0 >= 35 && LA2_0 <= 36))) + if(((LA2_0 >= Identifier && LA2_0 <= OctalLiteral) || LA2_0 == 29 || LA2_0 == 31 || LA2_0 == 33 || + LA2_0 == 36 || (LA2_0 >= 38 && LA2_0 <= 39))) { alt2 = 1; } @@ -562,14 +570,10 @@ public final List expressions() throws RecognitionException{ case 1: // /Users/rich/dev/clojure/src/jvm/Reader.g:0:0: e= expression { - pushFollow(FOLLOW_expression_in_expressions191); + pushFollow(FOLLOW_expression_in_expressions211); e = expression(); _fsp--; if(failed) return es; - //*WARNING- HAND MODIFIED! - if(es == null) es = new ArrayList(); - es.add(e); - // END HAND MODIFIED*/ } break; @@ -600,7 +604,7 @@ public final List expressions() throws RecognitionException{ // $ANTLR end expressions // $ANTLR start vectorExpression -// /Users/rich/dev/clojure/src/jvm/Reader.g:125:1: vectorExpression returns [IPersistentArray val] : '[' es= expressions ']' ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:142:1: vectorExpression returns [IPersistentArray val] : '[' es= expressions ']' ; public final IPersistentArray vectorExpression() throws RecognitionException{ IPersistentArray val = null; @@ -614,16 +618,16 @@ public final IPersistentArray vectorExpression() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:126:4: ( '[' es= expressions ']' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:126:4: '[' es= expressions ']' + // /Users/rich/dev/clojure/src/jvm/Reader.g:143:4: ( '[' es= expressions ']' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:143:4: '[' es= expressions ']' { - match(input, 30, FOLLOW_30_in_vectorExpression208); + match(input, 31, FOLLOW_31_in_vectorExpression228); if(failed) return val; - pushFollow(FOLLOW_expressions_in_vectorExpression214); + pushFollow(FOLLOW_expressions_in_vectorExpression234); es = expressions(); _fsp--; if(failed) return val; - match(input, 31, FOLLOW_31_in_vectorExpression216); + match(input, 32, FOLLOW_32_in_vectorExpression236); if(failed) return val; if(backtracking == 0) { @@ -650,7 +654,7 @@ public final IPersistentArray vectorExpression() throws RecognitionException{ // $ANTLR end vectorExpression // $ANTLR start mapExpression -// /Users/rich/dev/clojure/src/jvm/Reader.g:129:1: mapExpression returns [IPersistentMap val] : '{' (k= expression v= expression )* '}' ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:146:1: mapExpression returns [IPersistentMap val] : '{' (k= expression v= expression )* '}' ; public final IPersistentMap mapExpression() throws RecognitionException{ IPersistentMap val = null; @@ -668,20 +672,20 @@ public final IPersistentMap mapExpression() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:133:4: ( '{' (k= expression v= expression )* '}' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:133:4: '{' (k= expression v= expression )* '}' + // /Users/rich/dev/clojure/src/jvm/Reader.g:150:4: ( '{' (k= expression v= expression )* '}' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:150:4: '{' (k= expression v= expression )* '}' { - match(input, 32, FOLLOW_32_in_mapExpression236); + match(input, 33, FOLLOW_33_in_mapExpression256); if(failed) return val; - // /Users/rich/dev/clojure/src/jvm/Reader.g:133:8: (k= expression v= expression )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:150:8: (k= expression v= expression )* loop3: do { int alt3 = 2; int LA3_0 = input.LA(1); - if(((LA3_0 >= Identifier && LA3_0 <= OctalLiteral) || LA3_0 == 28 || LA3_0 == 30 || LA3_0 == 32 || - (LA3_0 >= 35 && LA3_0 <= 36))) + if(((LA3_0 >= Identifier && LA3_0 <= OctalLiteral) || LA3_0 == 29 || LA3_0 == 31 || LA3_0 == 33 || + LA3_0 == 36 || (LA3_0 >= 38 && LA3_0 <= 39))) { alt3 = 1; } @@ -690,19 +694,16 @@ public final IPersistentMap mapExpression() throws RecognitionException{ switch(alt3) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:133:9: k= expression v= expression + // /Users/rich/dev/clojure/src/jvm/Reader.g:150:9: k= expression v= expression { - pushFollow(FOLLOW_expression_in_mapExpression241); + pushFollow(FOLLOW_expression_in_mapExpression261); k = expression(); _fsp--; if(failed) return val; - pushFollow(FOLLOW_expression_in_mapExpression245); + pushFollow(FOLLOW_expression_in_mapExpression265); v = expression(); _fsp--; if(failed) return val; - //*WARNING- HAND MODIFIED! - val = val.assoc(k, v); - // END HAND MODIFIED*/ } break; @@ -712,7 +713,7 @@ public final IPersistentMap mapExpression() throws RecognitionException{ } } while(true); - match(input, 33, FOLLOW_33_in_mapExpression249); + match(input, 34, FOLLOW_34_in_mapExpression269); if(failed) return val; } @@ -735,14 +736,12 @@ public final IPersistentMap mapExpression() throws RecognitionException{ // $ANTLR end mapExpression // $ANTLR start symbol -// /Users/rich/dev/clojure/src/jvm/Reader.g:136:1: symbol returns [Symbol val] : (n= ( Identifier | JavaIdentifier ) | ns= ( Identifier | JavaIdentifier ) '/' nn= ( Identifier | JavaIdentifier ) | dd= DotDot ); +// /Users/rich/dev/clojure/src/jvm/Reader.g:153:1: symbol returns [Symbol val] : (n= Identifier | n= NSIdentifier | dd= DotDot ); public final Symbol symbol() throws RecognitionException{ Symbol val = null; int symbol_StartIndex = input.index(); Token n = null; - Token ns = null; - Token nn = null; Token dd = null; try @@ -751,25 +750,26 @@ public final Symbol symbol() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:137:3: (n= ( Identifier | JavaIdentifier ) | ns= ( Identifier | JavaIdentifier ) '/' nn= ( Identifier | JavaIdentifier ) | dd= DotDot ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:154:3: (n= Identifier | n= NSIdentifier | dd= DotDot ) int alt4 = 3; - int LA4_0 = input.LA(1); - - if(((LA4_0 >= Identifier && LA4_0 <= JavaIdentifier))) + switch(input.LA(1)) { - int LA4_1 = input.LA(2); - - if((LA4_1 == 34)) - { - alt4 = 2; - } - else if((LA4_1 == EOF || (LA4_1 >= Identifier && LA4_1 <= OctalLiteral) || LA4_1 == Comma || - (LA4_1 >= 28 && LA4_1 <= 33) || (LA4_1 >= 35 && LA4_1 <= 37))) - { - alt4 = 1; - } - else - { + case Identifier: + { + alt4 = 1; + } + break; + case NSIdentifier: + { + alt4 = 2; + } + break; + case DotDot: + { + alt4 = 3; + } + break; + default: if(backtracking > 0) { failed = true; @@ -777,55 +777,20 @@ public final Symbol symbol() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "136:1: symbol returns [Symbol val] : (n= ( Identifier | JavaIdentifier ) | ns= ( Identifier | JavaIdentifier ) '/' nn= ( Identifier | JavaIdentifier ) | dd= DotDot );", - 4, 1, input); + "153:1: symbol returns [Symbol val] : (n= Identifier | n= NSIdentifier | dd= DotDot );", + 4, 0, input); throw nvae; - } - } - else if((LA4_0 == DotDot)) - { - alt4 = 3; } - else - { - if(backtracking > 0) - { - failed = true; - return val; - } - NoViableAltException nvae = - new NoViableAltException( - "136:1: symbol returns [Symbol val] : (n= ( Identifier | JavaIdentifier ) | ns= ( Identifier | JavaIdentifier ) '/' nn= ( Identifier | JavaIdentifier ) | dd= DotDot );", - 4, 0, input); - throw nvae; - } switch(alt4) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:137:3: n= ( Identifier | JavaIdentifier ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:154:3: n= Identifier { n = (Token) input.LT(1); - if((input.LA(1) >= Identifier && input.LA(1) <= JavaIdentifier)) - { - input.consume(); - errorRecovery = false; - failed = false; - } - else - { - if(backtracking > 0) - { - failed = true; - return val; - } - MismatchedSetException mse = - new MismatchedSetException(null, input); - recoverFromMismatchedSet(input, mse, FOLLOW_set_in_symbol266); - throw mse; - } - + match(input, Identifier, FOLLOW_Identifier_in_symbol286); + if(failed) return val; if(backtracking == 0) { val = new Symbol(n.getText()); @@ -834,59 +799,20 @@ public final Symbol symbol() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:138:3: ns= ( Identifier | JavaIdentifier ) '/' nn= ( Identifier | JavaIdentifier ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:155:3: n= NSIdentifier { - ns = (Token) input.LT(1); - if((input.LA(1) >= Identifier && input.LA(1) <= JavaIdentifier)) - { - input.consume(); - errorRecovery = false; - failed = false; - } - else - { - if(backtracking > 0) - { - failed = true; - return val; - } - MismatchedSetException mse = - new MismatchedSetException(null, input); - recoverFromMismatchedSet(input, mse, FOLLOW_set_in_symbol280); - throw mse; - } - - match(input, 34, FOLLOW_34_in_symbol286); + n = (Token) input.LT(1); + match(input, NSIdentifier, FOLLOW_NSIdentifier_in_symbol296); if(failed) return val; - nn = (Token) input.LT(1); - if((input.LA(1) >= Identifier && input.LA(1) <= JavaIdentifier)) - { - input.consume(); - errorRecovery = false; - failed = false; - } - else - { - if(backtracking > 0) - { - failed = true; - return val; - } - MismatchedSetException mse = - new MismatchedSetException(null, input); - recoverFromMismatchedSet(input, mse, FOLLOW_set_in_symbol292); - throw mse; - } - if(backtracking == 0) { - val = new Symbol(ns.getText(), nn.getText()); + val = new Symbol(n.getText()); } } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:139:3: dd= DotDot + // /Users/rich/dev/clojure/src/jvm/Reader.g:156:3: dd= DotDot { dd = (Token) input.LT(1); match(input, DotDot, FOLLOW_DotDot_in_symbol306); @@ -918,13 +844,12 @@ public final Symbol symbol() throws RecognitionException{ // $ANTLR end symbol // $ANTLR start keyword -// /Users/rich/dev/clojure/src/jvm/Reader.g:142:1: keyword returns [Keyword val] : ':' s= symbol ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:159:1: keyword returns [Keyword val] : k= KeywordIdentifier ; public final Keyword keyword() throws RecognitionException{ Keyword val = null; int keyword_StartIndex = input.index(); - Symbol s = null; - + Token k = null; try { @@ -932,18 +857,15 @@ public final Keyword keyword() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:143:3: ( ':' s= symbol ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:143:3: ':' s= symbol + // /Users/rich/dev/clojure/src/jvm/Reader.g:160:3: (k= KeywordIdentifier ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:160:3: k= KeywordIdentifier { - match(input, 35, FOLLOW_35_in_keyword322); - if(failed) return val; - pushFollow(FOLLOW_symbol_in_keyword328); - s = symbol(); - _fsp--; + k = (Token) input.LT(1); + match(input, KeywordIdentifier, FOLLOW_KeywordIdentifier_in_keyword326); if(failed) return val; if(backtracking == 0) { - val = new Keyword(s); + val = new Keyword(k.getText().substring(1)); } } @@ -966,7 +888,7 @@ public final Keyword keyword() throws RecognitionException{ // $ANTLR end keyword // $ANTLR start literal -// /Users/rich/dev/clojure/src/jvm/Reader.g:147:1: literal returns [Object val] : (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral ); +// /Users/rich/dev/clojure/src/jvm/Reader.g:164:1: literal returns [Object val] : (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral ); public final Object literal() throws RecognitionException{ Object val = null; @@ -985,7 +907,7 @@ public final Object literal() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:148:6: (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:165:6: (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral ) int alt5 = 7; switch(input.LA(1)) { @@ -999,12 +921,12 @@ public final Object literal() throws RecognitionException{ { int LA5_2 = input.LA(2); - if((LA5_2 == 34)) + if((LA5_2 == 35)) { alt5 = 7; } else if((LA5_2 == EOF || (LA5_2 >= Identifier && LA5_2 <= OctalLiteral) || LA5_2 == Comma || - (LA5_2 >= 28 && LA5_2 <= 33) || (LA5_2 >= 35 && LA5_2 <= 36))) + (LA5_2 >= 29 && LA5_2 <= 34) || LA5_2 == 36 || (LA5_2 >= 38 && LA5_2 <= 39))) { alt5 = 1; } @@ -1017,7 +939,7 @@ public final Object literal() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "147:1: literal returns [Object val] : (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral );", + "164:1: literal returns [Object val] : (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral );", 5, 2, input); throw nvae; @@ -1057,7 +979,7 @@ public final Object literal() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "147:1: literal returns [Object val] : (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral );", + "164:1: literal returns [Object val] : (i= integerLiteral | fp= FloatingPointLiteral | c= CharacterLiteral | s= StringLiteral | TrueToken | NullToken | r= ratioLiteral );", 5, 0, input); throw nvae; @@ -1066,9 +988,9 @@ public final Object literal() throws RecognitionException{ switch(alt5) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:148:6: i= integerLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:165:6: i= integerLiteral { - pushFollow(FOLLOW_integerLiteral_in_literal355); + pushFollow(FOLLOW_integerLiteral_in_literal353); i = integerLiteral(); _fsp--; if(failed) return val; @@ -1080,10 +1002,10 @@ public final Object literal() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:149:6: fp= FloatingPointLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:166:6: fp= FloatingPointLiteral { fp = (Token) input.LT(1); - match(input, FloatingPointLiteral, FOLLOW_FloatingPointLiteral_in_literal368); + match(input, FloatingPointLiteral, FOLLOW_FloatingPointLiteral_in_literal366); if(failed) return val; if(backtracking == 0) { @@ -1093,10 +1015,10 @@ public final Object literal() throws RecognitionException{ } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:150:6: c= CharacterLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:167:6: c= CharacterLiteral { c = (Token) input.LT(1); - match(input, CharacterLiteral, FOLLOW_CharacterLiteral_in_literal381); + match(input, CharacterLiteral, FOLLOW_CharacterLiteral_in_literal379); if(failed) return val; if(backtracking == 0) { @@ -1106,10 +1028,10 @@ public final Object literal() throws RecognitionException{ } break; case 4: - // /Users/rich/dev/clojure/src/jvm/Reader.g:151:6: s= StringLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:168:6: s= StringLiteral { s = (Token) input.LT(1); - match(input, StringLiteral, FOLLOW_StringLiteral_in_literal394); + match(input, StringLiteral, FOLLOW_StringLiteral_in_literal392); if(failed) return val; if(backtracking == 0) { @@ -1119,9 +1041,9 @@ public final Object literal() throws RecognitionException{ } break; case 5: - // /Users/rich/dev/clojure/src/jvm/Reader.g:152:6: TrueToken + // /Users/rich/dev/clojure/src/jvm/Reader.g:169:6: TrueToken { - match(input, TrueToken, FOLLOW_TrueToken_in_literal403); + match(input, TrueToken, FOLLOW_TrueToken_in_literal401); if(failed) return val; if(backtracking == 0) { @@ -1131,9 +1053,9 @@ public final Object literal() throws RecognitionException{ } break; case 6: - // /Users/rich/dev/clojure/src/jvm/Reader.g:153:6: NullToken + // /Users/rich/dev/clojure/src/jvm/Reader.g:170:6: NullToken { - match(input, NullToken, FOLLOW_NullToken_in_literal412); + match(input, NullToken, FOLLOW_NullToken_in_literal410); if(failed) return val; if(backtracking == 0) { @@ -1143,9 +1065,9 @@ public final Object literal() throws RecognitionException{ } break; case 7: - // /Users/rich/dev/clojure/src/jvm/Reader.g:154:6: r= ratioLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:171:6: r= ratioLiteral { - pushFollow(FOLLOW_ratioLiteral_in_literal425); + pushFollow(FOLLOW_ratioLiteral_in_literal423); r = ratioLiteral(); _fsp--; if(failed) return val; @@ -1176,7 +1098,7 @@ public final Object literal() throws RecognitionException{ // $ANTLR end literal // $ANTLR start ratioLiteral -// /Users/rich/dev/clojure/src/jvm/Reader.g:157:1: ratioLiteral returns [Num val] : n= DecimalLiteral '/' d= DecimalLiteral ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:174:1: ratioLiteral returns [Num val] : n= DecimalLiteral '/' d= DecimalLiteral ; public final Num ratioLiteral() throws RecognitionException{ Num val = null; @@ -1190,16 +1112,16 @@ public final Num ratioLiteral() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:158:4: (n= DecimalLiteral '/' d= DecimalLiteral ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:158:4: n= DecimalLiteral '/' d= DecimalLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:175:4: (n= DecimalLiteral '/' d= DecimalLiteral ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:175:4: n= DecimalLiteral '/' d= DecimalLiteral { n = (Token) input.LT(1); - match(input, DecimalLiteral, FOLLOW_DecimalLiteral_in_ratioLiteral448); + match(input, DecimalLiteral, FOLLOW_DecimalLiteral_in_ratioLiteral446); if(failed) return val; - match(input, 34, FOLLOW_34_in_ratioLiteral450); + match(input, 35, FOLLOW_35_in_ratioLiteral448); if(failed) return val; d = (Token) input.LT(1); - match(input, DecimalLiteral, FOLLOW_DecimalLiteral_in_ratioLiteral456); + match(input, DecimalLiteral, FOLLOW_DecimalLiteral_in_ratioLiteral454); if(failed) return val; if(backtracking == 0) { @@ -1226,7 +1148,7 @@ public final Num ratioLiteral() throws RecognitionException{ // $ANTLR end ratioLiteral // $ANTLR start integerLiteral -// /Users/rich/dev/clojure/src/jvm/Reader.g:161:1: integerLiteral returns [Num val] : (hn= HexLiteral | on= OctalLiteral | nn= DecimalLiteral ); +// /Users/rich/dev/clojure/src/jvm/Reader.g:178:1: integerLiteral returns [Num val] : (hn= HexLiteral | on= OctalLiteral | nn= DecimalLiteral ); public final Num integerLiteral() throws RecognitionException{ Num val = null; @@ -1241,7 +1163,7 @@ public final Num integerLiteral() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:162:9: (hn= HexLiteral | on= OctalLiteral | nn= DecimalLiteral ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:179:9: (hn= HexLiteral | on= OctalLiteral | nn= DecimalLiteral ) int alt6 = 3; switch(input.LA(1)) { @@ -1268,7 +1190,7 @@ public final Num integerLiteral() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "161:1: integerLiteral returns [Num val] : (hn= HexLiteral | on= OctalLiteral | nn= DecimalLiteral );", + "178:1: integerLiteral returns [Num val] : (hn= HexLiteral | on= OctalLiteral | nn= DecimalLiteral );", 6, 0, input); throw nvae; @@ -1277,10 +1199,10 @@ public final Num integerLiteral() throws RecognitionException{ switch(alt6) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:162:9: hn= HexLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:179:9: hn= HexLiteral { hn = (Token) input.LT(1); - match(input, HexLiteral, FOLLOW_HexLiteral_in_integerLiteral482); + match(input, HexLiteral, FOLLOW_HexLiteral_in_integerLiteral480); if(failed) return val; if(backtracking == 0) { @@ -1290,10 +1212,10 @@ public final Num integerLiteral() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:163:9: on= OctalLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:180:9: on= OctalLiteral { on = (Token) input.LT(1); - match(input, OctalLiteral, FOLLOW_OctalLiteral_in_integerLiteral501); + match(input, OctalLiteral, FOLLOW_OctalLiteral_in_integerLiteral499); if(failed) return val; if(backtracking == 0) { @@ -1303,10 +1225,10 @@ public final Num integerLiteral() throws RecognitionException{ } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:164:9: nn= DecimalLiteral + // /Users/rich/dev/clojure/src/jvm/Reader.g:181:9: nn= DecimalLiteral { nn = (Token) input.LT(1); - match(input, DecimalLiteral, FOLLOW_DecimalLiteral_in_integerLiteral519); + match(input, DecimalLiteral, FOLLOW_DecimalLiteral_in_integerLiteral517); if(failed) return val; if(backtracking == 0) { @@ -1335,7 +1257,7 @@ public final Num integerLiteral() throws RecognitionException{ // $ANTLR end integerLiteral // $ANTLR start metaTag -// /Users/rich/dev/clojure/src/jvm/Reader.g:169:1: fragment metaTag returns [IPersistentMap val] : ( '#^' s= symbol | '#^' m= mapExpression ); +// /Users/rich/dev/clojure/src/jvm/Reader.g:186:1: fragment metaTag returns [IPersistentMap val] : ( '#^' s= symbol | '#^' m= mapExpression ); public final IPersistentMap metaTag() throws RecognitionException{ IPersistentMap val = null; @@ -1351,7 +1273,7 @@ public final IPersistentMap metaTag() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:171:3: ( '#^' s= symbol | '#^' m= mapExpression ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:188:3: ( '#^' s= symbol | '#^' m= mapExpression ) int alt7 = 2; int LA7_0 = input.LA(1); @@ -1359,7 +1281,7 @@ public final IPersistentMap metaTag() throws RecognitionException{ { int LA7_1 = input.LA(2); - if((LA7_1 == 32)) + if((LA7_1 == 33)) { alt7 = 2; } @@ -1376,7 +1298,7 @@ public final IPersistentMap metaTag() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "169:1: fragment metaTag returns [IPersistentMap val] : ( '#^' s= symbol | '#^' m= mapExpression );", + "186:1: fragment metaTag returns [IPersistentMap val] : ( '#^' s= symbol | '#^' m= mapExpression );", 7, 1, input); throw nvae; @@ -1391,7 +1313,7 @@ public final IPersistentMap metaTag() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "169:1: fragment metaTag returns [IPersistentMap val] : ( '#^' s= symbol | '#^' m= mapExpression );", + "186:1: fragment metaTag returns [IPersistentMap val] : ( '#^' s= symbol | '#^' m= mapExpression );", 7, 0, input); throw nvae; @@ -1399,11 +1321,11 @@ public final IPersistentMap metaTag() throws RecognitionException{ switch(alt7) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:171:3: '#^' s= symbol + // /Users/rich/dev/clojure/src/jvm/Reader.g:188:3: '#^' s= symbol { - match(input, 36, FOLLOW_36_in_metaTag542); + match(input, 36, FOLLOW_36_in_metaTag540); if(failed) return val; - pushFollow(FOLLOW_symbol_in_metaTag548); + pushFollow(FOLLOW_symbol_in_metaTag546); s = symbol(); _fsp--; if(failed) return val; @@ -1415,11 +1337,11 @@ public final IPersistentMap metaTag() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:172:3: '#^' m= mapExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:189:3: '#^' m= mapExpression { - match(input, 36, FOLLOW_36_in_metaTag554); + match(input, 36, FOLLOW_36_in_metaTag552); if(failed) return val; - pushFollow(FOLLOW_mapExpression_in_metaTag560); + pushFollow(FOLLOW_mapExpression_in_metaTag558); m = mapExpression(); _fsp--; if(failed) return val; @@ -1450,7 +1372,7 @@ public final IPersistentMap metaTag() throws RecognitionException{ // $ANTLR end metaTag // $ANTLR start objExpression -// /Users/rich/dev/clojure/src/jvm/Reader.g:175:1: fragment objExpression returns [Obj val] : (s= symbol | le= listExpression | me= mapExpression | ve= vectorExpression ); +// /Users/rich/dev/clojure/src/jvm/Reader.g:192:1: fragment objExpression returns [Obj val] : (s= symbol | le= listExpression | me= mapExpression | ve= vectorExpression ); public final Obj objExpression() throws RecognitionException{ Obj val = null; @@ -1470,28 +1392,28 @@ public final Obj objExpression() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:177:3: (s= symbol | le= listExpression | me= mapExpression | ve= vectorExpression ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:194:3: (s= symbol | le= listExpression | me= mapExpression | ve= vectorExpression ) int alt8 = 4; switch(input.LA(1)) { case Identifier: - case JavaIdentifier: + case NSIdentifier: case DotDot: { alt8 = 1; } break; - case 28: + case 29: { alt8 = 2; } break; - case 32: + case 33: { alt8 = 3; } break; - case 30: + case 31: { alt8 = 4; } @@ -1504,7 +1426,7 @@ public final Obj objExpression() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "175:1: fragment objExpression returns [Obj val] : (s= symbol | le= listExpression | me= mapExpression | ve= vectorExpression );", + "192:1: fragment objExpression returns [Obj val] : (s= symbol | le= listExpression | me= mapExpression | ve= vectorExpression );", 8, 0, input); throw nvae; @@ -1513,9 +1435,9 @@ public final Obj objExpression() throws RecognitionException{ switch(alt8) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:177:3: s= symbol + // /Users/rich/dev/clojure/src/jvm/Reader.g:194:3: s= symbol { - pushFollow(FOLLOW_symbol_in_objExpression583); + pushFollow(FOLLOW_symbol_in_objExpression581); s = symbol(); _fsp--; if(failed) return val; @@ -1527,9 +1449,9 @@ public final Obj objExpression() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:178:3: le= listExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:195:3: le= listExpression { - pushFollow(FOLLOW_listExpression_in_objExpression593); + pushFollow(FOLLOW_listExpression_in_objExpression591); le = listExpression(); _fsp--; if(failed) return val; @@ -1541,9 +1463,9 @@ public final Obj objExpression() throws RecognitionException{ } break; case 3: - // /Users/rich/dev/clojure/src/jvm/Reader.g:179:3: me= mapExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:196:3: me= mapExpression { - pushFollow(FOLLOW_mapExpression_in_objExpression603); + pushFollow(FOLLOW_mapExpression_in_objExpression601); me = mapExpression(); _fsp--; if(failed) return val; @@ -1555,9 +1477,9 @@ public final Obj objExpression() throws RecognitionException{ } break; case 4: - // /Users/rich/dev/clojure/src/jvm/Reader.g:180:3: ve= vectorExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:197:3: ve= vectorExpression { - pushFollow(FOLLOW_vectorExpression_in_objExpression613); + pushFollow(FOLLOW_vectorExpression_in_objExpression611); ve = vectorExpression(); _fsp--; if(failed) return val; @@ -1588,7 +1510,7 @@ public final Obj objExpression() throws RecognitionException{ // $ANTLR end objExpression // $ANTLR start metaExpression -// /Users/rich/dev/clojure/src/jvm/Reader.g:183:1: metaExpression returns [Obj val] : m= metaTag e= objExpression ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:200:1: metaExpression returns [Obj val] : m= metaTag e= objExpression ; public final Obj metaExpression() throws RecognitionException{ Obj val = null; @@ -1604,14 +1526,14 @@ public final Obj metaExpression() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:184:3: (m= metaTag e= objExpression ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:184:3: m= metaTag e= objExpression + // /Users/rich/dev/clojure/src/jvm/Reader.g:201:3: (m= metaTag e= objExpression ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:201:3: m= metaTag e= objExpression { - pushFollow(FOLLOW_metaTag_in_metaExpression635); + pushFollow(FOLLOW_metaTag_in_metaExpression633); m = metaTag(); _fsp--; if(failed) return val; - pushFollow(FOLLOW_objExpression_in_metaExpression641); + pushFollow(FOLLOW_objExpression_in_metaExpression639); e = objExpression(); _fsp--; if(failed) return val; @@ -1640,7 +1562,7 @@ public final Obj metaExpression() throws RecognitionException{ // $ANTLR end metaExpression // $ANTLR start member -// /Users/rich/dev/clojure/src/jvm/Reader.g:187:1: fragment member returns [Object val] : ( '.' i= JavaIdentifier | '.' m= method ); +// /Users/rich/dev/clojure/src/jvm/Reader.g:204:1: fragment member returns [Object val] : ( '.' i= Identifier | '.' m= method ); public final Object member() throws RecognitionException{ Object val = null; @@ -1655,7 +1577,7 @@ public final Object member() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:189:4: ( '.' i= JavaIdentifier | '.' m= method ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:206:4: ( '.' i= Identifier | '.' m= method ) int alt9 = 2; int LA9_0 = input.LA(1); @@ -1663,7 +1585,7 @@ public final Object member() throws RecognitionException{ { int LA9_1 = input.LA(2); - if((LA9_1 == JavaIdentifier)) + if((LA9_1 == Identifier)) { alt9 = 1; } @@ -1680,7 +1602,7 @@ public final Object member() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "187:1: fragment member returns [Object val] : ( '.' i= JavaIdentifier | '.' m= method );", + "204:1: fragment member returns [Object val] : ( '.' i= Identifier | '.' m= method );", 9, 1, input); throw nvae; @@ -1695,20 +1617,20 @@ public final Object member() throws RecognitionException{ } NoViableAltException nvae = new NoViableAltException( - "187:1: fragment member returns [Object val] : ( '.' i= JavaIdentifier | '.' m= method );", - 9, 0, input); + "204:1: fragment member returns [Object val] : ( '.' i= Identifier | '.' m= method );", 9, + 0, input); throw nvae; } switch(alt9) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:189:4: '.' i= JavaIdentifier + // /Users/rich/dev/clojure/src/jvm/Reader.g:206:4: '.' i= Identifier { - match(input, 37, FOLLOW_37_in_member661); + match(input, 37, FOLLOW_37_in_member659); if(failed) return val; i = (Token) input.LT(1); - match(input, JavaIdentifier, FOLLOW_JavaIdentifier_in_member667); + match(input, Identifier, FOLLOW_Identifier_in_member665); if(failed) return val; if(backtracking == 0) { @@ -1718,11 +1640,11 @@ public final Object member() throws RecognitionException{ } break; case 2: - // /Users/rich/dev/clojure/src/jvm/Reader.g:190:4: '.' m= method + // /Users/rich/dev/clojure/src/jvm/Reader.g:207:4: '.' m= method { - match(input, 37, FOLLOW_37_in_member674); + match(input, 37, FOLLOW_37_in_member672); if(failed) return val; - pushFollow(FOLLOW_method_in_member680); + pushFollow(FOLLOW_method_in_member678); m = method(); _fsp--; if(failed) return val; @@ -1753,7 +1675,7 @@ public final Object member() throws RecognitionException{ // $ANTLR end member // $ANTLR start method -// /Users/rich/dev/clojure/src/jvm/Reader.g:193:1: fragment method returns [Object val] : i= MethodIdentifier (es= args )? ')' ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:210:1: fragment method returns [Object val] : i= MethodIdentifier (es= args )? ')' ; public final Object method() throws RecognitionException{ Object val = null; @@ -1768,18 +1690,18 @@ public final Object method() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:195:4: (i= MethodIdentifier (es= args )? ')' ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:195:4: i= MethodIdentifier (es= args )? ')' + // /Users/rich/dev/clojure/src/jvm/Reader.g:212:4: (i= MethodIdentifier (es= args )? ')' ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:212:4: i= MethodIdentifier (es= args )? ')' { i = (Token) input.LT(1); - match(input, MethodIdentifier, FOLLOW_MethodIdentifier_in_method705); + match(input, MethodIdentifier, FOLLOW_MethodIdentifier_in_method703); if(failed) return val; - // /Users/rich/dev/clojure/src/jvm/Reader.g:195:28: (es= args )? + // /Users/rich/dev/clojure/src/jvm/Reader.g:212:28: (es= args )? int alt10 = 2; int LA10_0 = input.LA(1); - if(((LA10_0 >= Identifier && LA10_0 <= OctalLiteral) || LA10_0 == 28 || LA10_0 == 30 || LA10_0 == 32 || - (LA10_0 >= 35 && LA10_0 <= 36))) + if(((LA10_0 >= Identifier && LA10_0 <= OctalLiteral) || LA10_0 == 29 || LA10_0 == 31 || LA10_0 == 33 || + LA10_0 == 36 || (LA10_0 >= 38 && LA10_0 <= 39))) { alt10 = 1; } @@ -1788,7 +1710,7 @@ public final Object method() throws RecognitionException{ case 1: // /Users/rich/dev/clojure/src/jvm/Reader.g:0:0: es= args { - pushFollow(FOLLOW_args_in_method711); + pushFollow(FOLLOW_args_in_method709); es = args(); _fsp--; if(failed) return val; @@ -1798,7 +1720,7 @@ public final Object method() throws RecognitionException{ } - match(input, 29, FOLLOW_29_in_method714); + match(input, 30, FOLLOW_30_in_method712); if(failed) return val; if(backtracking == 0) { @@ -1825,7 +1747,7 @@ public final Object method() throws RecognitionException{ // $ANTLR end method // $ANTLR start args -// /Users/rich/dev/clojure/src/jvm/Reader.g:198:10: fragment args returns [ISeq val] : e1= expression ( Comma e= expression )* ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:215:10: fragment args returns [ISeq val] : e1= expression ( Comma e= expression )* ; public final ISeq args() throws RecognitionException{ ISeq val = null; @@ -1843,14 +1765,14 @@ public final ISeq args() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:202:4: (e1= expression ( Comma e= expression )* ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:202:4: e1= expression ( Comma e= expression )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:219:4: (e1= expression ( Comma e= expression )* ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:219:4: e1= expression ( Comma e= expression )* { - pushFollow(FOLLOW_expression_in_args740); + pushFollow(FOLLOW_expression_in_args738); e1 = expression(); _fsp--; if(failed) return val; - // /Users/rich/dev/clojure/src/jvm/Reader.g:202:21: ( Comma e= expression )* + // /Users/rich/dev/clojure/src/jvm/Reader.g:219:21: ( Comma e= expression )* loop11: do { @@ -1866,18 +1788,14 @@ public final ISeq args() throws RecognitionException{ switch(alt11) { case 1: - // /Users/rich/dev/clojure/src/jvm/Reader.g:202:22: Comma e= expression + // /Users/rich/dev/clojure/src/jvm/Reader.g:219:22: Comma e= expression { - match(input, Comma, FOLLOW_Comma_in_args744); + match(input, Comma, FOLLOW_Comma_in_args742); if(failed) return val; - pushFollow(FOLLOW_expression_in_args750); + pushFollow(FOLLOW_expression_in_args748); e = expression(); _fsp--; if(failed) return val; - //*WARNING- HAND MODIFIED! - if(es == null) es = new ArrayList(); - es.add(e); - // END HAND MODIFIED*/ } break; @@ -1912,7 +1830,7 @@ public final ISeq args() throws RecognitionException{ // $ANTLR end args // $ANTLR start dotExpression -// /Users/rich/dev/clojure/src/jvm/Reader.g:205:1: dotExpression returns [Object val] : s= symbol (e= member )+ ; +// /Users/rich/dev/clojure/src/jvm/Reader.g:222:1: dotExpression returns [Object val] : s= symbol (e= member )+ ; public final Object dotExpression() throws RecognitionException{ Object val = null; @@ -1930,14 +1848,14 @@ public final Object dotExpression() throws RecognitionException{ { return val; } - // /Users/rich/dev/clojure/src/jvm/Reader.g:209:3: (s= symbol (e= member )+ ) - // /Users/rich/dev/clojure/src/jvm/Reader.g:209:3: s= symbol (e= member )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:226:3: (s= symbol (e= member )+ ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:226:3: s= symbol (e= member )+ { - pushFollow(FOLLOW_symbol_in_dotExpression779); + pushFollow(FOLLOW_symbol_in_dotExpression777); s = symbol(); _fsp--; if(failed) return val; - // /Users/rich/dev/clojure/src/jvm/Reader.g:209:16: (e= member )+ + // /Users/rich/dev/clojure/src/jvm/Reader.g:226:16: (e= member )+ int cnt12 = 0; loop12: do @@ -1956,14 +1874,10 @@ public final Object dotExpression() throws RecognitionException{ case 1: // /Users/rich/dev/clojure/src/jvm/Reader.g:0:0: e= member { - pushFollow(FOLLOW_member_in_dotExpression785); + pushFollow(FOLLOW_member_in_dotExpression783); e = member(); _fsp--; if(failed) return val; - //*WARNING- HAND MODIFIED! - if(es == null) es = new ArrayList(); - es.add(e); - // END HAND MODIFIED*/ } break; @@ -2006,6 +1920,102 @@ public final Object dotExpression() throws RecognitionException{ } // $ANTLR end dotExpression +// $ANTLR start quotedExpression +// /Users/rich/dev/clojure/src/jvm/Reader.g:229:1: quotedExpression returns [Object val] : '\\'' e= expression ; + +public final Object quotedExpression() throws RecognitionException{ + Object val = null; + int quotedExpression_StartIndex = input.index(); + Object e = null; + + + try + { + if(backtracking > 0 && alreadyParsedRule(input, 18)) + { + return val; + } + // /Users/rich/dev/clojure/src/jvm/Reader.g:230:3: ( '\\'' e= expression ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:230:3: '\\'' e= expression + { + match(input, 38, FOLLOW_38_in_quotedExpression801); + if(failed) return val; + pushFollow(FOLLOW_expression_in_quotedExpression807); + e = expression(); + _fsp--; + if(failed) return val; + if(backtracking == 0) + { + val = RT.list(QUOTE, e); + } + + } + + } + + catch(RecognitionException exc) + { + throw exc; + } + finally + { + if(backtracking > 0) + { + memoize(input, 18, quotedExpression_StartIndex); + } + } + return val; +} +// $ANTLR end quotedExpression + +// $ANTLR start caretExpression +// /Users/rich/dev/clojure/src/jvm/Reader.g:233:1: caretExpression returns [Object val] : '^' e= expression ; + +public final Object caretExpression() throws RecognitionException{ + Object val = null; + int caretExpression_StartIndex = input.index(); + Object e = null; + + + try + { + if(backtracking > 0 && alreadyParsedRule(input, 19)) + { + return val; + } + // /Users/rich/dev/clojure/src/jvm/Reader.g:234:3: ( '^' e= expression ) + // /Users/rich/dev/clojure/src/jvm/Reader.g:234:3: '^' e= expression + { + match(input, 39, FOLLOW_39_in_caretExpression825); + if(failed) return val; + pushFollow(FOLLOW_expression_in_caretExpression831); + e = expression(); + _fsp--; + if(failed) return val; + if(backtracking == 0) + { + val = RT.list(META, e); + } + + } + + } + + catch(RecognitionException exc) + { + throw exc; + } + finally + { + if(backtracking > 0) + { + memoize(input, 19, caretExpression_StartIndex); + } + } + return val; +} +// $ANTLR end caretExpression + public static final BitSet FOLLOW_literal_in_expression73 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_symbol_in_expression83 = new BitSet(new long[]{0x0000000000000002L}); @@ -2015,58 +2025,61 @@ public static final BitSet FOLLOW_vectorExpression_in_expression113 = new BitSet public static final BitSet FOLLOW_mapExpression_in_expression123 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_metaExpression_in_expression133 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_dotExpression_in_expression143 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_28_in_listExpression160 = new BitSet(new long[]{0x0000001970007FF0L}); -public static final BitSet FOLLOW_expressions_in_listExpression167 = new BitSet(new long[]{0x0000000020000000L}); -public static final BitSet FOLLOW_29_in_listExpression169 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_expression_in_expressions191 = new BitSet(new long[]{0x0000001950007FF2L}); -public static final BitSet FOLLOW_30_in_vectorExpression208 = new BitSet(new long[]{0x00000019D0007FF0L}); -public static final BitSet FOLLOW_expressions_in_vectorExpression214 = new BitSet(new long[]{0x0000000080000000L}); -public static final BitSet FOLLOW_31_in_vectorExpression216 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_32_in_mapExpression236 = new BitSet(new long[]{0x0000001B50007FF0L}); -public static final BitSet FOLLOW_expression_in_mapExpression241 = new BitSet(new long[]{0x0000001950007FF0L}); -public static final BitSet FOLLOW_expression_in_mapExpression245 = new BitSet(new long[]{0x0000001B50007FF0L}); -public static final BitSet FOLLOW_33_in_mapExpression249 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_set_in_symbol266 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_set_in_symbol280 = new BitSet(new long[]{0x0000000400000000L}); -public static final BitSet FOLLOW_34_in_symbol286 = new BitSet(new long[]{0x0000000000000030L}); -public static final BitSet FOLLOW_set_in_symbol292 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_quotedExpression_in_expression153 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_caretExpression_in_expression163 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_29_in_listExpression180 = new BitSet(new long[]{0x000000D2E000FFF0L}); +public static final BitSet FOLLOW_expressions_in_listExpression187 = new BitSet(new long[]{0x0000000040000000L}); +public static final BitSet FOLLOW_30_in_listExpression189 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_expression_in_expressions211 = new BitSet(new long[]{0x000000D2A000FFF2L}); +public static final BitSet FOLLOW_31_in_vectorExpression228 = new BitSet(new long[]{0x000000D3A000FFF0L}); +public static final BitSet FOLLOW_expressions_in_vectorExpression234 = new BitSet(new long[]{0x0000000100000000L}); +public static final BitSet FOLLOW_32_in_vectorExpression236 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_33_in_mapExpression256 = new BitSet(new long[]{0x000000D6A000FFF0L}); +public static final BitSet FOLLOW_expression_in_mapExpression261 = new BitSet(new long[]{0x000000D2A000FFF0L}); +public static final BitSet FOLLOW_expression_in_mapExpression265 = new BitSet(new long[]{0x000000D6A000FFF0L}); +public static final BitSet FOLLOW_34_in_mapExpression269 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_Identifier_in_symbol286 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_NSIdentifier_in_symbol296 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_DotDot_in_symbol306 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_35_in_keyword322 = new BitSet(new long[]{0x0000000000000070L}); -public static final BitSet FOLLOW_symbol_in_keyword328 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_integerLiteral_in_literal355 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_FloatingPointLiteral_in_literal368 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_CharacterLiteral_in_literal381 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_StringLiteral_in_literal394 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_TrueToken_in_literal403 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_NullToken_in_literal412 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_ratioLiteral_in_literal425 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_DecimalLiteral_in_ratioLiteral448 = new BitSet(new long[]{0x0000000400000000L}); -public static final BitSet FOLLOW_34_in_ratioLiteral450 = new BitSet(new long[]{0x0000000000001000L}); -public static final BitSet FOLLOW_DecimalLiteral_in_ratioLiteral456 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_HexLiteral_in_integerLiteral482 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_OctalLiteral_in_integerLiteral501 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_DecimalLiteral_in_integerLiteral519 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_36_in_metaTag542 = new BitSet(new long[]{0x0000000000000070L}); -public static final BitSet FOLLOW_symbol_in_metaTag548 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_36_in_metaTag554 = new BitSet(new long[]{0x0000000100000000L}); -public static final BitSet FOLLOW_mapExpression_in_metaTag560 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_symbol_in_objExpression583 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_listExpression_in_objExpression593 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_mapExpression_in_objExpression603 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_vectorExpression_in_objExpression613 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_metaTag_in_metaExpression635 = new BitSet(new long[]{0x0000000150000070L}); -public static final BitSet FOLLOW_objExpression_in_metaExpression641 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_37_in_member661 = new BitSet(new long[]{0x0000000000000020L}); -public static final BitSet FOLLOW_JavaIdentifier_in_member667 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_37_in_member674 = new BitSet(new long[]{0x0000000000008000L}); -public static final BitSet FOLLOW_method_in_member680 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_MethodIdentifier_in_method705 = new BitSet(new long[]{0x0000001970007FF0L}); -public static final BitSet FOLLOW_args_in_method711 = new BitSet(new long[]{0x0000000020000000L}); -public static final BitSet FOLLOW_29_in_method714 = new BitSet(new long[]{0x0000000000000002L}); -public static final BitSet FOLLOW_expression_in_args740 = new BitSet(new long[]{0x0000000000010002L}); -public static final BitSet FOLLOW_Comma_in_args744 = new BitSet(new long[]{0x0000001950007FF0L}); -public static final BitSet FOLLOW_expression_in_args750 = new BitSet(new long[]{0x0000000000010002L}); -public static final BitSet FOLLOW_symbol_in_dotExpression779 = new BitSet(new long[]{0x0000002000000000L}); -public static final BitSet FOLLOW_member_in_dotExpression785 = new BitSet(new long[]{0x0000002000000002L}); +public static final BitSet FOLLOW_KeywordIdentifier_in_keyword326 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_integerLiteral_in_literal353 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_FloatingPointLiteral_in_literal366 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_CharacterLiteral_in_literal379 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_StringLiteral_in_literal392 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_TrueToken_in_literal401 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_NullToken_in_literal410 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_ratioLiteral_in_literal423 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_DecimalLiteral_in_ratioLiteral446 = new BitSet(new long[]{0x0000000800000000L}); +public static final BitSet FOLLOW_35_in_ratioLiteral448 = new BitSet(new long[]{0x0000000000002000L}); +public static final BitSet FOLLOW_DecimalLiteral_in_ratioLiteral454 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_HexLiteral_in_integerLiteral480 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_OctalLiteral_in_integerLiteral499 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_DecimalLiteral_in_integerLiteral517 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_36_in_metaTag540 = new BitSet(new long[]{0x0000000000000070L}); +public static final BitSet FOLLOW_symbol_in_metaTag546 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_36_in_metaTag552 = new BitSet(new long[]{0x0000000200000000L}); +public static final BitSet FOLLOW_mapExpression_in_metaTag558 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_symbol_in_objExpression581 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_listExpression_in_objExpression591 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_mapExpression_in_objExpression601 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_vectorExpression_in_objExpression611 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_metaTag_in_metaExpression633 = new BitSet(new long[]{0x00000002A0000070L}); +public static final BitSet FOLLOW_objExpression_in_metaExpression639 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_37_in_member659 = new BitSet(new long[]{0x0000000000000010L}); +public static final BitSet FOLLOW_Identifier_in_member665 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_37_in_member672 = new BitSet(new long[]{0x0000000000010000L}); +public static final BitSet FOLLOW_method_in_member678 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_MethodIdentifier_in_method703 = new BitSet(new long[]{0x000000D2E000FFF0L}); +public static final BitSet FOLLOW_args_in_method709 = new BitSet(new long[]{0x0000000040000000L}); +public static final BitSet FOLLOW_30_in_method712 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_expression_in_args738 = new BitSet(new long[]{0x0000000000020002L}); +public static final BitSet FOLLOW_Comma_in_args742 = new BitSet(new long[]{0x000000D2A000FFF0L}); +public static final BitSet FOLLOW_expression_in_args748 = new BitSet(new long[]{0x0000000000020002L}); +public static final BitSet FOLLOW_symbol_in_dotExpression777 = new BitSet(new long[]{0x0000002000000000L}); +public static final BitSet FOLLOW_member_in_dotExpression783 = new BitSet(new long[]{0x0000002000000002L}); +public static final BitSet FOLLOW_38_in_quotedExpression801 = new BitSet(new long[]{0x000000D2A000FFF0L}); +public static final BitSet FOLLOW_expression_in_quotedExpression807 = new BitSet(new long[]{0x0000000000000002L}); +public static final BitSet FOLLOW_39_in_caretExpression825 = new BitSet(new long[]{0x000000D2A000FFF0L}); +public static final BitSet FOLLOW_expression_in_caretExpression831 = new BitSet(new long[]{0x0000000000000002L}); }
\ No newline at end of file diff --git a/src/jvm/clojure/lang/Symbol.java b/src/jvm/clojure/lang/Symbol.java index 07ac492c..4351f554 100644 --- a/src/jvm/clojure/lang/Symbol.java +++ b/src/jvm/clojure/lang/Symbol.java @@ -33,7 +33,17 @@ public Symbol(String ns, String name){ } public Symbol(String name){ - this(null, name); + int i = name.indexOf('/'); + if(i == -1) + { + this.name = name.intern(); + this.ns = null; + } + else + { + this.ns = name.substring(0, i).intern(); + this.name = name.substring(i + 1).intern(); + } } |