コード例 #1
0
 def test_literal(self):
     self.assertEqual(build('1'), node.ProgramNode(subs=[
         node.ValueNode(Token('1', TokenType.INTEGER))
     ]))
     self.assertEqual(build('3.1415'), node.ProgramNode(subs=[
         node.ValueNode(Token('3.1415', TokenType.REAL))
     ]))
コード例 #2
0
 def test_real(self):
     self.assertEqual(parse('1.1'), [Token('1.1', TokenType.REAL)])
     self.assertEqual(parse('03.1415'), [Token('03.1415', TokenType.REAL)])
     self.assertEqual(parse('1.1 2.2 3.3'), [
         Token('1.1', TokenType.REAL),
         Token('2.2', TokenType.REAL),
         Token('3.3', TokenType.REAL),
     ])
コード例 #3
0
 def test_integer(self):
     self.assertEqual(parse('1'), [Token('1', TokenType.INTEGER)])
     self.assertEqual(parse('234'), [Token('234', TokenType.INTEGER)])
     self.assertEqual(parse('1 23 456'), [
         Token('1', TokenType.INTEGER),
         Token('23', TokenType.INTEGER),
         Token('456', TokenType.INTEGER),
     ])
コード例 #4
0
 def test_operator(self):
     self.assertEqual(parse('+'), [Token('+', TokenType.OPERATOR)])
     self.assertEqual(parse('-'), [Token('-', TokenType.OPERATOR)])
     self.assertEqual(parse('+ - + -'), [
         Token('+', TokenType.OPERATOR),
         Token('-', TokenType.OPERATOR),
         Token('+', TokenType.OPERATOR),
         Token('-', TokenType.OPERATOR),
     ])
コード例 #5
0
def process(path, slug):
    token = Token(request, path, slug, g.user)

    to_skip = None
    for name in PROCESSORS:
        if to_skip != None:
            if name == to_skip:
                to_skip = None
            else:
                continue
        P = Processor.get_processor(name)
        processor = P(token)
        processor.process()
        if processor.stop():
            to_skip = processor.skip()

    return token.response, token.content_type, token.headers
コード例 #6
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_no_spaces(self):
     s = list(self.t.tokenize_gen_alpha_digit('мамамылараму'))
     self.assertEqual(s, [Token('мамамылараму', 'alpha', 0, 12)])
コード例 #7
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_first_nonalpha(self):
     s = list(self.t.tokenize_gen('!!!!я иду в кино cinema'))
     self.assertEqual(len(s), 10)
     self.assertEqual(s[0], Token('!!!!', 'punct', 0, 4))
コード例 #8
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_middle_nonapha(self):
     s = list(self.t.tokenize_gen('я иду в кино00000 111 00000cinema'))
     self.assertEqual(len(s), 13)
     self.assertEqual(s[7], Token('00000', 'digit', 12, 17))
     self.assertEqual(s[9], Token('111', 'digit', 18, 21))
コード例 #9
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_no_spaces(self):
     s = list(self.t.tokenize_gen('яидувкиноcinema'))
     self.assertEqual(s, [Token('яидувкиноcinema', 'alpha', 0, 15)])
     self.assertEqual(len(s), 1)
コード例 #10
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_digital_string(self):
     s = list(self.t.tokenize_gen('012345'))
     self.assertEqual(len(s), 1)
     self.assertEqual(s, [Token('012345', 'digit', 0, 6)])
コード例 #11
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_last_nonalpha(self):
     s = list(self.t.tokenize_gen('мамамылараму2'))
     self.assertEqual(len(s), 12)
     self.assertEqual(s[11], Token('мамамылараму', 'alpha', 0, 13))
コード例 #12
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_first_alpha(self):
     s = list(self.t.tokenize_gen('я иду в кино'))
     self.assertEqual(s[0], Token("я", "alpha", 0, 1))
     self.assertEqual(len(s), 7)
コード例 #13
0
ファイル: test_tok.py プロジェクト: anastasiaberyoza/python3
 def test_first_alpha(self):
     s = list(self.t.tokenize_gen_alpha_digit('мама мыла'))
     self.assertEqual(s[0], Token("мама", "alpha", 0, 4))
     self.assertEqual(len(s), 4)
コード例 #14
0
 def test_factor(self):
     self.assertEqual(build('-1'), node.ProgramNode(subs=[
         node.TermNode(Token('-', TokenType.OPERATOR), [
             node.ValueNode(Token('1', TokenType.INTEGER))
         ])
     ]))
コード例 #15
0
 def test_numeric_expression(self):
     self.assertEqual(build('1+2'), node.ProgramNode(subs=[
         node.OpNode(Token('+', TokenType.OPERATOR), [
             node.ValueNode(Token('1', TokenType.INTEGER)),
             node.ValueNode(Token('2', TokenType.INTEGER))
         ])
     ]))
     self.assertEqual(build('-1+2'), node.ProgramNode(subs=[
         node.OpNode(Token('+', TokenType.OPERATOR), [
             node.TermNode(Token('-', TokenType.OPERATOR), [
                 node.ValueNode(Token('1', TokenType.INTEGER))
             ]),
             node.ValueNode(Token('2', TokenType.INTEGER))
         ])
     ]))
     self.assertEqual(build('+-3.14 + 1'), node.ProgramNode(subs=[
         node.OpNode(Token('+', TokenType.OPERATOR), [
             node.TermNode(Token('+', TokenType.OPERATOR), [
                 node.TermNode(Token('-', TokenType.OPERATOR), [
                     node.ValueNode(Token('3.14', TokenType.REAL))
                 ])
             ]),
             node.ValueNode(Token('1', TokenType.INTEGER))
         ])
     ]))
     self.assertEqual(build('1+++--2.2---+1'), node.ProgramNode(subs=[
         node.OpNode(Token('+', TokenType.OPERATOR), [
             node.ValueNode(Token('1', TokenType.INTEGER)),
             node.OpNode(Token('-', TokenType.OPERATOR), [
                 node.TermNode(Token('+', TokenType.OPERATOR), [
                     node.TermNode(Token('+', TokenType.OPERATOR), [
                         node.TermNode(Token('-', TokenType.OPERATOR), [
                             node.TermNode(Token('-', TokenType.OPERATOR), [
                                 node.ValueNode(Token('2.2', TokenType.REAL))
                             ])
                         ])
                     ])
                 ]),
                 node.TermNode(Token('-', TokenType.OPERATOR), [
                     node.TermNode(Token('-', TokenType.OPERATOR), [
                         node.TermNode(Token('+', TokenType.OPERATOR), [
                             node.ValueNode(Token('1', TokenType.INTEGER))
                         ])
                     ])
                 ])
             ])
         ])
     ]))
     self.assertEqual(build('-1*-2'), node.ProgramNode(subs=[
         node.OpNode(Token('*', TokenType.OPERATOR), [
             node.TermNode(Token('-', TokenType.OPERATOR), [
                 node.ValueNode(Token('1', TokenType.INTEGER))
             ]),
             node.TermNode(Token('-', TokenType.OPERATOR), [
                 node.ValueNode(Token('2', TokenType.INTEGER))
             ]),
         ])
     ]))
     self.assertEqual(build('4+2/2+1'), node.ProgramNode(subs=[
         node.OpNode(Token('+', TokenType.OPERATOR), [
             node.ValueNode(Token('4', TokenType.INTEGER)),
             node.OpNode(Token('+', TokenType.OPERATOR), [
                 node.OpNode(Token('/', TokenType.OPERATOR), [
                     node.ValueNode(Token('2', TokenType.INTEGER)),
                     node.ValueNode(Token('2', TokenType.INTEGER))
                 ]),
                 node.ValueNode(Token('1', TokenType.INTEGER))
             ])
         ])
     ]))
     self.assertEqual(build('2*((1+3)/2+1)'), node.ProgramNode(subs=[
         node.OpNode(Token('*', TokenType.OPERATOR), [
             node.ValueNode(Token('2', TokenType.INTEGER)),
             node.OpNode(Token('+', TokenType.OPERATOR), [
                 node.OpNode(Token('/', TokenType.OPERATOR), [
                     node.OpNode(Token('+', TokenType.OPERATOR), [
                         node.ValueNode(Token('1', TokenType.INTEGER)),
                         node.ValueNode(Token('3', TokenType.INTEGER))
                     ]),
                     node.ValueNode(Token('2', TokenType.INTEGER))
                 ]),
                 node.ValueNode(Token('1', TokenType.INTEGER))
             ])
         ])
     ]))
     self.assertEqual(build('2*10**2*2'), node.ProgramNode(subs=[
         node.OpNode(Token('*', TokenType.OPERATOR), [
             node.ValueNode(Token('2', TokenType.INTEGER)),
             node.OpNode(Token('*', TokenType.OPERATOR), [
                 node.OpNode(Token('**', TokenType.OPERATOR), [
                     node.ValueNode(Token('10', TokenType.INTEGER)),
                     node.ValueNode(Token('2', TokenType.INTEGER))
                 ]),
                 node.ValueNode(Token('2', TokenType.INTEGER))
             ])
         ])
     ]))
コード例 #16
0
 def test_paren(self):
     self.assertEqual(parse('2*((1+3)/2+1)'), [
         Token('2', TokenType.INTEGER),
         Token('*', TokenType.OPERATOR),
         Token('(', TokenType.PAREN),
         Token('(', TokenType.PAREN),
         Token('1', TokenType.INTEGER),
         Token('+', TokenType.OPERATOR),
         Token('3', TokenType.INTEGER),
         Token(')', TokenType.PAREN),
         Token('/', TokenType.OPERATOR),
         Token('2', TokenType.INTEGER),
         Token('+', TokenType.OPERATOR),
         Token('1', TokenType.INTEGER),
         Token(')', TokenType.PAREN),
     ])
コード例 #17
0
 def test_numeric_expression(self):
     self.assertEqual(parse('1+1'), [
         Token('1', TokenType.INTEGER),
         Token('+', TokenType.OPERATOR),
         Token('1', TokenType.INTEGER),
     ])
     self.assertEqual(parse('+-3.14 + 1'), [
         Token('+', TokenType.OPERATOR),
         Token('-', TokenType.OPERATOR),
         Token('3.14', TokenType.REAL),
         Token('+', TokenType.OPERATOR),
         Token('1', TokenType.INTEGER),
     ])
     self.assertEqual(parse('1+++--2.2---+1'), [
         Token('1', TokenType.INTEGER),
         Token('+', TokenType.OPERATOR),
         Token('+', TokenType.OPERATOR),
         Token('+', TokenType.OPERATOR),
         Token('-', TokenType.OPERATOR),
         Token('-', TokenType.OPERATOR),
         Token('2.2', TokenType.REAL),
         Token('-', TokenType.OPERATOR),
         Token('-', TokenType.OPERATOR),
         Token('-', TokenType.OPERATOR),
         Token('+', TokenType.OPERATOR),
         Token('1', TokenType.INTEGER),
     ])
     self.assertEqual(parse('10**2'), [
         Token('10', TokenType.INTEGER),
         Token('**', TokenType.OPERATOR),
         Token('2', TokenType.INTEGER)
     ])
     self.assertEqual(parse('2*10**2*2'), [
         Token('2', TokenType.INTEGER),
         Token('*', TokenType.OPERATOR),
         Token('10', TokenType.INTEGER),
         Token('**', TokenType.OPERATOR),
         Token('2', TokenType.INTEGER),
         Token('*', TokenType.OPERATOR),
         Token('2', TokenType.INTEGER)
     ])