Exemple #1
0
    def connectionMade(self):
        """
        Start parsing, since the connection has been established.
        """

        self.sender = self._senderFactory(self.transport)
        self.receiver = self._receiverFactory(self.sender)
        self.receiver.prepareParsing(self)
        self._parser = TrampolinedParser(
            self._grammar, self.receiver, self._bindings)
Exemple #2
0
 def test_dataNotFullyReceived(self):
     """
     Since the initial rule inside the grammar is not matched, the receiver
     shouldn't receive any byte.
     """
     receiver = TrampolinedReceiver()
     trampolinedParser = TrampolinedParser(self.grammar, receiver, {})
     buf = b'foobarandnotreachdelimiter'
     for c in iterbytes(buf):
         trampolinedParser.receive(c)
     self.assertEqual(receiver.received, [])
 def test_currentRuleWithArgs(self):
     """
     TrampolinedParser should be able to invoke curruent rule with args.
     """
     receiver = TrampolinedReceiver()
     receiver.currentRule = "witharg", "nice ", "day"
     trampolinedParser = TrampolinedParser(self.grammar, receiver, {})
     buf = ' oh yes\r\n'
     for c in iterbytes(buf):
         trampolinedParser.receive(c)
     self.assertEqual(receiver.received, ["nice day oh yes"])
Exemple #4
0
 def test_bindings(self):
     """
     The passed-in bindings should be accessible inside the grammar.
     """
     receiver = TrampolinedReceiver()
     grammar = r"""
         initial = digit:d (-> int(d)+SMALL_INT):val -> receiver.receive(val)
     """
     bindings = {'SMALL_INT': 3}
     TrampolinedParser(self._parseGrammar(grammar), receiver,
                       bindings).receive('0')
     self.assertEqual(receiver.received, [3])
Exemple #5
0
 def test_dataFullyReceived(self):
     """
     The receiver should receive the data according to the grammar.
     """
     receiver = TrampolinedReceiver()
     trampolinedParser = TrampolinedParser(self.grammar, receiver, {})
     buf = b'\r\n'.join((b'foo', b'bar', b'foo', b'bar'))
     for c in iterbytes(buf):
         trampolinedParser.receive(c)
     self.assertEqual(receiver.received, [b'foo', b'bar', b'foo'])
     trampolinedParser.receive('\r\n')
     self.assertEqual(receiver.received, [b'foo', b'bar', b'foo', b'bar'])
Exemple #6
0
 def _getMessageSetParser(self, topicName):
     if topicName not in self._parsers:
         receiver = MessageSetReceiver()
         self._parsers[topicName] = TrampolinedParser(grammar=self._messageSetGrammar,
         receiver=receiver, bindings=globalBindings)
     return self._parsers[topicName]
Exemple #7
0
 def _initializeParserProtocol(self):
     self._trampolinedParser = TrampolinedParser(grammar=getGrammar(
         self._parsleyGrammarPKG, self._parsleyGrammarName),
                                                 receiver=self,
                                                 bindings=self._bindings)