Migrate base statement parser

This commit is contained in:
2020-03-05 21:14:39 +01:00
parent cf0ceba925
commit c10112bc03
3 changed files with 31 additions and 1 deletions

View File

@@ -2,5 +2,5 @@ import interpreter.Interpreter
fun main(args: Array<String>) {
val interpreter = Interpreter()
interpreter.run("2 * (2 + 2)")
interpreter.run("(2 + 2) * 2 ** 2;")
}

View File

@@ -0,0 +1,22 @@
package dsl.ast.parser
import dsl.ast.model.entity.ParserOutput
import dsl.token.model.entity.TokenList
import dsl.token.model.enumeration.TokenType
class StatementParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return allOf(
listOf(
oneOf(
listOf(
ExpressionParser()
)
),
optional(terminal(TokenType.SEMICOLON))
)
) {
it[0]
}.parse(input)
}
}

View File

@@ -1,5 +1,8 @@
package interpreter
import dsl.ast.model.node.Node
import dsl.ast.parser.Parser
import dsl.ast.parser.StatementParser
import dsl.token.tokenizer.DefaultTokenizer
import java.io.File
@@ -8,6 +11,11 @@ class Interpreter {
val tokenizer = DefaultTokenizer()
val lines = code.split("\n")
val tokens = tokenizer.tokenize(lines)
val ast = Parser.repeat(StatementParser()) { nodes, pos -> object : Node(nodes, pos) {} }.parse(tokens)
ast.node.pretty()
println(tokens)
}
fun run(file: File) {