Extract properties block parser to file

This commit is contained in:
Florian Schroedl
2022-01-20 17:00:00 +01:00
parent cad191a976
commit 21a6234149
5 changed files with 131 additions and 88 deletions

21
src/parser/utils.nim Normal file
View File

@@ -0,0 +1,21 @@
import std/sugar
import std/collections/sequtils
import ./parser
import results
type StringBuilderT* = string
type StringBuilder* = Builder[StringBuilderT]
type StringBuilderResult* = BuilderResult[StringBuilderT]
proc stringConcat*(typeInfo: StringBuilderT):
(seq[ParserToken], seq[StringBuilderT]) -> seq[StringBuilderT] =
return proc(xs: seq[ParserToken], ys: seq[StringBuilderT]): seq[StringBuilderT] =
return ys & xs.foldl(a & b.tokenStringValue(), typeInfo)
proc initStringBuilder*(str: string): StringBuilderResult =
StringBuilderResult
.ok(StringBuilder((
parser: initParser(str),
tree: newSeq[StringBuilderT](),
)))