Skip to content

Commit

Permalink
add less than or equal to
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianHicks committed Jun 10, 2021
1 parent 7da96d1 commit 307e47b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/Datalog.elm
Expand Up @@ -866,6 +866,7 @@ type Token
| Horn
| DoubleQuote
| LessThan
| LessThanOrEquals
| GreaterThan
| GreaterThanOrEquals
| Equals
Expand Down Expand Up @@ -981,7 +982,9 @@ filterClauseParser =
opParser : Parser (String -> Term -> Filter)
opParser =
Parser.oneOf
[ Parser.succeed lt
[ Parser.succeed (\lhs rhs -> or (lt lhs rhs) (eq lhs rhs))
|. Parser.token lessThanOrEqualsToken
, Parser.succeed lt
|. Parser.token lessThanToken
, Parser.succeed (\lhs rhs -> or (gt lhs rhs) (eq lhs rhs))
|. Parser.token greaterThanOrEqualsToken
Expand Down Expand Up @@ -1115,6 +1118,11 @@ lessThanToken =
Parser.Token "<" (ExpectedToken LessThan)


lessThanOrEqualsToken : Parser.Token ParsingProblem
lessThanOrEqualsToken =
Parser.Token "<=" (ExpectedToken LessThanOrEquals)


greaterThanToken : Parser.Token ParsingProblem
greaterThanToken =
Parser.Token ">" (ExpectedToken GreaterThan)
Expand Down
16 changes: 16 additions & 0 deletions tests/DatalogTests.elm
Expand Up @@ -517,6 +517,22 @@ datalogTests =
(eq "age" (int 18))
)
]
, test "less than or equal to" <|
\_ ->
expectParses
"""
child(name) :-
person(name, age),
age <= 17.
"""
[ rule "child" [ "name" ]
|> with "person" [ var "name", var "age" ]
|> filter
(or
(lt "age" (int 17))
(eq "age" (int 17))
)
]
]
, todo "rule with negation"
]
Expand Down

0 comments on commit 307e47b

Please sign in to comment.