krysalis-impus/src/java/org/krysalis/impus ASTUtil.java,1.1,1.2 ImpusLexer.java,1.1,1.2 ImpusParser.java,1.1,1.2 ImpusTokenTypes.java,1.1,1.2 ImpusTokenTypes.txt,1.1,1.2 Initializer.java,1.1,1.2 parser.g,1.1,1.2
[email protected] Tue, 15 Apr 2003 21:17:51 -0700
| Newsgroups | gmane.comp.krysalis.sandbox |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus
In directory sc8-pr-cvs1:/tmp/cvs-serv6401/src/java/org/krysalis/impus
Modified Files:
ASTUtil.java ImpusLexer.java ImpusParser.java
ImpusTokenTypes.java ImpusTokenTypes.txt Initializer.java
parser.g
Log Message:
Added support for single quotes for string literals
Index: ASTUtil.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus/ASTUtil.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ASTUtil.java 15 Mar 2003 06:02:51 -0000 1.1
--- ASTUtil.java 16 Apr 2003 04:17:48 -0000 1.2
***************
*** 47,51 ****
boolean containsLongSuffix = upTokenText.endsWith( "L" ) && valueAST.getType() == NUM_LONG;
boolean containsFloatSuffix = ( upTokenText.endsWith( "F" ) || upTokenText.endsWith( "D" ) ) && ( valueAST.getType() == NUM_FLOAT || valueAST.getType() == NUM_DOUBLE );
! if ( valueAST.getType() == STRING_LITERAL || valueAST.getType() == CHAR_LITERAL )
return convertEscapes( tokenText.substring( 1, tokenText.length() - 1 ) );
else if ( valueAST.getType() == MINUS )
--- 47,51 ----
boolean containsLongSuffix = upTokenText.endsWith( "L" ) && valueAST.getType() == NUM_LONG;
boolean containsFloatSuffix = ( upTokenText.endsWith( "F" ) || upTokenText.endsWith( "D" ) ) && ( valueAST.getType() == NUM_FLOAT || valueAST.getType() == NUM_DOUBLE );
! if ( valueAST.getType() == STRING_LITERAL )
return convertEscapes( tokenText.substring( 1, tokenText.length() - 1 ) );
else if ( valueAST.getType() == MINUS )
Index: ImpusLexer.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus/ImpusLexer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ImpusLexer.java 15 Mar 2003 06:02:51 -0000 1.1
--- ImpusLexer.java 16 Apr 2003 04:17:48 -0000 1.2
***************
*** 43,48 ****
setCaseSensitive(true);
literals = new Hashtable();
! literals.put(new ANTLRHashString("true", this), new Integer(12));
! literals.put(new ANTLRHashString("false", this), new Integer(13));
}
--- 43,48 ----
setCaseSensitive(true);
literals = new Hashtable();
! literals.put(new ANTLRHashString("true", this), new Integer(11));
! literals.put(new ANTLRHashString("false", this), new Integer(12));
}
***************
*** 118,128 ****
break;
}
! case '\'':
! {
! mCHAR_LITERAL(true);
! theRetToken=_returnToken;
! break;
! }
! case '"':
{
mSTRING_LITERAL(true);
--- 118,122 ----
break;
}
! case '"': case '\'':
{
mSTRING_LITERAL(true);
***************
*** 468,488 ****
}
! public final void mCHAR_LITERAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
int _ttype; Token _token=null; int _begin=text.length();
! _ttype = CHAR_LITERAL;
int _saveIndex;
! match('\'');
{
! if ((LA(1)=='\\')) {
! mESC(false);
}
! else if ((_tokenSet_2.member(LA(1)))) {
! matchNot('\'');
}
! else {
throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
}
}
match('\'');
--- 462,515 ----
}
! public final void mSTRING_LITERAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
int _ttype; Token _token=null; int _begin=text.length();
! _ttype = STRING_LITERAL;
int _saveIndex;
! switch ( LA(1)) {
! case '\'':
{
! mSINGLE_STRING_LITERAL(false);
! break;
}
! case '"':
! {
! mDOUBLE_STRING_LITERAL(false);
! break;
}
! default:
! {
throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
}
+ }
+ if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
+ _token = makeToken(_ttype);
+ _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
+ }
+ _returnToken = _token;
+ }
+
+ private final void mSINGLE_STRING_LITERAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
+ int _ttype; Token _token=null; int _begin=text.length();
+ _ttype = SINGLE_STRING_LITERAL;
+ int _saveIndex;
+ match('\'');
+ {
+ _loop47:
+ do {
+ if ((LA(1)=='\\')) {
+ mESC(false);
+ }
+ else if ((_tokenSet_2.member(LA(1)))) {
+ {
+ match(_tokenSet_2);
+ }
+ }
+ else {
+ break _loop47;
+ }
+
+ } while (true);
}
match('\'');
***************
*** 494,497 ****
--- 521,555 ----
}
+ private final void mDOUBLE_STRING_LITERAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
+ int _ttype; Token _token=null; int _begin=text.length();
+ _ttype = DOUBLE_STRING_LITERAL;
+ int _saveIndex;
+
+ match('"');
+ {
+ _loop43:
+ do {
+ if ((LA(1)=='\\')) {
+ mESC(false);
+ }
+ else if ((_tokenSet_3.member(LA(1)))) {
+ {
+ match(_tokenSet_3);
+ }
+ }
+ else {
+ break _loop43;
+ }
+
+ } while (true);
+ }
+ match('"');
+ if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
+ _token = makeToken(_ttype);
+ _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
+ }
+ _returnToken = _token;
+ }
+
protected final void mESC(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
int _ttype; Token _token=null; int _begin=text.length();
***************
*** 545,550 ****
{
{
! int _cnt48=0;
! _loop48:
do {
if ((LA(1)=='u')) {
--- 603,608 ----
{
{
! int _cnt51=0;
! _loop51:
do {
if ((LA(1)=='u')) {
***************
*** 552,559 ****
}
else {
! if ( _cnt48>=1 ) { break _loop48; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt48++;
} while (true);
}
--- 610,617 ----
}
else {
! if ( _cnt51>=1 ) { break _loop51; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt51++;
} while (true);
}
***************
*** 620,654 ****
}
- public final void mSTRING_LITERAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
- int _ttype; Token _token=null; int _begin=text.length();
- _ttype = STRING_LITERAL;
- int _saveIndex;
-
- match('"');
- {
- _loop44:
- do {
- if ((LA(1)=='\\')) {
- mESC(false);
- }
- else if ((_tokenSet_3.member(LA(1)))) {
- {
- match(_tokenSet_3);
- }
- }
- else {
- break _loop44;
- }
-
- } while (true);
- }
- match('"');
- if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
- _token = makeToken(_ttype);
- _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
- }
- _returnToken = _token;
- }
-
protected final void mHEX_DIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
int _ttype; Token _token=null; int _begin=text.length();
--- 678,681 ----
***************
*** 736,740 ****
}
{
! _loop57:
do {
switch ( LA(1)) {
--- 763,767 ----
}
{
! _loop60:
do {
switch ( LA(1)) {
***************
*** 780,784 ****
default:
{
! break _loop57;
}
}
--- 807,811 ----
default:
{
! break _loop60;
}
}
***************
*** 811,816 ****
if (((LA(1) >= '0' && LA(1) <= '9'))) {
{
! int _cnt61=0;
! _loop61:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
--- 838,843 ----
if (((LA(1) >= '0' && LA(1) <= '9'))) {
{
! int _cnt64=0;
! _loop64:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
***************
*** 818,825 ****
}
else {
! if ( _cnt61>=1 ) { break _loop61; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt61++;
} while (true);
}
--- 845,852 ----
}
else {
! if ( _cnt64>=1 ) { break _loop64; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt64++;
} while (true);
}
***************
*** 889,894 ****
}
{
! int _cnt68=0;
! _loop68:
do {
if ((_tokenSet_5.member(LA(1))) && (true) && (true) && (true) && (true)) {
--- 916,921 ----
}
{
! int _cnt71=0;
! _loop71:
do {
if ((_tokenSet_5.member(LA(1))) && (true) && (true) && (true) && (true)) {
***************
*** 896,903 ****
}
else {
! if ( _cnt68>=1 ) { break _loop68; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt68++;
} while (true);
}
--- 923,930 ----
}
else {
! if ( _cnt71>=1 ) { break _loop71; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt71++;
} while (true);
}
***************
*** 908,913 ****
{
{
! int _cnt70=0;
! _loop70:
do {
if (((LA(1) >= '0' && LA(1) <= '7'))) {
--- 935,940 ----
{
{
! int _cnt73=0;
! _loop73:
do {
if (((LA(1) >= '0' && LA(1) <= '7'))) {
***************
*** 915,922 ****
}
else {
! if ( _cnt70>=1 ) { break _loop70; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt70++;
} while (true);
}
--- 942,949 ----
}
else {
! if ( _cnt73>=1 ) { break _loop73; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt73++;
} while (true);
}
***************
*** 938,942 ****
}
{
! _loop73:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
--- 965,969 ----
}
{
! _loop76:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
***************
*** 944,948 ****
}
else {
! break _loop73;
}
--- 971,975 ----
}
else {
! break _loop76;
}
***************
*** 987,991 ****
match('.');
{
! _loop78:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
--- 1014,1018 ----
match('.');
{
! _loop81:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
***************
*** 993,997 ****
}
else {
! break _loop78;
}
--- 1020,1024 ----
}
else {
! break _loop81;
}
***************
*** 1120,1125 ****
}
{
! int _cnt86=0;
! _loop86:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
--- 1147,1152 ----
}
{
! int _cnt89=0;
! _loop89:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
***************
*** 1127,1134 ****
}
else {
! if ( _cnt86>=1 ) { break _loop86; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt86++;
} while (true);
}
--- 1154,1161 ----
}
else {
! if ( _cnt89>=1 ) { break _loop89; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
! _cnt89++;
} while (true);
}
Index: ImpusParser.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus/ImpusParser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ImpusParser.java 15 Mar 2003 06:02:51 -0000 1.1
--- ImpusParser.java 16 Apr 2003 04:17:48 -0000 1.2
***************
*** 157,169 ****
switch ( LA(1)) {
- case CHAR_LITERAL:
- {
- AST tmp8_AST = null;
- tmp8_AST = astFactory.create(LT(1));
- astFactory.makeASTRoot(currentAST, tmp8_AST);
- match(CHAR_LITERAL);
- rvalue_AST = (AST)currentAST.root;
- break;
- }
case MINUS:
case NUM_INT:
--- 157,160 ----
***************
*** 176,182 ****
case MINUS:
{
! AST tmp9_AST = null;
! tmp9_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp9_AST);
match(MINUS);
break;
--- 167,173 ----
case MINUS:
{
! AST tmp8_AST = null;
! tmp8_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp8_AST);
match(MINUS);
break;
***************
*** 202,208 ****
case STRING_LITERAL:
{
! AST tmp10_AST = null;
! tmp10_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp10_AST);
match(STRING_LITERAL);
rvalue_AST = (AST)currentAST.root;
--- 193,199 ----
case STRING_LITERAL:
{
! AST tmp9_AST = null;
! tmp9_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp9_AST);
match(STRING_LITERAL);
rvalue_AST = (AST)currentAST.root;
***************
*** 211,217 ****
case LITERAL_true:
{
! AST tmp11_AST = null;
! tmp11_AST = astFactory.create(LT(1));
! astFactory.addASTChild(currentAST, tmp11_AST);
match(LITERAL_true);
rvalue_AST = (AST)currentAST.root;
--- 202,208 ----
case LITERAL_true:
{
! AST tmp10_AST = null;
! tmp10_AST = astFactory.create(LT(1));
! astFactory.addASTChild(currentAST, tmp10_AST);
match(LITERAL_true);
rvalue_AST = (AST)currentAST.root;
***************
*** 220,226 ****
case LITERAL_false:
{
! AST tmp12_AST = null;
! tmp12_AST = astFactory.create(LT(1));
! astFactory.addASTChild(currentAST, tmp12_AST);
match(LITERAL_false);
rvalue_AST = (AST)currentAST.root;
--- 211,217 ----
case LITERAL_false:
{
! AST tmp11_AST = null;
! tmp11_AST = astFactory.create(LT(1));
! astFactory.addASTChild(currentAST, tmp11_AST);
match(LITERAL_false);
rvalue_AST = (AST)currentAST.root;
***************
*** 259,265 ****
case NUM_INT:
{
! AST tmp13_AST = null;
! tmp13_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp13_AST);
match(NUM_INT);
number_AST = (AST)currentAST.root;
--- 250,256 ----
case NUM_INT:
{
! AST tmp12_AST = null;
! tmp12_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp12_AST);
match(NUM_INT);
number_AST = (AST)currentAST.root;
***************
*** 268,274 ****
case NUM_LONG:
{
! AST tmp14_AST = null;
! tmp14_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp14_AST);
match(NUM_LONG);
number_AST = (AST)currentAST.root;
--- 259,265 ----
case NUM_LONG:
{
! AST tmp13_AST = null;
! tmp13_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp13_AST);
match(NUM_LONG);
number_AST = (AST)currentAST.root;
***************
*** 277,283 ****
case NUM_FLOAT:
{
! AST tmp15_AST = null;
! tmp15_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp15_AST);
match(NUM_FLOAT);
number_AST = (AST)currentAST.root;
--- 268,274 ----
case NUM_FLOAT:
{
! AST tmp14_AST = null;
! tmp14_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp14_AST);
match(NUM_FLOAT);
number_AST = (AST)currentAST.root;
***************
*** 286,292 ****
case NUM_DOUBLE:
{
! AST tmp16_AST = null;
! tmp16_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp16_AST);
match(NUM_DOUBLE);
number_AST = (AST)currentAST.root;
--- 277,283 ----
case NUM_DOUBLE:
{
! AST tmp15_AST = null;
! tmp15_AST = astFactory.create(LT(1));
! astFactory.makeASTRoot(currentAST, tmp15_AST);
match(NUM_DOUBLE);
number_AST = (AST)currentAST.root;
***************
*** 307,313 ****
AST listValues_AST = null;
! AST tmp17_AST = null;
! tmp17_AST = astFactory.create(LT(1));
! astFactory.addASTChild(currentAST, tmp17_AST);
match(LBRACK);
{
--- 298,304 ----
AST listValues_AST = null;
! AST tmp16_AST = null;
! tmp16_AST = astFactory.create(LT(1));
! astFactory.addASTChild(currentAST, tmp16_AST);
match(LBRACK);
{
***************
*** 315,319 ****
case LPAREN:
case IDENT:
- case CHAR_LITERAL:
case MINUS:
case STRING_LITERAL:
--- 306,309 ----
***************
*** 370,374 ****
"DOT",
"ASSIGN",
- "CHAR_LITERAL",
"MINUS",
"STRING_LITERAL",
--- 360,363 ----
***************
*** 387,390 ****
--- 376,381 ----
"SL_COMMENT",
"ML_COMMENT",
+ "DOUBLE_STRING_LITERAL",
+ "SINGLE_STRING_LITERAL",
"ESC",
"HEX_DIGIT",
Index: ImpusTokenTypes.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus/ImpusTokenTypes.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ImpusTokenTypes.java 15 Mar 2003 06:02:51 -0000 1.1
--- ImpusTokenTypes.java 16 Apr 2003 04:17:48 -0000 1.2
***************
*** 11,34 ****
int DOT = 7;
int ASSIGN = 8;
! int CHAR_LITERAL = 9;
! int MINUS = 10;
! int STRING_LITERAL = 11;
! int LITERAL_true = 12;
! int LITERAL_false = 13;
! int NUM_INT = 14;
! int NUM_LONG = 15;
! int NUM_FLOAT = 16;
! int NUM_DOUBLE = 17;
! int LBRACK = 18;
! int COMMA = 19;
! int RBRACK = 20;
! int LCURLY = 21;
! int RCURLY = 22;
! int WS = 23;
! int SL_COMMENT = 24;
! int ML_COMMENT = 25;
! int ESC = 26;
! int HEX_DIGIT = 27;
! int EXPONENT = 28;
! int FLOAT_SUFFIX = 29;
}
--- 11,35 ----
int DOT = 7;
int ASSIGN = 8;
! int MINUS = 9;
! int STRING_LITERAL = 10;
! int LITERAL_true = 11;
! int LITERAL_false = 12;
! int NUM_INT = 13;
! int NUM_LONG = 14;
! int NUM_FLOAT = 15;
! int NUM_DOUBLE = 16;
! int LBRACK = 17;
! int COMMA = 18;
! int RBRACK = 19;
! int LCURLY = 20;
! int RCURLY = 21;
! int WS = 22;
! int SL_COMMENT = 23;
! int ML_COMMENT = 24;
! int DOUBLE_STRING_LITERAL = 25;
! int SINGLE_STRING_LITERAL = 26;
! int ESC = 27;
! int HEX_DIGIT = 28;
! int EXPONENT = 29;
! int FLOAT_SUFFIX = 30;
}
Index: ImpusTokenTypes.txt
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus/ImpusTokenTypes.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ImpusTokenTypes.txt 15 Mar 2003 06:02:51 -0000 1.1
--- ImpusTokenTypes.txt 16 Apr 2003 04:17:48 -0000 1.2
***************
*** 6,28 ****
DOT=7
ASSIGN=8
! CHAR_LITERAL=9
! MINUS=10
! STRING_LITERAL=11
! LITERAL_true="true"=12
! LITERAL_false="false"=13
! NUM_INT=14
! NUM_LONG=15
! NUM_FLOAT=16
! NUM_DOUBLE=17
! LBRACK=18
! COMMA=19
! RBRACK=20
! LCURLY=21
! RCURLY=22
! WS=23
! SL_COMMENT=24
! ML_COMMENT=25
! ESC=26
! HEX_DIGIT=27
! EXPONENT=28
! FLOAT_SUFFIX=29
--- 6,29 ----
DOT=7
ASSIGN=8
! MINUS=9
! STRING_LITERAL=10
! LITERAL_true="true"=11
! LITERAL_false="false"=12
! NUM_INT=13
! NUM_LONG=14
! NUM_FLOAT=15
! NUM_DOUBLE=16
! LBRACK=17
! COMMA=18
! RBRACK=19
! LCURLY=20
! RCURLY=21
! WS=22
! SL_COMMENT=23
! ML_COMMENT=24
! DOUBLE_STRING_LITERAL=25
! SINGLE_STRING_LITERAL=26
! ESC=27
! HEX_DIGIT=28
! EXPONENT=29
! FLOAT_SUFFIX=30
Index: Initializer.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus/Initializer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Initializer.java 15 Mar 2003 06:02:51 -0000 1.1
--- Initializer.java 16 Apr 2003 04:17:48 -0000 1.2
***************
*** 263,268 ****
else if ( ast.getType() == Initializer.STRING_LITERAL )
return ASTUtil.fixValue( ast );
! else if ( ast.getType() == Initializer.CHAR_LITERAL )
! return new Character( ASTUtil.fixValue( ast ).charAt( 0 ) );
else if ( ast.getType() == Initializer.LPAREN )
return makeValue( null, ast.getFirstChild() );
--- 263,268 ----
else if ( ast.getType() == Initializer.STRING_LITERAL )
return ASTUtil.fixValue( ast );
! // else if ( ast.getType() == Initializer.CHAR_LITERAL )
! // return new Character( ASTUtil.fixValue( ast ).charAt( 0 ) );
else if ( ast.getType() == Initializer.LPAREN )
return makeValue( null, ast.getFirstChild() );
Index: parser.g
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-impus/src/java/org/krysalis/impus/parser.g,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** parser.g 15 Mar 2003 06:02:51 -0000 1.1
--- parser.g 16 Apr 2003 04:17:48 -0000 1.2
***************
*** 35,40 ****
rvalue
! : CHAR_LITERAL^
! | (MINUS^)? number
| STRING_LITERAL^
| "true"
--- 35,40 ----
rvalue
! :
! (MINUS^)? number
| STRING_LITERAL^
| "true"
***************
*** 134,145 ****
// character literals
! CHAR_LITERAL
! : '\'' ( ESC | ~'\'' ) '\''
! ;
// string literals
STRING_LITERAL
: '"' (ESC|~('"'|'\\'))* '"'
;
// escape sequence -- note that this is protected; it can only be called
--- 134,155 ----
// character literals
! //CHAR_LITERAL
! // : '\'' ( ESC | ~'\'' ) '\''
! // ;
// string literals
STRING_LITERAL
+ : SINGLE_STRING_LITERAL
+ | DOUBLE_STRING_LITERAL
+ ;
+
+ private DOUBLE_STRING_LITERAL
: '"' (ESC|~('"'|'\\'))* '"'
;
+
+ private SINGLE_STRING_LITERAL
+ : '\'' (ESC|~('\''|'\\'))* '\''
+ ;
+
// escape sequence -- note that this is protected; it can only be called
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf