We can now use concept sets in BNF definitions

This commit is contained in:
2020-01-19 21:48:43 +01:00
parent a7b239c167
commit 821614a6c4
16 changed files with 643 additions and 93 deletions
+14
View File
@@ -1,4 +1,7 @@
from dataclasses import dataclass
from core.builtin_concepts import BuiltinConcepts
from core.concept import Concept
from core.tokenizer import TokenKind, Keywords
from core.sheerka_logger import get_logger
import logging
@@ -83,6 +86,17 @@ class BaseParser:
value = context.return_value_to_str(r)
context.log(self.log, f" Recognized '{value}'", self.name)
def get_return_value_body(self, sheerka, source, tree, try_parse):
if len(self.error_sink) == 1 and isinstance(self.error_sink[0], Concept):
return self.error_sink[0]
return sheerka.new(
BuiltinConcepts.PARSER_RESULT,
parser=self,
source=source,
body=self.error_sink if self.has_error else tree,
try_parsed=try_parse)
@staticmethod
def get_text_from_tokens(tokens, custom_switcher=None):
if tokens is None: