Accept ::= statement
statement ::= insertStatement
statement ::= describeSpecification
statement ::= rollbackWork
statement ::= deleteStatementSearched
statement ::= updateStatementSearched
statement ::= beginWork
statement ::= querySpecification
statement ::= showSpecification
statement ::= commitWork
insertStatement ::= insert into targetTable insertColumnsAndSource
describeSpecification ::= describe identifier
rollbackWork ::= rollback work?
deleteStatementSearched ::= delete from targetTable
deleteStatementSearched ::= delete from targetTable where searchCondition
updateStatementSearched ::= update targetTable set setClause+
updateStatementSearched ::= update targetTable set setClause+ where searchCondition
beginWork ::= start transaction
querySpecification ::= select selectList tableExpression
showSpecification ::= show identifier
targetTable ::= identifier
insertColumnsAndSource ::= fromConstructor
searchCondition ::= booleanValueExpression
selectList ::= selectSublist ('\,' selectSublist)*
selectList ::= asterisk
tableExpression ::= fromClause whereClause? orderByClause?
fromConstructor ::= '(' column ('\,' column)* ')' values '(' literal ('\,' literal)* ')'
booleanValueExpression ::= booleanValueExpression or booleanTerm
booleanValueExpression ::= booleanTerm
setClause ::= identifier '=' literal
selectSublist ::= identifier
selectSublist ::= identifier '.' identifier
fromClause ::= from tableReference ('\,' tableReference)*
column ::= identifier
literal ::= dateValue
literal ::= ':' identifier placeholderType
literal ::= string
literal ::= timeValue
literal ::= timestampValue
literal ::= integer
literal ::= ':' identifier default literal
literal ::= decimal
booleanTerm ::= booleanFactor
booleanTerm ::= booleanTerm and booleanFactor
tableReference ::= identifier as? identifier
tableReference ::= identifier
whereClause ::= where searchCondition
orderByClause ::= order by sortSpecification ('\,' sortSpecification)*
timestampValue ::= timestamp string
booleanFactor ::= not booleanTest
booleanFactor ::= booleanTest
sortSpecification ::= rowValuePredicant desc
sortSpecification ::= rowValuePredicant
sortSpecification ::= rowValuePredicant asc
booleanTest ::= booleanPrimary
booleanTest ::= booleanPrimary is truthValue
booleanTest ::= booleanPrimary is not truthValue
rowValuePredicant ::= identifier
rowValuePredicant ::= identifier '.' identifier
rowValuePredicant ::= literal
booleanPrimary ::= predicate
booleanPrimary ::= booleanPredicate
truthValue ::= falseL
truthValue ::= unknown
truthValue ::= trueL
predicate ::= comparisonPredicate
predicate ::= betweenPredicate
predicate ::= likePredicate
predicate ::= nullPredicate
predicate ::= inPredicate
booleanPredicate ::= parenthesizedBooleanValueExpression
comparisonPredicate ::= rowValuePredicant '<>' rowValuePredicant
comparisonPredicate ::= rowValuePredicant '<=' rowValuePredicant
comparisonPredicate ::= rowValuePredicant '>' rowValuePredicant
comparisonPredicate ::= rowValuePredicant '>=' rowValuePredicant
comparisonPredicate ::= rowValuePredicant '=' rowValuePredicant
comparisonPredicate ::= rowValuePredicant '<' rowValuePredicant
betweenPredicate ::= rowValuePredicant not between rowValuePredicant and rowValuePredicant
betweenPredicate ::= rowValuePredicant between rowValuePredicant and rowValuePredicant
likePredicate ::= rowValuePredicant like string
likePredicate ::= rowValuePredicant not like string
likePredicate ::= rowValuePredicant like string escape string
likePredicate ::= rowValuePredicant not like string escape string
nullPredicate ::= rowValuePredicant is not null
nullPredicate ::= rowValuePredicant is null
inPredicate ::= rowValuePredicant not in inPredicateValue
inPredicate ::= rowValuePredicant in inPredicateValue
parenthesizedBooleanValueExpression ::= '(' booleanValueExpression ')'
inPredicateValue ::= '(' inValueList ')'
inValueList ::= rowValuePredicant
inValueList ::= inValueList ',' rowValuePredicant
identifier = '[a-zA-z][a-zA-z0-9_]*'
decimal = '[\+\-]?[0-9]+\.[0-9]+'
doubleSlashComment = '\-\-[^\n]*\n'
describe = 'desc|descr|descri|describ|describe'
default = 'default'
commitWork Gt/Rd 9
showSpecification Gt/Rd 8
querySpecification Gt/Rd 7
updateStatementSearched Gt/Rd 5
deleteStatementSearched Gt/Rd 4
rollbackWork Gt/Rd 3
describeSpecification Gt/Rd 2
insertStatement Gt/Rd 1
Eof Reduce 0
Eof Reduce 24
showSpecification->show .identifier
identifier Sh/Rd 20
querySpecification->select .selectList tableExpression
'*' Sh/Rd 40
identifier Shift 15
selectList Goto 13
selectSublist Goto 14
transaction Sh/Rd 18
Eof Reduce 24
updateStatementSearched->update .targetTable set setClause+
updateStatementSearched->update .targetTable set setClause+ where searchCondition
identifier Sh/Rd 22
targetTable Goto 16
deleteStatementSearched->delete .from targetTable
deleteStatementSearched->delete .from targetTable where searchCondition
Eof Reduce 24
describeSpecification->describe .identifier
identifier Sh/Rd 11
insertStatement->insert .into targetTable insertColumnsAndSource
querySpecification->select selectList .tableExpression
tableExpression Gt/Rd 19
fromClause Goto 19
selectList->selectSublist .('\,' selectSublist)*
('\,' selectSublist)* Goto 21
',' Reduce 39
selectSublist->identifier . (36)
selectSublist->identifier .'.' identifier
selectSublist->identifier . (36)
'.' Shift 22
',' Reduce 36
updateStatementSearched->update targetTable .set setClause+
updateStatementSearched->update targetTable .set setClause+ where searchCondition
deleteStatementSearched->delete from .targetTable
deleteStatementSearched->delete from .targetTable where searchCondition
identifier Sh/Rd 22
targetTable Goto 24
insertStatement->insert into .targetTable insertColumnsAndSource
identifier Sh/Rd 22
targetTable Goto 25
tableExpression->fromClause .whereClause? orderByClause?
whereClause?->. (42)
whereClause? Goto 26
whereClause Gt/Rd 43
Eof Reduce 42
fromClause->from .tableReference ('\,' tableReference)*
identifier Shift 29
tableReference Goto 28
selectList->selectSublist ('\,' selectSublist)* . (29)
('\,' selectSublist)*->('\,' selectSublist)* .('\,' selectSublist)
selectList->selectSublist ('\,' selectSublist)* . (29)
',' Shift 30
('\,' selectSublist) Gt/Rd 38
selectSublist->identifier '.' .identifier
identifier Sh/Rd 37
updateStatementSearched->update targetTable set .setClause+
updateStatementSearched->update targetTable set .setClause+ where searchCondition
identifier Shift 32
setClause+ Goto 31
deleteStatementSearched->delete from targetTable . (13)
deleteStatementSearched->delete from targetTable .where searchCondition
deleteStatementSearched->delete from targetTable . (13)
Eof Reduce 13
insertStatement->insert into targetTable .insertColumnsAndSource
'(' Shift 34
insertColumnsAndSource Gt/Rd 10
fromConstructor Gt/Rd 23
tableExpression->fromClause whereClause? .orderByClause?
orderByClause? Gt/Rd 31
orderByClause Gt/Rd 44
Eof Reduce 45
whereClause->where .searchCondition
identifier Shift 37
':' Shift 41
'(' Shift 43
searchCondition Gt/Rd 66
booleanFactor Gt/Rd 59
booleanPrimary Goto 36
inPredicate Gt/Rd 100
nullPredicate Gt/Rd 99
likePredicate Gt/Rd 98
betweenPredicate Gt/Rd 97
comparisonPredicate Gt/Rd 96
timestampValue Gt/Rd 53
rowValuePredicant Goto 42
parenthesizedBooleanValueExpression Gt/Rd 101
booleanPredicate Gt/Rd 92
booleanTest Gt/Rd 75
booleanTerm Goto 45
booleanValueExpression Goto 46
fromClause->from tableReference .('\,' tableReference)*
('\,' tableReference)*->. (64)
('\,' tableReference)* Goto 47
',' Reduce 64
Eof Reduce 64
tableReference->identifier .as? identifier
tableReference->identifier . (63)
tableReference->identifier . (63)
identifier Reduce 76
',' Reduce 63
Eof Reduce 63
('\,' selectSublist)->',' .selectSublist
identifier Shift 15
selectSublist Gt/Rd 61
updateStatementSearched->update targetTable set setClause+ . (15)
updateStatementSearched->update targetTable set setClause+ .where searchCondition
setClause+->setClause+ .setClause
updateStatementSearched->update targetTable set setClause+ . (15)
identifier Shift 32
Eof Reduce 15
setClause->identifier .'=' literal
'=' Shift 50
deleteStatementSearched->delete from targetTable where .searchCondition
identifier Shift 37
':' Shift 41
'(' Shift 43
searchCondition Gt/Rd 14
booleanFactor Gt/Rd 59
booleanPrimary Goto 36
inPredicate Gt/Rd 100
nullPredicate Gt/Rd 99
likePredicate Gt/Rd 98
betweenPredicate Gt/Rd 97
comparisonPredicate Gt/Rd 96
timestampValue Gt/Rd 53
rowValuePredicant Goto 42
parenthesizedBooleanValueExpression Gt/Rd 101
booleanPredicate Gt/Rd 92
booleanTest Gt/Rd 75
booleanTerm Goto 45
booleanValueExpression Goto 46
fromConstructor->'(' .column ('\,' column)* ')' values '(' literal ('\,' literal)* ')'
identifier Sh/Rd 46
orderByClause->order .by sortSpecification ('\,' sortSpecification)*
booleanTest->booleanPrimary . (84)
booleanTest->booleanPrimary .is truthValue
booleanTest->booleanPrimary .is not truthValue
booleanTest->booleanPrimary . (84)
Eof Reduce 84
')' Reduce 84
rowValuePredicant->identifier . (87)
rowValuePredicant->identifier .'.' identifier
rowValuePredicant->identifier . (87)
'.' Shift 54
Eof Reduce 87
')' Reduce 87
',' Reduce 87
'<>' Reduce 87
'<=' Reduce 87
'>' Reduce 87
'>=' Reduce 87
'=' Reduce 87
'<' Reduce 87
timestampValue->timestamp .string
literal->':' .identifier placeholderType
literal->':' .identifier default literal
identifier Shift 55
comparisonPredicate->rowValuePredicant .'<>' rowValuePredicant
comparisonPredicate->rowValuePredicant .'<=' rowValuePredicant
comparisonPredicate->rowValuePredicant .'>' rowValuePredicant
comparisonPredicate->rowValuePredicant .'>=' rowValuePredicant
comparisonPredicate->rowValuePredicant .'=' rowValuePredicant
comparisonPredicate->rowValuePredicant .'<' rowValuePredicant
betweenPredicate->rowValuePredicant .not between rowValuePredicant and rowValuePredicant
betweenPredicate->rowValuePredicant .between rowValuePredicant and rowValuePredicant
likePredicate->rowValuePredicant .like string
likePredicate->rowValuePredicant .not like string
likePredicate->rowValuePredicant .like string escape string
likePredicate->rowValuePredicant .not like string escape string
nullPredicate->rowValuePredicant .is not null
nullPredicate->rowValuePredicant .is null
inPredicate->rowValuePredicant .not in inPredicateValue
inPredicate->rowValuePredicant .in inPredicateValue
'<' Shift 61
'=' Shift 62
'>=' Shift 63
'>' Shift 64
'<=' Shift 65
'<>' Shift 66
parenthesizedBooleanValueExpression->'(' .booleanValueExpression ')'
identifier Shift 37
':' Shift 41
'(' Shift 43
booleanValueExpression Goto 67
booleanTest Gt/Rd 75
booleanPredicate Gt/Rd 92
parenthesizedBooleanValueExpression Gt/Rd 101
timestampValue Gt/Rd 53
rowValuePredicant Goto 42
inPredicate Gt/Rd 100
nullPredicate Gt/Rd 99
likePredicate Gt/Rd 98
betweenPredicate Gt/Rd 97
comparisonPredicate Gt/Rd 96
booleanPrimary Goto 36
booleanTerm Goto 45
booleanFactor Gt/Rd 59
booleanFactor->not .booleanTest
identifier Shift 37
':' Shift 41
'(' Shift 43
booleanTest Gt/Rd 74
booleanPrimary Goto 36
inPredicate Gt/Rd 100
nullPredicate Gt/Rd 99
likePredicate Gt/Rd 98
betweenPredicate Gt/Rd 97
comparisonPredicate Gt/Rd 96
timestampValue Gt/Rd 53
rowValuePredicant Goto 42
parenthesizedBooleanValueExpression Gt/Rd 101
booleanPredicate Gt/Rd 92
booleanValueExpression->booleanTerm . (34)
booleanTerm->booleanTerm .and booleanFactor
booleanValueExpression->booleanTerm . (34)
Eof Reduce 34
')' Reduce 34
searchCondition->booleanValueExpression . (26)
booleanValueExpression->booleanValueExpression .or booleanTerm
searchCondition->booleanValueExpression . (26)
Eof Reduce 26
fromClause->from tableReference ('\,' tableReference)* . (41)
('\,' tableReference)*->('\,' tableReference)* .('\,' tableReference)
fromClause->from tableReference ('\,' tableReference)* . (41)
',' Shift 70
('\,' tableReference) Gt/Rd 65
Eof Reduce 41
tableReference->identifier as? .identifier
identifier Sh/Rd 62
updateStatementSearched->update targetTable set setClause+ where .searchCondition
identifier Shift 37
':' Shift 41
'(' Shift 43
searchCondition Gt/Rd 16
booleanFactor Gt/Rd 59
booleanPrimary Goto 36
inPredicate Gt/Rd 100
nullPredicate Gt/Rd 99
likePredicate Gt/Rd 98
betweenPredicate Gt/Rd 97
comparisonPredicate Gt/Rd 96
timestampValue Gt/Rd 53
rowValuePredicant Goto 42
parenthesizedBooleanValueExpression Gt/Rd 101
booleanPredicate Gt/Rd 92
booleanTest Gt/Rd 75
booleanTerm Goto 45
booleanValueExpression Goto 46
setClause->identifier '=' .literal
':' Shift 41
timestampValue Gt/Rd 53
fromConstructor->'(' column .('\,' column)* ')' values '(' literal ('\,' literal)* ')'
('\,' column)* Goto 71
')' Reduce 48
',' Reduce 48
orderByClause->order by .sortSpecification ('\,' sortSpecification)*
':' Shift 41
identifier Shift 37
sortSpecification Goto 72
rowValuePredicant Goto 73
timestampValue Gt/Rd 53
booleanTest->booleanPrimary is .truthValue
booleanTest->booleanPrimary is .not truthValue
truthValue Gt/Rd 85
rowValuePredicant->identifier '.' .identifier
identifier Sh/Rd 88
literal->':' identifier .placeholderType
literal->':' identifier .default literal
placeholderType Gt/Rd 50
')' Reduce 70
',' Reduce 70
Eof Reduce 70
'<>' Reduce 70
'<=' Reduce 70
'>' Reduce 70
'>=' Reduce 70
'=' Reduce 70
'<' Reduce 70
identifier Reduce 70
inPredicate->rowValuePredicant in .inPredicateValue
'(' Shift 76
inPredicateValue Gt/Rd 117
nullPredicate->rowValuePredicant is .not null
nullPredicate->rowValuePredicant is .null
likePredicate->rowValuePredicant like .string
likePredicate->rowValuePredicant like .string escape string
betweenPredicate->rowValuePredicant between .rowValuePredicant and rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Goto 79
timestampValue Gt/Rd 53
betweenPredicate->rowValuePredicant not .between rowValuePredicant and rowValuePredicant
likePredicate->rowValuePredicant not .like string
likePredicate->rowValuePredicant not .like string escape string
inPredicate->rowValuePredicant not .in inPredicateValue
comparisonPredicate->rowValuePredicant '<' .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 107
timestampValue Gt/Rd 53
comparisonPredicate->rowValuePredicant '=' .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 106
timestampValue Gt/Rd 53
comparisonPredicate->rowValuePredicant '>=' .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 105
timestampValue Gt/Rd 53
comparisonPredicate->rowValuePredicant '>' .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 104
timestampValue Gt/Rd 53
comparisonPredicate->rowValuePredicant '<=' .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 103
timestampValue Gt/Rd 53
comparisonPredicate->rowValuePredicant '<>' .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 102
timestampValue Gt/Rd 53
booleanValueExpression->booleanValueExpression .or booleanTerm
parenthesizedBooleanValueExpression->'(' booleanValueExpression .')'
')' Sh/Rd 118
booleanTerm->booleanTerm and .booleanFactor
identifier Shift 37
':' Shift 41
'(' Shift 43
booleanFactor Gt/Rd 60
booleanTest Gt/Rd 75
booleanPredicate Gt/Rd 92
parenthesizedBooleanValueExpression Gt/Rd 101
timestampValue Gt/Rd 53
rowValuePredicant Goto 42
inPredicate Gt/Rd 100
nullPredicate Gt/Rd 99
likePredicate Gt/Rd 98
betweenPredicate Gt/Rd 97
comparisonPredicate Gt/Rd 96
booleanPrimary Goto 36
booleanValueExpression->booleanValueExpression or .booleanTerm
identifier Shift 37
':' Shift 41
'(' Shift 43
booleanTerm Goto 83
booleanFactor Gt/Rd 59
booleanPrimary Goto 36
inPredicate Gt/Rd 100
nullPredicate Gt/Rd 99
likePredicate Gt/Rd 98
betweenPredicate Gt/Rd 97
comparisonPredicate Gt/Rd 96
timestampValue Gt/Rd 53
rowValuePredicant Goto 42
parenthesizedBooleanValueExpression Gt/Rd 101
booleanPredicate Gt/Rd 92
booleanTest Gt/Rd 75
('\,' tableReference)->',' .tableReference
identifier Shift 29
tableReference Gt/Rd 78
fromConstructor->'(' column ('\,' column)* .')' values '(' literal ('\,' literal)* ')'
('\,' column)*->('\,' column)* .('\,' column)
')' Shift 84
',' Shift 85
('\,' column) Gt/Rd 47
orderByClause->order by sortSpecification .('\,' sortSpecification)*
('\,' sortSpecification)*->. (82)
('\,' sortSpecification)* Goto 86
',' Reduce 82
Eof Reduce 82
sortSpecification->rowValuePredicant .desc
sortSpecification->rowValuePredicant . (80)
sortSpecification->rowValuePredicant .asc
sortSpecification->rowValuePredicant . (80)
',' Reduce 80
Eof Reduce 80
booleanTest->booleanPrimary is not .truthValue
truthValue Gt/Rd 86
literal->':' identifier default .literal
':' Shift 41
timestampValue Gt/Rd 53
inPredicateValue->'(' .inValueList ')'
':' Shift 41
identifier Shift 37
inValueList Goto 87
rowValuePredicant Gt/Rd 120
timestampValue Gt/Rd 53
nullPredicate->rowValuePredicant is not .null
likePredicate->rowValuePredicant like string . (110)
likePredicate->rowValuePredicant like string .escape string
likePredicate->rowValuePredicant like string . (110)
Eof Reduce 110
')' Reduce 110
betweenPredicate->rowValuePredicant between rowValuePredicant .and rowValuePredicant
inPredicate->rowValuePredicant not in .inPredicateValue
'(' Shift 76
inPredicateValue Gt/Rd 116
likePredicate->rowValuePredicant not like .string
likePredicate->rowValuePredicant not like .string escape string
betweenPredicate->rowValuePredicant not between .rowValuePredicant and rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Goto 91
timestampValue Gt/Rd 53
booleanValueExpression->booleanValueExpression or booleanTerm . (33)
booleanTerm->booleanTerm .and booleanFactor
booleanValueExpression->booleanValueExpression or booleanTerm . (33)
Eof Reduce 33
')' Reduce 33
fromConstructor->'(' column ('\,' column)* ')' .values '(' literal ('\,' literal)* ')'
('\,' column)->',' .column
identifier Sh/Rd 46
orderByClause->order by sortSpecification ('\,' sortSpecification)* . (67)
('\,' sortSpecification)*->('\,' sortSpecification)* .('\,' sortSpecification)
orderByClause->order by sortSpecification ('\,' sortSpecification)* . (67)
',' Shift 93
('\,' sortSpecification) Gt/Rd 83
Eof Reduce 67
inPredicateValue->'(' inValueList .')'
inValueList->inValueList .',' rowValuePredicant
',' Shift 94
')' Sh/Rd 119
likePredicate->rowValuePredicant like string escape .string
betweenPredicate->rowValuePredicant between rowValuePredicant and .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 109
timestampValue Gt/Rd 53
likePredicate->rowValuePredicant not like string . (111)
likePredicate->rowValuePredicant not like string .escape string
likePredicate->rowValuePredicant not like string . (111)
Eof Reduce 111
')' Reduce 111
betweenPredicate->rowValuePredicant not between rowValuePredicant .and rowValuePredicant
fromConstructor->'(' column ('\,' column)* ')' values .'(' literal ('\,' literal)* ')'
'(' Shift 97
('\,' sortSpecification)->',' .sortSpecification
':' Shift 41
identifier Shift 37
sortSpecification Gt/Rd 90
rowValuePredicant Goto 73
timestampValue Gt/Rd 53
inValueList->inValueList ',' .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 121
timestampValue Gt/Rd 53
likePredicate->rowValuePredicant not like string escape .string
betweenPredicate->rowValuePredicant not between rowValuePredicant and .rowValuePredicant
':' Shift 41
identifier Shift 37
rowValuePredicant Gt/Rd 108
timestampValue Gt/Rd 53
fromConstructor->'(' column ('\,' column)* ')' values '(' .literal ('\,' literal)* ')'
':' Shift 41
timestampValue Gt/Rd 53
fromConstructor->'(' column ('\,' column)* ')' values '(' literal .('\,' literal)* ')'
('\,' literal)* Goto 99
')' Reduce 58
',' Reduce 58
fromConstructor->'(' column ('\,' column)* ')' values '(' literal ('\,' literal)* .')'
('\,' literal)*->('\,' literal)* .('\,' literal)
')' Sh/Rd 32
',' Shift 100
('\,' literal) Gt/Rd 57
('\,' literal)->',' .literal
':' Shift 41
timestampValue Gt/Rd 53