Ejemplo n.º 1
0

class ParserError(Exception):
    '''Parse-related errors'''

    def __init__(self, ctx):
        super(ParserError, self).__init__('Parsing input failed')

        self.context = ctx

    def __str__(self):
        orig = super(ParserError, self).__str__()
        return '%s\n%s' % (orig, self.context.summary)

# Lexer
lexer_factory = LexerFactory()
lexer_factory.add_ignore_token('SPACES', '\\s+');
lexer_factory.add_ignore_token('COMMENTS', '\\#.*?\\n');
lexer_factory.add_literal('TOKEN', 'token')
lexer_factory.add_literal('KEYWORD', 'keyword')
lexer_factory.add_literal('LITERAL', 'literal')
lexer_factory.add_literal('IGNORE', 'ignore')
lexer_factory.add_literal('NODE', 'node')
lexer_factory.add_literal('LIST', 'list')
lexer_factory.add_literal('SELECTION', 'selection')
lexer_factory.add_literal('OPTIONAL', 'optional')
lexer_factory.add_literal('REQUIRED', 'required')
lexer_factory.add_literal('RULE', 'rule')
lexer_factory.add_literal('START', 'start')
lexer_factory.add_literal('PRECEDENCE', 'precedence')
lexer_factory.add_literal('LEFT', 'left')
Ejemplo n.º 2
0

class ParserError(Exception):
    '''Parse-related errors'''

    def __init__(self, ctx):
        super(ParserError, self).__init__('Parsing input failed')

        self.context = ctx

    def __str__(self):
        orig = super(ParserError, self).__str__()
        return '%s\n%s' % (orig, self.context.summary)

# Lexer
lexer_factory = LexerFactory()
lexer_factory.add_ignore_token('SPACES', '\s+');
lexer_factory.add_token('NAME', '[a-zA-Z_][a-zA-Z0-9]*')
lexer_factory.add_token('NUMBER', '(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?')
lexer_factory.add_literal('EQ', '=')
lexer_factory.add_literal('ADD', '+')
lexer_factory.add_literal('SUB', '-')
lexer_factory.add_literal('MUL', '*')
lexer_factory.add_literal('DIV', '/')
lexer_factory.add_literal('POW', '^')
lexer_factory.add_literal('COMMA', ',')
lexer_factory.add_literal('LPAREN', '(')
lexer_factory.add_literal('RPAREN', ')')
lexer_factory.add_keyword('for');
lexer_factory.add_keyword('do');
lexer_factory.add_keyword('to');