29 lines
		
	
	
		
			809 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			809 B
		
	
	
	
		
			Factor
		
	
	
| ! Copyright (C) 2009 Doug Coleman.
 | |
| ! See http://factorcode.org/license.txt for BSD license.
 | |
| USING: accessors combinators db kernel sequences peg.ebnf
 | |
| strings db.errors ;
 | |
| IN: db.errors.sqlite
 | |
| 
 | |
| TUPLE: unparsed-sqlite-error error ;
 | |
| C: <unparsed-sqlite-error> unparsed-sqlite-error
 | |
| 
 | |
| SINGLETONS: table-exists table-missing ;
 | |
| 
 | |
| : sqlite-table-error ( table message -- error )
 | |
|     {
 | |
|         { table-exists [ <sql-table-exists> ] }
 | |
|     } case ;
 | |
| 
 | |
| EBNF: parse-sqlite-sql-error
 | |
| 
 | |
| TableMessage = " already exists" => [[ table-exists ]]
 | |
| 
 | |
| SqliteError =
 | |
|     "table " (!(TableMessage).)+:table TableMessage:message
 | |
|       => [[ table >string message sqlite-table-error ]]
 | |
|     | "no such table: " .+:table
 | |
|       => [[ table >string <sql-table-missing> ]]
 | |
|     | .*:error
 | |
|       => [[ error >string <unparsed-sqlite-error> ]]
 | |
| ;EBNF
 |