Introduce new tokens: $, | and ||

This commit is contained in:
2020-03-19 13:21:34 +01:00
parent 0fb7875403
commit 7b742f21da
3 changed files with 10 additions and 2 deletions

View File

@@ -4,6 +4,7 @@ enum class TokenType(val token: String) {
NONE("<NONE>"),
RELATION("==, !=, >=, <="),
DOUBLE_ASTERISK("**"),
DOUBLE_PIPE("||"),
OPEN_CURLY("{"),
CLOSE_CURLY("}"),
OPEN_PAREN("("),
@@ -15,6 +16,7 @@ enum class TokenType(val token: String) {
SEMICOLON(";"),
ASTERISK("*"),
PERCENT("%"),
DOLLAR("$"),
ASSIGN("="),
ARROW("->"),
COLON(":"),
@@ -24,6 +26,7 @@ enum class TokenType(val token: String) {
PLUS("+"),
CARET("^"),
DOTS("..."),
PIPE("|"),
AMP("&"),
DOT("."),
AND("and"),

View File

@@ -21,6 +21,9 @@ class DefaultTokenizer : Tokenizer {
keywords(TokenType.RELATION, "==", "!=", "<=", ">="),
default(TokenType.DOUBLE_ASTERISK),
// Double-character tokens
default(TokenType.DOUBLE_PIPE),
// Characters
default(TokenType.OPEN_CURLY),
default(TokenType.CLOSE_CURLY),
@@ -33,6 +36,7 @@ class DefaultTokenizer : Tokenizer {
default(TokenType.SEMICOLON),
default(TokenType.ASTERISK),
default(TokenType.PERCENT),
default(TokenType.DOLLAR),
default(TokenType.ASSIGN),
default(TokenType.COLON),
default(TokenType.COMMA),
@@ -41,6 +45,7 @@ class DefaultTokenizer : Tokenizer {
default(TokenType.PLUS),
default(TokenType.CARET),
default(TokenType.DOTS),
default(TokenType.PIPE),
default(TokenType.AMP),
default(TokenType.DOT),

View File

@@ -35,9 +35,9 @@ class DefaultInterpreter {
environment.loadModule("smnp.lang")
val tokens = tokenizer.tokenize(lines, source)
val ast = parser.parse(tokens)
if (printTokens) println(tokens)
val ast = parser.parse(tokens)
if (printAst) ast.node.pretty()
if (!dryRun) {