예제 #1
0
 def parse(
     self,
     fs_location_info: FileSystemLocationInfo,
     token_parser: TokenParser,
 ) -> SymbolDependentValue:
     return parse_integer_matcher.parsers(
         False).full.parse_from_token_parser(token_parser)
예제 #2
0
 def __init__(self):
     self._integer_matcher_parser = parse_integer_matcher.parsers(
         False).simple
예제 #3
0
_NAME = ' '.join(
    (line_matcher.LINE_NUMBER_MATCHER_NAME,
     syntax_elements.INTEGER_MATCHER_SYNTAX_ELEMENT.singular_name))


def parse_line_number(parser: TokenParser) -> LineMatcherSdv:
    integer_matcher = _MATCHER_PARSER.parse_from_token_parser(parser)
    return property_matcher.PropertyMatcherSdv(
        integer_matcher,
        _operand_from_model_sdv(),
        property_matcher_describers.GetterWithMatcherAsChild(),
        _get_int_interval_of_int_matcher,
    )


_MATCHER_PARSER = parse_integer_matcher.parsers().simple


def _operand_from_model_sdv() -> PropertyGetterSdv[LineMatcherLine, int]:
    return property_getters.PropertyGetterSdvConstant(
        property_getters.PropertyGetterDdvConstant(_PropertyGetter(), ))


class _PropertyGetter(property_getters.PropertyGetter[LineMatcherLine, int],
                      WithCachedNodeDescriptionBase):
    def _structure(self) -> StructureRenderer:
        return renderers.header_only(_NAME)

    def get_from(self, model: LineMatcherLine) -> int:
        return model[0]
예제 #4
0
 def parsers_for_expr_on_any_line(self) -> GrammarParsers[MatcherSdv[int]]:
     return parse_integer_matcher.parsers()
예제 #5
0
from typing import Sequence

from exactly_lib.impls.types.integer_matcher import parse_integer_matcher
from exactly_lib.util.name_and_value import NameAndValue
from exactly_lib_test.impls.types.test_resources.parse_checker import Checker
from exactly_lib_test.impls.types.test_resources.parse_checker import parse_checker

PARSE_CHECKER__FULL = parse_checker(parse_integer_matcher.parsers().full)

PARSE_CHECKER__SIMPLE = parse_checker(parse_integer_matcher.parsers().simple)


def _parser_checkers__for_type_hints() -> Sequence[NameAndValue[Checker]]:
    return [
        NameAndValue(
            'simple',
            PARSE_CHECKER__SIMPLE,
        ),
        NameAndValue(
            'full',
            PARSE_CHECKER__FULL,
        ),
    ]


PARSE_CHECKERS = _parser_checkers__for_type_hints()
예제 #6
0
 def __init__(self):
     self._matcher_parser = parse_integer_matcher.parsers(False).full
     self._program_parser = parse_program.program_parser(
         must_be_on_current_line=False)
예제 #7
0
from exactly_lib.impls.types.integer_matcher import parse_integer_matcher
from exactly_lib.type_val_deps.dep_variants.sdv.full_deps.resolving_environment import FullResolvingEnvironment
from exactly_lib_test.impls.types.logic.test_resources import integration_check
from exactly_lib_test.impls.types.matcher.test_resources.matcher_checker import \
    MatcherPropertiesConfiguration

ModelConstructor = Callable[[FullResolvingEnvironment], int]


def constant(value: int) -> ModelConstructor:
    def ret_val(environment: FullResolvingEnvironment) -> int:
        return value

    return ret_val


ARBITRARY_MODEL = constant(0)

CHECKER__PARSE_FULL = integration_check.IntegrationChecker(
    parse_integer_matcher.parsers().full,
    MatcherPropertiesConfiguration(),
    False,
)

CHECKER__PARSE_SIMPLE = integration_check.IntegrationChecker(
    parse_integer_matcher.parsers().simple,
    MatcherPropertiesConfiguration(),
    False,
)