my $grammar = q{ startrule: create_table_syntax create_table_syntax: 'CREATE TABLE' '(' column_definition(s /,/) ')' column_definition: column_name data_type column_attributes(?) column_name: /\w+/ data_type: "INT" | "VARCHAR" column_attributes: key_or_not_null key_or_not_null: primary(?) 'KEY' } #### ::=   [PRIMARY] KEY | NOT NULL [WITH DEFAULT] #### primary: 'primary'