Added is_lesser and is_greatest in SheerkaComparison
This commit is contained in:
@@ -6,6 +6,7 @@ from typing import List
|
||||
from core import builtin_helpers
|
||||
from core.builtin_concepts import BuiltinConcepts
|
||||
from core.concept import Concept, DEFINITION_TYPE_BNF
|
||||
from core.sheerka.services.SheerkaComparisonManager import SheerkaComparisonManager
|
||||
from core.sheerka.services.SheerkaExecute import ParserInput
|
||||
from core.tokenizer import Token, TokenKind, Tokenizer
|
||||
from parsers.BaseNodeParser import UnrecognizedTokensNode, ConceptNode, SourceCodeNode, SyaAssociativity, \
|
||||
@@ -77,7 +78,7 @@ class SyaConceptDef:
|
||||
It gives the precedence and the associativity for the concept
|
||||
"""
|
||||
concept: Concept
|
||||
precedence: int = 0
|
||||
precedence: int = SheerkaComparisonManager.DEFAULT_COMPARISON_VALUE
|
||||
associativity: SyaAssociativity = SyaAssociativity.Right
|
||||
|
||||
|
||||
@@ -541,11 +542,6 @@ class InFixToPostFix:
|
||||
if stack.associativity == SyaAssociativity.No and current.associativity == SyaAssociativity.No:
|
||||
self._add_error(NoneAssociativeSequenceErrorNode(current.concept, stack_head.start, concept_node.start))
|
||||
|
||||
if not current.precedence:
|
||||
# precedence is not set (None or zero)
|
||||
# Do not apply any rule
|
||||
return False
|
||||
|
||||
if current.associativity == SyaAssociativity.Left and current.precedence <= stack.precedence:
|
||||
return True
|
||||
|
||||
@@ -947,6 +943,7 @@ class SyaNodeParser(BaseNodeParser):
|
||||
def _get_sya_concept_def(parser, concept):
|
||||
sya_concept_def = SyaConceptDef(concept)
|
||||
if concept.id in parser.sya_definitions:
|
||||
# Manage when precedence and associativity are given in the unit tests
|
||||
sya_def = parser.sya_definitions.get(concept.id)
|
||||
if sya_def[0] is not None:
|
||||
sya_concept_def.precedence = sya_def[0]
|
||||
|
||||
Reference in New Issue
Block a user