コード例 #1
0
def get_grammar():
    # Expression grammar with float numbers
    return Grammar.from_struct(
        {
            'E': [
                ['E', 'PLUS', 'T'],
                ['T'],
            ],
            'T': [
                ['T', 'MULT', 'F'],
                ['F'],
            ],
            'F': [
                ['OPEN', 'E', 'CLOSE'],
                ['number'],
            ],
        },
        {
            'PLUS': ('string', '+'),
            'MULT': ('string', '*'),
            'OPEN': ('string', '('),
            'CLOSE': ('string', ')'),
            'number': ('regexp', r'\d+(\.\d+)?'),
        },
        'E',
    )[0]
コード例 #2
0
def get_grammar():

    # Expression grammar with float numbers
    E, T, F = [NonTerminal(name) for name in ['E', 'T', 'F']]
    PLUS, MULT, OPEN, CLOSE = [
        Terminal(value) for value in ['+', '*', '(', ')']
    ]
    NUMBER = Terminal('number', RegExRecognizer(r'\d+(\.\d+)?'))
    productions = [(E, (E, PLUS, T)), (E, (T, )), (T, (T, MULT, F)),
                   (T, (F, )), (F, (OPEN, E, CLOSE)), (F, (NUMBER, ))]

    return Grammar.from_struct(productions, E)
コード例 #3
0
def get_grammar():
    return Grammar.from_struct(productions, E)
コード例 #4
0
def get_grammar():
    return Grammar.from_struct(productions=productions, start_symbol=E)