Exemplo n.º 1
0
 def assertSomeTokens(self, input_string, expected_tokens):
     '''
     test the parser with complex stuff which might contain tokens we don't care about.
     
     '''
     
     tokens = update_and_get_names(input_string)
     
     iter_tokens = iter(tokens)
     matched_tokens = []
     missing_tokens = list(reversed(expected_tokens)) # gonna pop through them
     
     try:
         while not matched_tokens == expected_tokens:
             token = iter_tokens.next()
             if token == missing_tokens[-1]:
                 matched_tokens.append(missing_tokens.pop())
     except IndexError as e:
         err = e
     except StopIteration as e:
         err = e
     except ValueError as e:
         err = e
     else:
         return
     
     self.fail('Error: %s.\nTokens found:   %s\nTokens missing: %s\n' % (repr(err), repr(matched_tokens), repr(missing_tokens)))
Exemplo n.º 2
0
 def test_comments(self):
     raise unittest.SkipTest
     self.assertEqual(update('/*/jugfytgiuh/*/'), [
         ('multiline_comment', '/*/jugfytgiuh/*/')])
     
     self.assertEqual(update('/* */'), [
         ('multiline_comment', '/* */')])
     
     self.assertEqual(update('/**/'), [
         ('multiline_comment', '/**/')])
     
     self.assertEqual(update('/*   /*   /* * */'), [
         ('multiline_comment', '/*   /*   /* * */')])
     
     self.assertEqual(update('/*/*/*/*/*/*/**/asd'), [
         ('multiline_comment', '/*/*/'),
         ('times_sign', '*'),
         ('multiline_comment', '/*/*/'),
         ('times_sign', '*'),
         ('multiline_comment', '/**/'),
         ('identifier', 'asd')])
     
     s = '''
         // And my aunt slew a dragon!
         she is // paper
     '''
 
     self.assertEqual(update_and_get_names(s), [
         'singleline_comment',
         'identifier',
         'identifier',
         'singleline_comment'])
Exemplo n.º 3
0
 def test_everything(self):
     self.assertEqual(update('int a=3'), [
         ('identifier', 'int'),
         ('identifier', 'a'),
         ('equal_sign', '='),
         ('decimal_number_literal', '3')])
     
     # self.assertEqual(update('int a=031'), [
     #     ('identifier', 'int'),
     #     ('identifier', 'a'),
     #     ('equal_sign', '='),
     #     ('octal_number_literal', '031')])
     
     self.assertEqual(update_and_get_names(
             '{}()?;:,!*+/'), [
         'open_brace', 'close_brace',
         'open_paren', 'close_paren',
         'question_mark',
         'semicolon',
         'colon',
         'comma',
         'bang',
         'times_sign',
         'plus_sign',
         'reverse_solidus'])