[antlr-interest] Undeterminism - SQL column specification?

Juan Ignacio Gelos juangelos at gmail.com
Sun Nov 20 12:41:34 PST 2005


Hi all,

I'm trying to generate a parser for SQL statements, and I need to
recognize columns and get each element in the column specification.
I need to match the following alternatives, but I'm getting
undeterminism errors:

canonColumn
    // columnName
    // object.columnName
    // schema.object.columnName
    // catalog.schema.object.columnName
    // catalog..object.columnName
    // server.catalog.schema.object.columnName
    // server.catalog..object.columnName
    :
    ((((server:someName DOT)? db:someName DOT)? (schema:someName)?
DOT)? object:someName DOT)? col:someName
    // this works, but I need the labels:  (someName DOT | DOT)* someName
    ;


D:\antlr>antlr-2.7.5.exe tsql-select2.g
ANTLR Parser Generator   Version 2.7.5 (20050201)   1989-2005 jGuru.com


tsql-select2.g:326:5: warning:nondeterminism between alts 1 and 2 of block upon

tsql-select2.g:326:5:    
k==1:"ties","cube","rollup","hash","concat","merge","loop","fast","force","maxdop","robust","keep","keepfixed","expand","views","xml","raw","auto","explicit","xmldata","elements","binary","base64","remote","fastfirstrow","nolock","paglock","readcommited","readpast","readuncommited","repeatableread","rowlock","serializable","tablock","tablockx","updlock","xlock","identitycol","rowguidcol","cast",NonQuotedIdentifier,QuotedIdentifier

tsql-select2.g:326:5:    
k==2:"ties","cube","rollup","hash","concat","merge","loop","fast","force","maxdop","robust","keep","keepfixed","expand","views","xml","raw","auto","explicit","xmldata","elements","binary","base64","remote","fastfirstrow","nolock","paglock","readcommited","readpast","readuncommited","repeatableread","rowlock","serializable","tablock","tablockx","updlock","xlock","cast",NonQuotedIdentifier,QuotedIdentifier

tsql-select2.g:326:6: warning:nondeterminism between alts 1 and 2 of block upon

tsql-select2.g:326:6:    
k==1:"ties","cube","rollup","hash","concat","merge","loop","fast","force","maxdop","robust","keep","keepfixed","expand","views","xml","raw","auto","explicit","xmldata","elements","binary","base64","remote","fastfirstrow","nolock","paglock","readcommited","readpast","readuncommited","repeatableread","rowlock","serializable","tablock","tablockx","updlock","xlock","identitycol","rowguidcol","cast",NonQuotedIdentifier,QuotedIdentifier

tsql-select2.g:326:6:     k==2:DOT

tsql-select2.g:326:7: warning:nondeterminism between alts 1 and 2 of block upon

tsql-select2.g:326:7:    
k==1:"ties","cube","rollup","hash","concat","merge","loop","fast","force","maxdop","robust","keep","keepfixed","expand","views","xml","raw","auto","explicit","xmldata","elements","binary","base64","remote","fastfirstrow","nolock","paglock","readcommited","readpast","readuncommited","repeatableread","rowlock","serializable","tablock","tablockx","updlock","xlock","identitycol","rowguidcol","cast",NonQuotedIdentifier,QuotedIdentifier

tsql-select2.g:326:7:     k==2:DOT

tsql-select2.g:326:8: warning:nondeterminism between alts 1 and 2 of block upon

tsql-select2.g:326:8:    
k==1:"ties","cube","rollup","hash","concat","merge","loop","fast","force","maxdop","robust","keep","keepfixed","expand","views","xml","raw","auto","explicit","xmldata","elements","binary","base64","remote","fastfirstrow","nolock","paglock","readcommited","readpast","readuncommited","repeatableread","rowlock","serializable","tablock","tablockx","updlock","xlock","identitycol","rowguidcol","cast",NonQuotedIdentifier,QuotedIdentifier
tsql-select2.g:326:8:     k==2:DOT



Any ideas?

Thanks,
Juan Ignacio Gelos


More information about the antlr-interest mailing list