From 45749bf471bfa44ea1edb0de5eec981cde91e075 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 22 Aug 2017 10:01:11 +0300 Subject: [PATCH] Add colon, plus, minus operators --- .../com/annimon/hotarufx/lexer/HotaruLexer.java | 5 ++++- .../com/annimon/hotarufx/lexer/HotaruTokenId.java | 3 +++ .../annimon/hotarufx/lexer/HotaruLexerTest.java | 14 +++++++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) 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(