W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > January to March 2005

Re: Feedback on Editor's Draft.

From: Seaborne, Andy <andy.seaborne@hp.com>
Date: Thu, 17 Mar 2005 10:12:43 +0000
Message-ID: <4239581B.2010108@hp.com>
To: howardk@fatdog.com
Cc: "Thompson, Bryan B." <BRYAN.B.THOMPSON@saic.com>, ''Eric Prud'hommeaux ' ' <eric@w3.org>, public-rdf-dawg@w3.org

Howard Katz wrote:
> Bryan,
> 
> It probably doesn't help you much, but I had problems with qnames in antlr
> as well in early versions of my XQuery query engine. I too hoisted QNAME
> into the parser trying to solve lexer difficulties, but if I recall
> correctly, that then allowed users to enter spaces between the prefix,
> colon, and localPart! I eventually gave up (for other reasons as well) and
> eventually moved to javacc. I'm happier now (at least my analyst tells me I
> should be).
> 
> You got me curious and I went looking for antlr/QNAME productions. I've been
> away from antlr so long that the following xquery.g file from eXist just
> looks like gobbledeegook to me now. If it's useful, more power to you:
> 
> qName returns [String name]
> {
> 	name= null;
> 	String name2;
> }
> :
> 	( ncnameOrKeyword COLON ncnameOrKeyword )
> 	=> name=nc1:ncnameOrKeyword COLON name2=ncnameOrKeyword
> 	{
> 		name= name + ':' + name2;
> 		#qName.copyLexInfo(#nc1);
> 	}
> 	|
> 	name=ncnameOrKeyword
> 	;
> 
> Howard
> 

I used the same mechanism (ANTLR calls it syntactic predicates, I think)  did 
much the same with my N3 grammar for Jena (which is in ANTLR).  This is a 
genralisation of what lex-class and javacc tokenizers do.

THING
: (NSNAME COLON LNAME)=> NSNAME COLON LNAME { ... }
| (COLON LNAME)=> COLON LNAME { ... }
| (NSNAME COLON )=> NSNAME COLON { ... }
| (COLON)=> COLON
etc etc

See http://www.antlr.org/doc/lexer.html#dfacompare

	Andy
Received on Thursday, 17 March 2005 10:13:08 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:22 GMT