Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- simpleSQL-1.4.11.py 2008-04-19 20:39:03.000000000 -0500
- +++ simpleSQL.py 2008-04-19 20:47:25.000000000 -0500
- @@ -7,7 +7,7 @@
- #
- from pyparsing import Literal, CaselessLiteral, Word, Upcase, delimitedList, Optional, \
- Combine, Group, alphas, nums, alphanums, ParseException, Forward, oneOf, quotedString, \
- - ZeroOrMore, restOfLine, Keyword
- + ZeroOrMore, restOfLine, Keyword, ErrStop, ParseFatalException
- def test( str ):
- print str,"->"
- @@ -17,7 +17,7 @@
- print "tokens.columns =", tokens.columns
- print "tokens.tables =", tokens.tables
- print "tokens.where =", tokens.where
- - except ParseException, err:
- + except (ParseException, ParseFatalException), err:
- print " "*err.loc + "^\n" + err.msg
- print err
- print
- @@ -59,10 +59,11 @@
- # define the grammar
- selectStmt << ( selectToken +
- - ( '*' | columnNameList ).setResultsName( "columns" ) +
- + ( '*' | columnNameList )( "columns" ) +
- fromToken +
- tableNameList.setResultsName( "tables" ) +
- - Optional( Group( CaselessLiteral("where") + whereExpression ), "" ).setResultsName("where") )
- + Optional( Group( CaselessLiteral("where") +
- + ErrStop(whereExpression)), "" ).setResultsName("where") )
- simpleSQL = selectStmt
- @@ -84,7 +85,7 @@
- test( "Select A from Sys.dual where a in ('RED','GREEN','BLUE')" )
- test( "Select A from Sys.dual where a in ('RED','GREEN','BLUE') and b in (10,20,30)" )
- test( "Select A,b from table1,table2 where table1.id eq table2.id -- test out comparison operators" )
- -
- +test( "select * from table1 where a b" )
- """
- Test output:
- >pythonw -u simpleSQL.py
- @@ -138,5 +139,10 @@
- Expected '*'
- Expected '*' (7), (1,8)
- +select * from table1 where a b
- + ^
- +Expected '='
- +Expected '=' (at char 29), (line:1, col:30)
- +
- >Exit code: 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement