[antlr-interest] Problem with '(' ')'

bebopkim bebopkim at yahoo.co.kr
Thu Oct 9 07:05:20 PDT 2003


I have made simple RDQL parser and I got a problem. When I tried to 
parse a triple pattern, the parser gave me an error like this:

(?a, ?b, ?c)
IDENTIFIER
IDENTIFIER
IDENTIFIER
line 1:1: expecting LPAREN, found '('

I'm an ANTLR beginner. How can I solve this problem?

The parser's source code is below:
/*
 * @(#)_rdqlparser.g created on 2003. 9. 14.
 *
 */

/**
 * RDQL parser generating script
 *
 * @version $Id$
 * @author hjkim
 *
 */

class LocalRDQLParser extends Parser;

options {
	k = 4;
//	analyzerDebug = true;
//	codeGenDebug = true;
	
}

tokens {
	SELECT;
	VAR;
	COMMA;
	STAR;
	LPAREN;
	RPAREN;
	URI;
	NUMERIC_LITERAL;
	NULL_LITERAL;
	STRING_LITERAL1;
	STRING_LITERAL2;
	TRUE;
	FALSE;
}


//query :
//	 selectClause triplePatternClause { System.out.println
("query"); }
//	;
//
//
//selectClause :
//	  SELECT VAR (COMMA VAR)* | SELECT STAR
//	;
//
//triplePatternClause :
//	  WHERE triplePattern (COMMA triplePattern)*
//	;

triplePattern :
	  LPAREN varOrURI COMMA varOrURI COMMA varOrLiteral RPAREN
	{ System.out.println("TRIPLE Pattern!"); }
	;

varOrURI :
	  VAR
	| URI
	;

varOrLiteral :
	  VAR
	| literal
	;

literal :
	  URI
	| NUMERIC_LITERAL 
	| NULL_LITERAL
	| textLiteral
	| booleanLiteral
	;
	
textLiteral :
	  (STRING_LITERAL1 | STRING_LITERAL2)
	;

booleanLiteral : 
	  TRUE | FALSE
	;
	
class LocalRDQLLexer extends Lexer;

options { 
	k = 4;
    charVocabulary = '\u0000'..'\u007F';
    exportVocab = RDQL;
//    testLiterals = false;
	caseSensitive = false;
	caseSensitiveLiterals = false;
}

tokens {
	SELECT	= "select";
	FROM	= "from";
	WHERE	= "where";
	TRUE	= "true";
	FALSE	= "false";
	NULL_LITERAL =  "null";	
}

COMMA	: ',';
LPAREN	: '(';
RPAREN	: ')';
STAR	: '*';




VAR	: 
	'?' IDENTIFIER
//  	{ System.out.println("VAR"); }	
	;
	
STRING_LITERAL1	: 
	'\'' ( (~('\''|'\\'|'\n'|'\r')) | ('\\' ~('\n'|'\r')))* '\''
//	{ System.out.println("String Literal1"); }
	;
	
STRING_LITERAL2 :
	'"'  ( (~('"' |'\\'|'\n'|'\r')) | ('\\' ~('\n'|'\r')))* '"'
//	{ System.out.println("String Literal2"); }
	;

URI :
	'<' ( ~('>'|'?') )+ '>'
//	{ System.out.println("URI"); }
	;

NUMERIC_LITERAL : ('0'..'9')+ 
//	{ System.out.println("NUMBER"); }
	;
	

IDENTIFIER :
	('a'..'z'|'_'|'-'|'~'|'$'|'.') ('a'..'z'|'_'|'-
'|'~'|'$'|'.'|'0'..'9')*
	{ System.out.println("IDENTIFIER"); }
	;

WS :
	' ' | '\r' '\n' | '\n' | '\t' | '\r'
    {$setType(Token.SKIP);}
	;
	




 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 




More information about the antlr-interest mailing list