def default(self, line): lines = line.split('\\n') lexeme_lines = [lex_line(line) for line in lines] lexemes = [] for i, ln in enumerate(lexeme_lines): lexemes += ln if i < len(lexeme_lines) - 1: lexemes.append(NEWLINE) sppf = GRAMMAR.parse_rule(self.rule, lexemes) print(sppf)
def _lex_text(self, text: str) -> List[vl.Lexeme]: if self.multiline: return [vl.NEWLINE, vl.INDENT ] + vl.lex_lines(text)[:-1] + [vl.DEDENT] else: return vl.lex_line(text)
def _single_line(self, line): if not line: return lexemes = vl.lex_line(line) self.parse(lexemes)
def test_commas(line: str, correct_lexemes: List[vl.Lexeme]): assert vl.lex_line(line) == correct_lexemes
def default(self, line): lexemes = vl.lex_line(line) print(lexemes)
def test_pattern(line: str, tree: AST): lexemes = lex_line(line) run_test('pattern', tree, lexemes, [], [])
def test_infix_ops(line: str, correct_lexemes: List[vl.Lexeme]): assert vl.lex_line(line) == correct_lexemes
def test_atom(line: str, tree: AST): lexemes = lex_line(line) run_test('atom', tree, lexemes, [], [])
def test_class_def(line: str, tree: AST): lexemes = lex_line(line) run_test('class_def', tree, lexemes, [], [vl.NEWLINE])
def test_parameter(line: str, tree: AST): lexemes = lex_line(line) run_test('parameter', tree, lexemes, [], [])
def test_stmt_block(line: str, tree: AST): lexemes = lex_line(line) run_test('stmt_block', tree, lexemes, [], [vl.NEWLINE])
def test_op_expr(line: str, tree: AST): lexemes = lex_line(line) run_test('op_expr', tree, lexemes, [], [])