1
0
mirror of https://github.com/aNNiMON/HotaruFX.git synced 2024-09-19 14:14:21 +03:00

Add colon, plus, minus operators

This commit is contained in:
Victor 2017-08-22 10:01:11 +03:00
parent 37cf836c40
commit 45749bf471
3 changed files with 18 additions and 4 deletions

View File

@ -14,7 +14,7 @@ public class HotaruLexer extends Lexer {
} }
private static final String TEXT_CHARS = "'\""; private static final String TEXT_CHARS = "'\"";
private static final String OPERATOR_CHARS = "(){}=.,"; private static final String OPERATOR_CHARS = "(){}:=+-.,";
private static final Map<String, HotaruTokenId> OPERATORS; private static final Map<String, HotaruTokenId> OPERATORS;
static { static {
@ -23,7 +23,10 @@ public class HotaruLexer extends Lexer {
OPERATORS.put(")", HotaruTokenId.RPAREN); OPERATORS.put(")", HotaruTokenId.RPAREN);
OPERATORS.put("{", HotaruTokenId.LBRACE); OPERATORS.put("{", HotaruTokenId.LBRACE);
OPERATORS.put("}", HotaruTokenId.RBRACE); OPERATORS.put("}", HotaruTokenId.RBRACE);
OPERATORS.put(":", HotaruTokenId.COLON);
OPERATORS.put("=", HotaruTokenId.EQ); OPERATORS.put("=", HotaruTokenId.EQ);
OPERATORS.put("+", HotaruTokenId.PLUS);
OPERATORS.put("-", HotaruTokenId.MINUS);
OPERATORS.put(".", HotaruTokenId.DOT); OPERATORS.put(".", HotaruTokenId.DOT);
OPERATORS.put(",", HotaruTokenId.COMMA); OPERATORS.put(",", HotaruTokenId.COMMA);
} }

View File

@ -11,10 +11,13 @@ public enum HotaruTokenId {
TEXT(Category.STRING), TEXT(Category.STRING),
EQ(Category.OPERATOR), EQ(Category.OPERATOR),
PLUS(Category.OPERATOR),
MINUS(Category.OPERATOR),
LPAREN(Category.OPERATOR), LPAREN(Category.OPERATOR),
RPAREN(Category.OPERATOR), RPAREN(Category.OPERATOR),
LBRACE(Category.OPERATOR), LBRACE(Category.OPERATOR),
RBRACE(Category.OPERATOR), RBRACE(Category.OPERATOR),
COLON(Category.OPERATOR),
COMMA(Category.OPERATOR), COMMA(Category.OPERATOR),
DOT(Category.OPERATOR), DOT(Category.OPERATOR),

View File

@ -76,14 +76,17 @@ class HotaruLexerTest {
@Test @Test
void testTokenizeOperators() { void testTokenizeOperators() {
assertThat(t("(){}=,."), contains( assertThat(t("(){}=+-,.:"), contains(
tokenId(HotaruTokenId.LPAREN), tokenId(HotaruTokenId.LPAREN),
tokenId(HotaruTokenId.RPAREN), tokenId(HotaruTokenId.RPAREN),
tokenId(HotaruTokenId.LBRACE), tokenId(HotaruTokenId.LBRACE),
tokenId(HotaruTokenId.RBRACE), tokenId(HotaruTokenId.RBRACE),
tokenId(HotaruTokenId.EQ), tokenId(HotaruTokenId.EQ),
tokenId(HotaruTokenId.PLUS),
tokenId(HotaruTokenId.MINUS),
tokenId(HotaruTokenId.COMMA), tokenId(HotaruTokenId.COMMA),
tokenId(HotaruTokenId.DOT) tokenId(HotaruTokenId.DOT),
tokenId(HotaruTokenId.COLON)
)); ));
} }
@ -118,11 +121,16 @@ class HotaruLexerTest {
@Test @Test
void testStatements() { void testStatements() {
assertThat(t("A = node()"), contains( assertThat(t("A = node({x : 10})"), contains(
tokenId(HotaruTokenId.WORD), tokenId(HotaruTokenId.WORD),
tokenId(HotaruTokenId.EQ), tokenId(HotaruTokenId.EQ),
tokenId(HotaruTokenId.WORD), tokenId(HotaruTokenId.WORD),
tokenId(HotaruTokenId.LPAREN), tokenId(HotaruTokenId.LPAREN),
tokenId(HotaruTokenId.LBRACE),
tokenId(HotaruTokenId.WORD),
tokenId(HotaruTokenId.COLON),
tokenId(HotaruTokenId.NUMBER),
tokenId(HotaruTokenId.RBRACE),
tokenId(HotaruTokenId.RPAREN) tokenId(HotaruTokenId.RPAREN)
)); ));
assertThat(t("B.x = 100"), contains( assertThat(t("B.x = 100"), contains(