diff --git a/app/src/main/java/com/annimon/hotarufx/lexer/HotaruLexer.java b/app/src/main/java/com/annimon/hotarufx/lexer/HotaruLexer.java index 8de3259..cc10f56 100644 --- a/app/src/main/java/com/annimon/hotarufx/lexer/HotaruLexer.java +++ b/app/src/main/java/com/annimon/hotarufx/lexer/HotaruLexer.java @@ -14,7 +14,7 @@ public class HotaruLexer extends Lexer { } private static final String TEXT_CHARS = "'\""; - private static final String OPERATOR_CHARS = "(){}=.,"; + private static final String OPERATOR_CHARS = "(){}:=+-.,"; private static final Map OPERATORS; static { @@ -23,7 +23,10 @@ public class HotaruLexer extends Lexer { OPERATORS.put(")", HotaruTokenId.RPAREN); OPERATORS.put("{", HotaruTokenId.LBRACE); OPERATORS.put("}", HotaruTokenId.RBRACE); + OPERATORS.put(":", HotaruTokenId.COLON); OPERATORS.put("=", HotaruTokenId.EQ); + OPERATORS.put("+", HotaruTokenId.PLUS); + OPERATORS.put("-", HotaruTokenId.MINUS); OPERATORS.put(".", HotaruTokenId.DOT); OPERATORS.put(",", HotaruTokenId.COMMA); } diff --git a/app/src/main/java/com/annimon/hotarufx/lexer/HotaruTokenId.java b/app/src/main/java/com/annimon/hotarufx/lexer/HotaruTokenId.java index 1382bc9..00be239 100644 --- a/app/src/main/java/com/annimon/hotarufx/lexer/HotaruTokenId.java +++ b/app/src/main/java/com/annimon/hotarufx/lexer/HotaruTokenId.java @@ -11,10 +11,13 @@ public enum HotaruTokenId { TEXT(Category.STRING), EQ(Category.OPERATOR), + PLUS(Category.OPERATOR), + MINUS(Category.OPERATOR), LPAREN(Category.OPERATOR), RPAREN(Category.OPERATOR), LBRACE(Category.OPERATOR), RBRACE(Category.OPERATOR), + COLON(Category.OPERATOR), COMMA(Category.OPERATOR), DOT(Category.OPERATOR), diff --git a/app/src/test/java/com/annimon/hotarufx/lexer/HotaruLexerTest.java b/app/src/test/java/com/annimon/hotarufx/lexer/HotaruLexerTest.java index 2f33ec3..29b4d8e 100644 --- a/app/src/test/java/com/annimon/hotarufx/lexer/HotaruLexerTest.java +++ b/app/src/test/java/com/annimon/hotarufx/lexer/HotaruLexerTest.java @@ -76,14 +76,17 @@ class HotaruLexerTest { @Test void testTokenizeOperators() { - assertThat(t("(){}=,."), contains( + assertThat(t("(){}=+-,.:"), contains( tokenId(HotaruTokenId.LPAREN), tokenId(HotaruTokenId.RPAREN), tokenId(HotaruTokenId.LBRACE), tokenId(HotaruTokenId.RBRACE), tokenId(HotaruTokenId.EQ), + tokenId(HotaruTokenId.PLUS), + tokenId(HotaruTokenId.MINUS), tokenId(HotaruTokenId.COMMA), - tokenId(HotaruTokenId.DOT) + tokenId(HotaruTokenId.DOT), + tokenId(HotaruTokenId.COLON) )); } @@ -118,11 +121,16 @@ class HotaruLexerTest { @Test void testStatements() { - assertThat(t("A = node()"), contains( + assertThat(t("A = node({x : 10})"), contains( tokenId(HotaruTokenId.WORD), tokenId(HotaruTokenId.EQ), tokenId(HotaruTokenId.WORD), tokenId(HotaruTokenId.LPAREN), + tokenId(HotaruTokenId.LBRACE), + tokenId(HotaruTokenId.WORD), + tokenId(HotaruTokenId.COLON), + tokenId(HotaruTokenId.NUMBER), + tokenId(HotaruTokenId.RBRACE), tokenId(HotaruTokenId.RPAREN) )); assertThat(t("B.x = 100"), contains(