! 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.sqlite.errors TUPLE: unparsed-sqlite-error error ; C: unparsed-sqlite-error SINGLETONS: table-exists table-missing ; : sqlite-table-error ( table message -- error ) { { 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 ]] | .*:error => [[ error >string ]] ;EBNF