示例#1
0
class Parser(object):
    '''
    Parser class.

    >>> p = Parser()
    >>> print type(p)
    <class 'parser.Parser'>

    # test exceptions
    >>> p.tokenize()
    Traceback (most recent call last):
        raise ParserError, 'cannot tokenize empty sentence'
    ParserError: cannot tokenize empty sentence
    >>> 

    >>> p.getParseList()
    Traceback (most recent call last):
        raise ParserError, 'cannot parse empty sentence'
    ParserError: cannot parse empty sentence
    >>> 


    >>> p.setSentence('I move quickly East')
    '''
    def __init__(self, sentence=''):

        grammar = Grammar()
        self.grammar = grammar.grammar
        self.parser = None
        if sentence:
            self.setSentence(sentence)
        else:
            self.sentence = sentence

    def tokenize(self):
        
        from copy import copy
        if not self.sentence:
            raise ParserError, 'cannot tokenize empty sentence'

        _sentence = tokenizer.Token(TEXT=self.sentence)
        tokenizer.WhitespaceTokenizer().tokenize(_sentence)
        self._sentence = _sentence

    def setParser(self):
        
        self.parser = Parser(self.grammar)

    def getParser(self):

        if not self.parser:
            self.setParser()

        return self.parser

    # XXX getParseList is broken right now...
    def getParseList(self):

        if not self.sentence:
            raise ParserError, 'cannot parse empty sentence'

        if not self.parser:
            self.setParser()

        return self.parser.get_parser_list(self._sentence)

    def setSentence(self, sentence=''):

        self.sentence = sentence
        self.tokenize()