language: euclidean modulo and remainder infix operators (#3)

This commit is contained in:
a dinosaur authored and GitHub committed 2023-09-09 22:41:20 -04:00
1 parent 03c278f5b1
commit 0024a8b141
5 files changed
+34 -7

No files matched your search

@@ -167,7 +167,9 @@ class Parser(source: PeekableSource<Token>, val attribution: NodeAttribution) {
TokenType.Multiply,
TokenType.Divide,
TokenType.Equality,
TokenType.Inequality
TokenType.Inequality,
TokenType.Mod,
TokenType.Rem
)
) {
within {
@@ -264,6 +266,8 @@ class Parser(source: PeekableSource<Token>, val attribution: NodeAttribution) {
TokenType.Divide -> InfixOperator.Divide
TokenType.Equality -> InfixOperator.Equals
TokenType.Inequality -> InfixOperator.NotEquals
TokenType.Mod -> InfixOperator.EuclideanModulo
TokenType.Rem -> InfixOperator.Remainder
else -> throw RuntimeException("Unknown Infix Operator")
}
@@ -26,6 +26,8 @@ enum class TokenType(vararg properties: TokenTypeProperty) {
LeftParentheses(SingleChar('(')),
RightParentheses(SingleChar(')')),
Negation(SingleChar('!'), Promotion('=', Inequality), OperatorFamily),
Mod(Keyword("mod"), OperatorFamily),
Rem(Keyword("rem"), OperatorFamily),
Comma(SingleChar(',')),
Period(SingleChar('.')),
False(Keyword("false"), KeywordFamily),