aboutsummaryrefslogtreecommitdiff
path: root/yapymake/makefile/parse_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'yapymake/makefile/parse_util.py')
-rw-r--r--yapymake/makefile/parse_util.py64
1 files changed, 33 insertions, 31 deletions
diff --git a/yapymake/makefile/parse_util.py b/yapymake/makefile/parse_util.py
index ad1e363..ded7476 100644
--- a/yapymake/makefile/parse_util.py
+++ b/yapymake/makefile/parse_util.py
@@ -43,6 +43,7 @@ def tag(tag_text: str) -> Parser[None]:
def parse(text: str) -> ParseResult[None]:
if text.startswith(tag_text):
return None, text[len(tag_text):]
+ return None
return parse
def take_while1(predicate: Callable[[str], bool]) -> Parser[str]:
@@ -61,13 +62,14 @@ def take_till1(predicate: Callable[[str], bool]) -> Parser[str]:
def any_char(text: str) -> ParseResult[str]:
if len(text) > 0:
return text[0], text[1:]
+ return None
def all_consuming(parser: Parser[T]) -> Parser[T]:
def parse(text: str) -> ParseResult[T]:
- result = parser(text)
- if result is None:
+ parsed_result = parser(text)
+ if parsed_result is None:
return None
- result, extra = result
+ result, extra = parsed_result
if len(extra) > 0:
return None
return result, ''
@@ -75,10 +77,10 @@ def all_consuming(parser: Parser[T]) -> Parser[T]:
def map_parser(parser: Parser[T1], mapper: Callable[[T1], T2]) -> Parser[T2]:
def parse(text: str) -> ParseResult[T2]:
- result = parser(text)
- if result is None:
+ parsed_result = parser(text)
+ if parsed_result is None:
return None
- result, extra = result
+ result, extra = parsed_result
return mapper(result), extra
return parse
@@ -92,10 +94,10 @@ def opt(parser: Parser[T]) -> Parser[Optional[T]]:
def verify(parser: Parser[T], predicate: Callable[[T], bool]) -> Parser[T]:
def parse(text: str) -> ParseResult[T]:
- result = parser(text)
- if result is None:
+ parsed_result = parser(text)
+ if parsed_result is None:
return None
- result, extra = result
+ result, extra = parsed_result
if predicate(result):
return result, extra
return None
@@ -106,13 +108,13 @@ def many1(parser: Parser[T]) -> Parser[List[T]]:
parser_result = parser(text)
if parser_result is None:
return None
- parser_result, extra = parser_result
- result = [parser_result]
+ this_result, extra = parser_result
+ result = [this_result]
parser_result = parser(extra)
while parser_result is not None:
- parser_result, extra = parser_result
- result.append(parser_result)
+ this_result, extra = parser_result
+ result.append(this_result)
parser_result = parser(extra)
return result, extra
return parse
@@ -124,10 +126,10 @@ def delimited(before_parser: Parser[T1], parser: Parser[T], after_parser: Parser
return None
_, extra = before_result
- result = parser(extra)
- if result is None:
+ parsed_result = parser(extra)
+ if parsed_result is None:
return None
- result, extra = result
+ result, extra = parsed_result
after_result = after_parser(extra)
if after_result is None:
@@ -139,15 +141,15 @@ def delimited(before_parser: Parser[T1], parser: Parser[T], after_parser: Parser
def pair(first_parser: Parser[T1], second_parser: Parser[T2]) -> Parser[Tuple[T1, T2]]:
def parse(text: str) -> ParseResult[Tuple[T1, T2]]:
- first_result = first_parser(text)
- if first_result is None:
+ first_parsed_result = first_parser(text)
+ if first_parsed_result is None:
return None
- first_result, extra = first_result
+ first_result, extra = first_parsed_result
- second_result = second_parser(extra)
- if second_result is None:
+ second_parsed_result = second_parser(extra)
+ if second_parsed_result is None:
return None
- second_result, extra = second_result
+ second_result, extra = second_parsed_result
return (first_result, second_result), extra
return parse
@@ -159,30 +161,30 @@ def preceded(before_parser: Parser[T1], parser: Parser[T]) -> Parser[T]:
return None
_, extra = before_result
- result = parser(extra)
- if result is None:
+ parsed_result = parser(extra)
+ if parsed_result is None:
return None
- result, extra = result
+ result, extra = parsed_result
return result, extra
return parse
def separated_pair(first_parser: Parser[T1], between_parser: Parser[T], second_parser: Parser[T2]) -> Parser[Tuple[T1, T2]]:
def parse(text: str) -> ParseResult[Tuple[T1, T2]]:
- first_result = first_parser(text)
- if first_result is None:
+ first_parsed_result = first_parser(text)
+ if first_parsed_result is None:
return None
- first_result, extra = first_result
+ first_result, extra = first_parsed_result
between_result = between_parser(extra)
if between_result is None:
return None
_, extra = between_result
- second_result = second_parser(extra)
- if second_result is None:
+ second_parsed_result = second_parser(extra)
+ if second_parsed_result is None:
return None
- second_result, extra = second_result
+ second_result, extra = second_parsed_result
return (first_result, second_result), extra
return parse