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