Introduce new tokens: $, | and ||
This commit is contained in:
@@ -4,6 +4,7 @@ enum class TokenType(val token: String) {
|
|||||||
NONE("<NONE>"),
|
NONE("<NONE>"),
|
||||||
RELATION("==, !=, >=, <="),
|
RELATION("==, !=, >=, <="),
|
||||||
DOUBLE_ASTERISK("**"),
|
DOUBLE_ASTERISK("**"),
|
||||||
|
DOUBLE_PIPE("||"),
|
||||||
OPEN_CURLY("{"),
|
OPEN_CURLY("{"),
|
||||||
CLOSE_CURLY("}"),
|
CLOSE_CURLY("}"),
|
||||||
OPEN_PAREN("("),
|
OPEN_PAREN("("),
|
||||||
@@ -15,6 +16,7 @@ enum class TokenType(val token: String) {
|
|||||||
SEMICOLON(";"),
|
SEMICOLON(";"),
|
||||||
ASTERISK("*"),
|
ASTERISK("*"),
|
||||||
PERCENT("%"),
|
PERCENT("%"),
|
||||||
|
DOLLAR("$"),
|
||||||
ASSIGN("="),
|
ASSIGN("="),
|
||||||
ARROW("->"),
|
ARROW("->"),
|
||||||
COLON(":"),
|
COLON(":"),
|
||||||
@@ -24,6 +26,7 @@ enum class TokenType(val token: String) {
|
|||||||
PLUS("+"),
|
PLUS("+"),
|
||||||
CARET("^"),
|
CARET("^"),
|
||||||
DOTS("..."),
|
DOTS("..."),
|
||||||
|
PIPE("|"),
|
||||||
AMP("&"),
|
AMP("&"),
|
||||||
DOT("."),
|
DOT("."),
|
||||||
AND("and"),
|
AND("and"),
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ class DefaultTokenizer : Tokenizer {
|
|||||||
keywords(TokenType.RELATION, "==", "!=", "<=", ">="),
|
keywords(TokenType.RELATION, "==", "!=", "<=", ">="),
|
||||||
default(TokenType.DOUBLE_ASTERISK),
|
default(TokenType.DOUBLE_ASTERISK),
|
||||||
|
|
||||||
|
// Double-character tokens
|
||||||
|
default(TokenType.DOUBLE_PIPE),
|
||||||
|
|
||||||
// Characters
|
// Characters
|
||||||
default(TokenType.OPEN_CURLY),
|
default(TokenType.OPEN_CURLY),
|
||||||
default(TokenType.CLOSE_CURLY),
|
default(TokenType.CLOSE_CURLY),
|
||||||
@@ -33,6 +36,7 @@ class DefaultTokenizer : Tokenizer {
|
|||||||
default(TokenType.SEMICOLON),
|
default(TokenType.SEMICOLON),
|
||||||
default(TokenType.ASTERISK),
|
default(TokenType.ASTERISK),
|
||||||
default(TokenType.PERCENT),
|
default(TokenType.PERCENT),
|
||||||
|
default(TokenType.DOLLAR),
|
||||||
default(TokenType.ASSIGN),
|
default(TokenType.ASSIGN),
|
||||||
default(TokenType.COLON),
|
default(TokenType.COLON),
|
||||||
default(TokenType.COMMA),
|
default(TokenType.COMMA),
|
||||||
@@ -41,6 +45,7 @@ class DefaultTokenizer : Tokenizer {
|
|||||||
default(TokenType.PLUS),
|
default(TokenType.PLUS),
|
||||||
default(TokenType.CARET),
|
default(TokenType.CARET),
|
||||||
default(TokenType.DOTS),
|
default(TokenType.DOTS),
|
||||||
|
default(TokenType.PIPE),
|
||||||
default(TokenType.AMP),
|
default(TokenType.AMP),
|
||||||
default(TokenType.DOT),
|
default(TokenType.DOT),
|
||||||
|
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ class DefaultInterpreter {
|
|||||||
environment.loadModule("smnp.lang")
|
environment.loadModule("smnp.lang")
|
||||||
|
|
||||||
val tokens = tokenizer.tokenize(lines, source)
|
val tokens = tokenizer.tokenize(lines, source)
|
||||||
val ast = parser.parse(tokens)
|
|
||||||
|
|
||||||
if (printTokens) println(tokens)
|
if (printTokens) println(tokens)
|
||||||
|
|
||||||
|
val ast = parser.parse(tokens)
|
||||||
if (printAst) ast.node.pretty()
|
if (printAst) ast.node.pretty()
|
||||||
|
|
||||||
if (!dryRun) {
|
if (!dryRun) {
|
||||||
|
|||||||
Reference in New Issue
Block a user