diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-02-02 20:05:15 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-02-02 20:13:20 +0000 |
| commit | 67f010c93b11744b1f2f1c9403fd1e8d2b888acb (patch) | |
| tree | e0642d7c0106297416e05ce9bd1fba0f84b14773 /src/main/java | |
| parent | 1814bc450fa6806c3bbc9468dbe56865c7f3c3a4 (diff) | |
Parser multiplication
Diffstat (limited to 'src/main/java')
4 files changed, 5 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java b/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java index f34fa552..bf6b81c6 100644 --- a/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java +++ b/src/main/java/org/shedlang/compiler/parser/OperatorPrecedence.java @@ -4,7 +4,8 @@ public enum OperatorPrecedence { EQUALS(1), RELATIONAL(2), ADD(3), - CALL(4); + MULTIPLY(4), + CALL(5); private final int precedence; diff --git a/src/main/java/org/shedlang/compiler/parser/Parser.java b/src/main/java/org/shedlang/compiler/parser/Parser.java index 9f921e2e..b6391e2f 100644 --- a/src/main/java/org/shedlang/compiler/parser/Parser.java +++ b/src/main/java/org/shedlang/compiler/parser/Parser.java @@ -351,6 +351,7 @@ public class Parser { new BinaryOperationParser(TokenType.SYMBOL_GREATER_THAN_OR_EQUAL, OperatorPrecedence.RELATIONAL, UntypedBinaryOperator.GREATER_THAN_OR_EQUAL), new BinaryOperationParser(TokenType.SYMBOL_PLUS, OperatorPrecedence.ADD, UntypedBinaryOperator.ADD), new BinaryOperationParser(TokenType.SYMBOL_MINUS, OperatorPrecedence.ADD, UntypedBinaryOperator.SUB), + new BinaryOperationParser(TokenType.SYMBOL_ASTERISK, OperatorPrecedence.MULTIPLY, UntypedBinaryOperator.MULTIPLY), new CallParser() ) .flatMap(parser -> diff --git a/src/main/java/org/shedlang/compiler/parser/TokenType.java b/src/main/java/org/shedlang/compiler/parser/TokenType.java index db6c229f..945fb0b5 100644 --- a/src/main/java/org/shedlang/compiler/parser/TokenType.java +++ b/src/main/java/org/shedlang/compiler/parser/TokenType.java @@ -36,6 +36,7 @@ public enum TokenType { KEYWORD_WHEN, KEYWORD_WHILE, + SYMBOL_ASTERISK, SYMBOL_BANG, SYMBOL_BANG_EQUALS, SYMBOL_BAR, diff --git a/src/main/java/org/shedlang/compiler/parser/Tokeniser.java b/src/main/java/org/shedlang/compiler/parser/Tokeniser.java index d94df416..7912ae3b 100644 --- a/src/main/java/org/shedlang/compiler/parser/Tokeniser.java +++ b/src/main/java/org/shedlang/compiler/parser/Tokeniser.java @@ -60,6 +60,7 @@ public class Tokeniser { RegexTokeniser.rule(TokenType.SYMBOL_THIN_ARROW, "->"), RegexTokeniser.rule(TokenType.SYMBOL_HASH_PAREN_OPEN, "#\\("), + RegexTokeniser.rule(TokenType.SYMBOL_ASTERISK, "\\*"), RegexTokeniser.rule(TokenType.SYMBOL_BANG, "!"), RegexTokeniser.rule(TokenType.SYMBOL_BAR, "\\|"), RegexTokeniser.rule(TokenType.SYMBOL_BRACE_OPEN, "\\{"), |
