:default ::= action => [name,values]
lexeme default = latm => 1
:start ::= ddl
ddl ::=
statement+
statement ::=
create_table
create_table ::=
CREATE TABLE identifier '(' table_elements ')' ';'
table_elements ::=
table_element+ separator => comma
table_element ::=
column_definition
column_definition ::=
column_name data_type column_constraint
column_name ::=
identifier
column_constraint ::=
column_constraint ::=
NOT NULL
| UNIQUE
| PRIMARY KEY
data_type ::=
INTEGER
| TEXT
data_type ::=
identifier ::=
delimited_identifier
| limited_identifier
CREATE ~ 'create':i
INTEGER ~ 'integer':i
KEY ~ 'key':i
NOT ~ 'not':i
NULL ~ 'null':i
PRIMARY ~ 'primary':i
TABLE ~ 'table':i
TEXT ~ 'text':i
UNIQUE ~ 'unique':i
comma ~ [,]
double_quote ~ ["]
non_double_quotes ~ [^"]+
limited_identifier_start ~ [a-zA-Z_]
limited_identifier_extend ~ [a-zA-Z0-9_]*
delimited_identifier ~ double_quote non_double_quotes double_quote
limited_identifier ~ limited_identifier_start limited_identifier_extend
:discard ~ whitespace
whitespace ~ [\s]+