Beispiel #1
0
 def target(self):
     self.show_rule('target', [['NAME']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (name := self.expect(NAME)) is not None):
         self.show_index(0, 0, 1)
         return Node('target', [name])
Beispiel #2
0
 def atom(self):
     self.show_rule('atom', [['NAME'], ['NUMBER'], ["'('", 'expr', "')'"]])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (name := self.expect(NAME)) is not None):
         self.show_index(0, 0, 1)
         return Node('atom', [name])
Beispiel #3
0
 def statement(self):
     self.show_rule('statement',
                    [['if_statement'], ['assignment'], ['expr']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (if_statement := self.if_statement()) is not None):
         self.show_index(0, 0, 1)
         return Node('statement', [if_statement])
Beispiel #4
0
 def start(self):
     self.show_rule('start', [['expr_stmt*', 'ENDMARKER']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (expr_stmt := self.loop(False, self.expr_stmt)) is not None
             and self.show_index(0, 1)
             and (endmarker := self.expect(ENDMARKER)) is not None):
         self.show_index(0, 0, 2)
         return Node('start', [expr_stmt, endmarker])
Beispiel #5
0
 def start(self):
     self.show_rule('start', [['statements', 'ENDMARKER']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (statements := self.statements()) is not None
             and self.show_index(0, 1)
             and (endmarker := self.expect(ENDMARKER)) is not None):
         self.show_index(0, 0, 2)
         return Node('start', [statements, endmarker])
Beispiel #6
0
 def if_statement(self):
     self.show_rule('if_statement', [["'if'", 'expr', "':'", 'statement']])
     pos = self.mark()
     if (True and self.show_index(0, 0) and self.expect('if') is not None
             and self.show_index(0, 1) and (expr := self.expr()) is not None
             and self.show_index(0, 2) and self.expect(':') is not None
             and self.show_index(0, 3)
             and (statement := self.statement()) is not None):
         self.show_index(0, 0, 4)
         return Node('if_statement', [expr, statement])
Beispiel #7
0
 def assignment(self):
     self.show_rule('assignment', [['target', "'='", 'expr']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (target := self.target()) is not None
             and self.show_index(0, 1) and self.expect('=') is not None
             and self.show_index(0, 2)
             and (expr := self.expr()) is not None):
         self.show_index(0, 0, 3)
         return Node('assignment', [target, expr])
Beispiel #8
0
 def expr(self):
     self.show_rule(
         '*' + 'expr',
         [['expr', "'+'", 'term'], ['expr', "'-'", 'term'], ['term']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (expr := self.expr()) is not None
             and self.show_index(0, 1) and self.expect('+') is not None
             and self.show_index(0, 2)
             and (term := self.term()) is not None):
         self.show_index(0, 0, 3)
         return Node('expr', [expr, term])
Beispiel #9
0
 def term(self):
     self.show_rule(
         '*' + 'term',
         [['term', "'*'", 'atom'], ['term', "'/'", 'atom'], ['atom']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (term := self.term()) is not None
             and self.show_index(0, 1) and self.expect('*') is not None
             and self.show_index(0, 2)
             and (atom := self.atom()) is not None):
         self.show_index(0, 0, 3)
         return Node('term', [term, atom])
Beispiel #10
0
 def statements(self):
     self.show_rule(
         'statements',
         [['statement', 'NEWLINE', 'statements'], ['statement', 'NEWLINE']])
     pos = self.mark()
     if (True and self.show_index(0, 0)
             and (statement := self.statement()) is not None
             and self.show_index(0, 1)
             and (newline := self.expect(NEWLINE)) is not None
             and self.show_index(0, 2)
             and (statements := self.statements()) is not None):
         self.show_index(0, 0, 3)
         return Node('statements', [statement, newline, statements])
Beispiel #11
0
        pos = self.mark()
        if (True and self.show_index(0, 0)
                and (statement := self.statement()) is not None
                and self.show_index(0, 1)
                and (newline := self.expect(NEWLINE)) is not None
                and self.show_index(0, 2)
                and (statements := self.statements()) is not None):
            self.show_index(0, 0, 3)
            return Node('statements', [statement, newline, statements])
        self.reset(pos)
        if (True and self.show_index(1, 0)
                and (statement := self.statement()) is not None
                and self.show_index(1, 1)
                and (newline := self.expect(NEWLINE)) is not None):
            self.show_index(1, 0, 2)
            return Node('statements', [statement, newline])
        self.reset(pos)
        self.show_index(0, 0, 0)
        return None

    @memoize
    def statement(self):
        self.show_rule('statement',
                       [['if_statement'], ['assignment'], ['expr']])
        pos = self.mark()
        if (True and self.show_index(0, 0)
                and (if_statement := self.if_statement()) is not None):
            self.show_index(0, 0, 1)
            return Node('statement', [if_statement])
        self.reset(pos)
        if (True and self.show_index(1, 0)