コード例 #1
0
ファイル: yacc.py プロジェクト: dfridman1/lex-yacc
    def _get_yacc_variables(self, module):
        frame, variables = get_global_vars(module)
        filter_rules = [lambda x: x == "tokens",
                        lambda x: x.startswith("p_")]
        variables = sorted(filter_variables(filter_rules, variables),
                           key=partial(by_appearance, frame))
        tokens, production_rules = categorize(filter_rules, variables)

        if len(tokens) == 0:
            raise SyntaxError("'tokens' (a tuple of strings) must be defined")

        return tokens[-1][-1], production_rules  # tokens = [('tokens', (...))]
コード例 #2
0
ファイル: lex.py プロジェクト: dfridman1/lex-yacc
    def get_lexer_variables(self, module=None):
        frame, variables = get_global_vars(module)
        filter_rules = [lambda x: x == "tokens",
                        lambda x: x == "states",
                        lambda x: x.startswith("t_")]
        variables = sorted(filter_variables(filter_rules, variables),
                           key=partial(by_appearance, frame))
        token_names, states, t_rules = categorize(filter_rules, variables)

        if len(token_names) == 0:
            raise SyntaxError("'tokens' (a tuple of strings) must be defined")

        token_names = token_names[0] if token_names else []
        states = states[0] if states else []
        return token_names, states, t_rules