Spaces:
Runtime error
Runtime error
| from ast_parser.token import TokenKind | |
| def is_digit(code: int) -> bool: | |
| """Check if code is a digit. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is a digit, False otherwise. | |
| """ | |
| return 0x0030 <= code <= 0x0039 # <digit> | |
| def is_coefficient_start(code: int) -> bool: | |
| """Check if code is a coefficient start. | |
| The Coefficient can start with a digit or a dot. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is a Coefficient start, False otherwise. | |
| """ | |
| return is_digit(code) or code == 0x002E # <digit> | `.` | |
| def is_lower_alpha(code: int) -> bool: | |
| """Check if code is a lowercased alpha. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is a lowercased alpha, False otherwise. | |
| """ | |
| return 0x0061 <= code <= 0x007A # <lower_alpha> | |
| def is_upper_alpha(code: int) -> bool: | |
| """Check if code is an uppercased alpha. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is an uppercased alpha, False otherwise. | |
| """ | |
| return 0x0041 <= code <= 0x005A # <upper_alpha> | |
| def is_alpha(code: int) -> bool: | |
| """Check if code is an alpha. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is an alpha, False otherwise. | |
| """ | |
| return is_lower_alpha(code) or is_upper_alpha(code) # <alpha> | |
| def is_variable_start(code: int) -> bool: | |
| """Check if code is a variable start. | |
| The Variable can start with an alpha or an underscore. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is a Variable start, False otherwise. | |
| """ | |
| return is_alpha(code) or code == 0x005F # <alpha> | `_` | |
| def is_variable_continue(code: int) -> bool: | |
| """Check if code is a variable continue. | |
| The Variable can continue with an alpha, an underscore or a digit. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is a Variable continue, False otherwise. | |
| """ | |
| return is_variable_start(code) or is_digit(code) # <alpha> | `_` | <digit> | |
| def is_ascii(code: int) -> bool: | |
| """Check if code is an ASCII. | |
| Args: | |
| code (int): Unicode code point. | |
| Returns: | |
| bool: True if code is an ASCII, False otherwise. | |
| """ | |
| return 0x0020 <= code <= 0x007E # <ASCII> | |
| def print_char_code(code: int | None) -> str: | |
| """Describe code as a character or Unicode code point. | |
| Args: | |
| code (int | None): Unicode code point. None for EOF. | |
| Returns: | |
| str: Character or Unicode code point. | |
| """ | |
| if code is None: # <EOF> | |
| return TokenKind.EOF.value | |
| return chr(code) if is_ascii(code) else f"U+{code:04X}" | |
| __all__ = ( | |
| "is_digit", | |
| "is_coefficient_start", | |
| "is_lower_alpha", | |
| "is_upper_alpha", | |
| "is_alpha", | |
| "is_variable_start", | |
| "is_variable_continue", | |
| "is_ascii", | |
| "print_char_code", | |
| ) | |