Create BlockNode

This commit is contained in:
Bartłomiej Pluta
2019-07-05 22:06:07 +02:00
parent 6d59ffff1c
commit ec3675ac43
4 changed files with 54 additions and 4 deletions

View File

@@ -97,8 +97,21 @@ class Parser:
return parse
@staticmethod
def epsilon():
def parser(input):
return ParseResult.OK(IgnoredNode((-1, -1)))
def loop(startParser, itemParser, endParser, createNode):
def parse(input):
items = []
start = startParser(input)
if start.result:
while True:
end = endParser(input)
if end.result:
return ParseResult.OK(createNode(start.node, items, end.node))
item = itemParser(input)
if not item.result:
return ParseResult.FAIL()
items.append(item.node)
return ParseResult.FAIL()
return parse
return parser