Refactored to use a single implementation for concept evaluation
This commit is contained in:
@@ -371,7 +371,7 @@ class DefaultParser(BaseParser):
|
||||
self.sheerka.new(BuiltinConcepts.USER_INPUT, body=tokens))
|
||||
steps = [BuiltinConcepts.PARSING]
|
||||
parsed = self.sheerka.execute(new_context, to_parse, steps, self.verbose_log)
|
||||
parsing_result = core.builtin_helpers.expect_one(new_context, parsed)
|
||||
parsing_result = core.builtin_helpers.expect_one(new_context, parsed, self.verbose_log)
|
||||
if not parsing_result.status:
|
||||
self.add_error(parsing_result.value)
|
||||
continue
|
||||
@@ -379,75 +379,3 @@ class DefaultParser(BaseParser):
|
||||
asts_found_by_parts[keyword] = parsing_result
|
||||
|
||||
return asts_found_by_parts
|
||||
|
||||
# def parse_expression(self):
|
||||
# return self.parse_addition()
|
||||
#
|
||||
# def parse_addition(self):
|
||||
# left = self.parse_multiply()
|
||||
# token = self.get_token()
|
||||
# if token is None or token.type == TokenKind.EOF:
|
||||
# return left
|
||||
#
|
||||
# if token.type == TokenKind.NUMBER: # example 15 +5 or 15 -5
|
||||
# right = self.parse_addition()
|
||||
# return BinaryNode(self.collect_tokens(left, token, right), TokenKind.PLUS, left, right)
|
||||
#
|
||||
# if token.type not in (TokenKind.PLUS, TokenKind.MINUS):
|
||||
# return left
|
||||
#
|
||||
# self.next_token()
|
||||
# right = self.parse_addition()
|
||||
# return BinaryNode(self.collect_tokens(left, token, right), token.type, left, right)
|
||||
#
|
||||
# def parse_multiply(self):
|
||||
# left = self.parse_atom()
|
||||
# token = self.get_token()
|
||||
# if token is None or token.type == TokenKind.EOF:
|
||||
# return left
|
||||
#
|
||||
# if token.type not in (TokenKind.STAR, TokenKind.SLASH):
|
||||
# return left
|
||||
#
|
||||
# self.next_token()
|
||||
# right = self.parse_multiply()
|
||||
# return BinaryNode(self.collect_tokens(left, token, right), token.type, left, right)
|
||||
#
|
||||
# def parse_atom(self):
|
||||
# token = self.get_token()
|
||||
# if token.type == TokenKind.NUMBER:
|
||||
# self.next_token()
|
||||
# return NumberNode([token], float(token.value) if '.' in token.value else int(token.value))
|
||||
# elif token.type == TokenKind.STRING:
|
||||
# self.next_token()
|
||||
# return StringNode([token], token.value[1:-1], token.value[0])
|
||||
# elif token.type == TokenKind.IDENTIFIER:
|
||||
# if token.value == "true":
|
||||
# self.next_token()
|
||||
# return TrueNode([token])
|
||||
# elif token.value == "false":
|
||||
# self.next_token()
|
||||
# return FalseNode([token])
|
||||
# elif token.value == "null":
|
||||
# self.next_token()
|
||||
# return NullNode([token])
|
||||
# else:
|
||||
# self.next_token()
|
||||
# return VariableNode([token], token.value)
|
||||
# elif token.type == TokenKind.LPAR:
|
||||
# self.next_token()
|
||||
# exp = self.parse_expression()
|
||||
# token = self.get_token()
|
||||
# self.next_token()
|
||||
#
|
||||
# if token.type != TokenKind.RPAR:
|
||||
# error = UnexpectedTokenErrorNode([token], "Right parenthesis not found.", [TokenKind.RPAR])
|
||||
# self.add_error(error)
|
||||
# return error
|
||||
#
|
||||
# return exp
|
||||
# else:
|
||||
# error = UnexpectedTokenErrorNode([token], "Unexpected token",
|
||||
# [TokenKind.NUMBER, TokenKind.STRING, TokenKind.IDENTIFIER, "true", "false",
|
||||
# "null", TokenKind.LPAR])
|
||||
# return self.add_error(error)
|
||||
|
||||
Reference in New Issue
Block a user