Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit 8e7c8f8

Browse files
authored
Allow keywords as variables (#19)
1 parent c8fbb46 commit 8e7c8f8

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

src/SqlSquare/Parser.purs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ keyword s = PC.try $ token >>= case _ of
107107
Kw ss | S.toLower s == S.toLower ss → pure s
108108
_ → P.fail $ "Token is not a keyword " <> s
109109

110+
anyKeyword m. Monad m P.ParserT (Array Token) m String
111+
anyKeyword = PC.try $ token >>= case _ of
112+
Kw s → pure s
113+
_ → P.fail "Token is not a keyword"
114+
110115
match m. Monad m Token P.ParserT (Array Token) m Token
111116
match = whenTok ∘ eq
112117

@@ -467,7 +472,7 @@ variable
467472
P.ParserT (Array Token) m t
468473
variable = PC.try do
469474
operator ":"
470-
s ← ident
475+
s ← ident <|> anyKeyword
471476
pure $ embed $ Sig.Vari s
472477

473478
literal

test/src/Parse.purs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ select 12
3939
"""
4040
, """import foo; select * from `/test`"""
4141
, """create function foo(:bar) begin :bar + 2 end; select * from `/test` where foo = foo(42)"""
42+
, """select :where"""
4243
]
4344

4445
testSuite e. TestSuite (testOutput Console.TESTOUTPUT | e)

0 commit comments

Comments
 (0)