Skip to content

Commit

Permalink
change fragment to keyword matcher
Browse files Browse the repository at this point in the history
  • Loading branch information
adranwit committed Nov 20, 2023
1 parent d13eaba commit bb733cb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 18 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.17

require (
github.com/stretchr/testify v1.8.1
github.com/viant/parsly v0.3.0
github.com/viant/parsly v0.3.2-0.20231120160314-11ec855ce00a
)

require (
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o
github.com/viant/assertly v0.9.0/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
github.com/viant/parsly v0.3.0 h1:UR4/ml87j4StdEa+CeSicKlW+pXMMFx0J+U95YcfE0o=
github.com/viant/parsly v0.3.0/go.mod h1:4PKQzioRT9R99ceIhZ6tCD3tp0H0n2dEoIOaLulVvrg=
github.com/viant/parsly v0.3.2-0.20231120155145-7e5a15fa9a7f h1:yKoMkkyqy095iRe6wRfvo+q0ZQ0yblFOB5Ev7PBM6GU=
github.com/viant/parsly v0.3.2-0.20231120155145-7e5a15fa9a7f/go.mod h1:4PKQzioRT9R99ceIhZ6tCD3tp0H0n2dEoIOaLulVvrg=
github.com/viant/parsly v0.3.2-0.20231120160314-11ec855ce00a h1:H+7xS8C8Ywjxc0EfiKL9m+A7AF6JqkJKu5W+7zus/W0=
github.com/viant/parsly v0.3.2-0.20231120160314-11ec855ce00a/go.mod h1:4PKQzioRT9R99ceIhZ6tCD3tp0H0n2dEoIOaLulVvrg=
github.com/viant/toolbox v0.34.5/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
Expand Down
34 changes: 17 additions & 17 deletions lex.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,10 @@ const (
var whitespaceMatcher = parsly.NewToken(whitespaceCode, "whitespace", matcher.NewWhiteSpace())
var parenthesesMatcher = parsly.NewToken(parenthesesCode, "()", matcher.NewBlock('(', ')', '\\'))
var nextMatcher = parsly.NewToken(nextCode, ",", matcher.NewByte(','))
var asKeywordMatcher = parsly.NewToken(asKeyword, "AS", matcher.NewFragment("as", &option.Case{}))
var asKeywordMatcher = parsly.NewToken(asKeyword, "AS", matcher.NewKeyword("as", &option.Case{}))
var starTokenMatcher = parsly.NewToken(starTokenCode, "*", matcher.NewByte('*'))
var notOperatorMatcher = parsly.NewToken(notOperator, "NOT", matcher.NewFragment("not", &option.Case{}))
var nullMatcher = parsly.NewToken(nullTokenCode, "NULL", matcher.NewFragment("null", &option.Case{}))
var notOperatorMatcher = parsly.NewToken(notOperator, "NOT", matcher.NewKeyword("not", &option.Case{}))
var nullMatcher = parsly.NewToken(nullTokenCode, "NULL", matcher.NewKeyword("null", &option.Case{}))
var selectionKindMatcher = parsly.NewToken(selectionKindCode, "ALL|DISTINCT|STRUCT", matcher.NewSet([]string{
"ALL", "DISTINCT", "STRUCT",
}, &option.Case{}))
Expand All @@ -84,11 +84,11 @@ var caseBlockMatcher = parsly.NewToken(caseBlock, "CASE", matcher.NewSeqBlock("C
var commentBlockMatcher = parsly.NewToken(commentBlock, "/* */", matcher.NewSeqBlock("/*", "*/"))
var inlineCommentMatcher = parsly.NewToken(commentBlock, "--", matcher.NewSeqBlock("--", "\n"))

var selectKeywordMatcher = parsly.NewToken(selectKeyword, "SELECT", matcher.NewFragment("select", &option.Case{}))
var exceptKeywordMatcher = parsly.NewToken(exceptKeyword, "EXCEPT", matcher.NewFragment("except", &option.Case{}))
var betweenKeywordMatcher = parsly.NewToken(betweenToken, "BETWEEN", matcher.NewFragment("between", &option.Case{}))
var selectKeywordMatcher = parsly.NewToken(selectKeyword, "SELECT", matcher.NewKeyword("select", &option.Case{}))
var exceptKeywordMatcher = parsly.NewToken(exceptKeyword, "EXCEPT", matcher.NewKeyword("except", &option.Case{}))
var betweenKeywordMatcher = parsly.NewToken(betweenToken, "BETWEEN", matcher.NewKeyword("between", &option.Case{}))

var fromKeywordMatcher = parsly.NewToken(fromKeyword, "FROM", matcher.NewFragment("from", &option.Case{}))
var fromKeywordMatcher = parsly.NewToken(fromKeyword, "FROM", matcher.NewKeyword("from", &option.Case{}))
var joinMatcher = parsly.NewToken(joinToken, "LEFT OUTER JOIN|LEFT JOIN|JOIN", matcher.NewSpacedSet([]string{
"left outer join",
"cross join",
Expand All @@ -103,30 +103,30 @@ var keyMatcher = parsly.NewToken(keyTokenCode, "[RANGE|HASH|PRIMARY] KEY", match
"primary key",
}, &option.Case{}))

var onKeywordMatcher = parsly.NewToken(onKeyword, "ON", matcher.NewFragment("on", &option.Case{}))
var onKeywordMatcher = parsly.NewToken(onKeyword, "ON", matcher.NewKeyword("on", &option.Case{}))

var whereKeywordMatcher = parsly.NewToken(whereKeyword, "WHERE", matcher.NewFragment("where", &option.Case{}))
var whereKeywordMatcher = parsly.NewToken(whereKeyword, "WHERE", matcher.NewKeyword("where", &option.Case{}))
var groupByMatcher = parsly.NewToken(groupByKeyword, "GROUP BY", matcher.NewSpacedFragment("group by", &option.Case{}))
var havingKeywordMatcher = parsly.NewToken(havingKeyword, "HAVING", matcher.NewFragment("having", &option.Case{}))
var havingKeywordMatcher = parsly.NewToken(havingKeyword, "HAVING", matcher.NewKeyword("having", &option.Case{}))

var orderByKeywordMatcher = parsly.NewToken(orderByKeyword, "ORDER BY", matcher.NewSpacedFragment("order by", &option.Case{}))
var windowMatcher = parsly.NewToken(windowTokenCode, "LIMIT|OFFSET", matcher.NewSet([]string{"limit", "offset"}, &option.Case{}))

var updateKeywordMatcher = parsly.NewToken(updateKeyword, "UPDATE", matcher.NewFragment("update", &option.Case{}))
var setKeywordMatcher = parsly.NewToken(setKeyword, "SET", matcher.NewFragment("set", &option.Case{}))
var updateKeywordMatcher = parsly.NewToken(updateKeyword, "UPDATE", matcher.NewKeyword("update", &option.Case{}))
var setKeywordMatcher = parsly.NewToken(setKeyword, "SET", matcher.NewKeyword("set", &option.Case{}))

var insertIntoKeywordMatcher = parsly.NewToken(insertIntoKeyword, "INSERT INTO", matcher.NewSpacedSet([]string{
"insert into"}, &option.Case{}))

var insertValesKeywordMatcher = parsly.NewToken(insertValuesKeyword, "VALUES", matcher.NewFragment("values", &option.Case{}))
var insertValesKeywordMatcher = parsly.NewToken(insertValuesKeyword, "VALUES", matcher.NewKeyword("values", &option.Case{}))

var binaryOperatorMatcher = parsly.NewToken(binaryOperator, "binary OPERATOR", matcher.NewSpacedSet([]string{"+", "!=", ">=", "<=", "=", "-", ">", "<", "*", "/", "in", "not in", "is not", "is"}, &option.Case{}))
var assignOperatorMatcher = parsly.NewToken(assignOperator, "assign OPERATOR", matcher.NewSpacedSet([]string{"="}, &option.Case{}))

var logicalOperatorMatcher = parsly.NewToken(logicalOperator, "AND|OR", matcher.NewSet([]string{"and", "or"}, &option.Case{}))
var rangeOperatorMatcher = parsly.NewToken(rangeOperator, ".. AND .. ", matcher.NewSet([]string{"and"}, &option.Case{}))

var nullKeywordMatcher = parsly.NewToken(nullKeyword, "NULL", matcher.NewFragment("null", &option.Case{}))
var nullKeywordMatcher = parsly.NewToken(nullKeyword, "NULL", matcher.NewKeyword("null", &option.Case{}))
var boolLiteralMatcher = parsly.NewToken(boolLiteral, "true|false", matcher.NewSet([]string{"true", "false"}, &option.Case{}))
var singleQuotedStringLiteralMatcher = parsly.NewToken(singleQuotedStringLiteral, `'...'`, matcher.NewByteQuote('\'', '\\'))
var doubleQuotedStringLiteralMatcher = parsly.NewToken(doubleQuotedStringLiteral, `"..."`, matcher.NewByteQuote('\'', '\\'))
Expand All @@ -140,14 +140,14 @@ var tableMatcher = parsly.NewToken(tableSelectorTokenCode, "TABLE MATCHER", smat
var placeholderMatcher = parsly.NewToken(placeholderTokenCode, "SELECTOR", smatcher.NewPlaceholder())
var literalMatcher = parsly.NewToken(literalCode, "LITERAL", matcher.NewNop())

var withKeywordMatcher = parsly.NewToken(withKeyword, "WITH", matcher.NewFragment("with", &option.Case{}))
var withKeywordMatcher = parsly.NewToken(withKeyword, "WITH", matcher.NewKeyword("with", &option.Case{}))
var unionMatcher = parsly.NewToken(unionKeyword, "UNION|UNION ALL", matcher.NewSpacedSet([]string{
"union all",
"union",
}, &option.Case{}))
var exprMatcher = parsly.NewToken(exprToken, ",EXPR", matcher.NewNop())

var deleteMatcher = parsly.NewToken(deleteCode, "DELETE", matcher.NewFragmentsFold([]byte("delete")))
var deleteMatcher = parsly.NewToken(deleteCode, "DELETE", matcher.NewKeyword("delete", &option.Case{}))
var notNullMatcher = parsly.NewToken(notNullToken, "NOT NULL", matcher.NewSpacedSet([]string{
"not null"}, &option.Case{}))
var ifNotExistsMatcher = parsly.NewToken(ifNotExistsToken, "IF NOT EXISTS", matcher.NewSpacedSet([]string{
Expand All @@ -159,7 +159,7 @@ var ifExistsMatcher = parsly.NewToken(ifExistsToken, "IF EXISTS", matcher.NewSpa
var createTableMatcher = parsly.NewToken(createTableToken, "CREATE TABLE", matcher.NewSpacedSet([]string{
"create table"}, &option.Case{}))

var defaultMatcher = parsly.NewToken(defaultToken, "DEFAULT", matcher.NewFragment("default", &option.Case{}))
var defaultMatcher = parsly.NewToken(defaultToken, "DEFAULT", matcher.NewKeyword("default", &option.Case{}))

var dropTableMatcher = parsly.NewToken(dropTableToken, "DROP TABLE", matcher.NewSpacedSet([]string{
"drop table"}, &option.Case{}))

0 comments on commit bb733cb

Please sign in to comment.