コード例 #1
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_identifier(self):
     from ding.reader import Reader
     from ding.term   import IdTerm
     tests = ['id', 'x', 'x1', 'a_variable', '_var']
     for t in tests:
         r = Reader.from_string(t)
         self.assertEqual(IdTerm(t), r.identifier())
         r.nothing()
コード例 #2
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_id_tokens(self):
     from ding.reader import Reader
     from ding.term   import IdTerm
     r = Reader.from_string(' a// abe \nb\n\n c /* gh\n * jklm\n */ d ')
     v = r.many('token', 'identifier')
     self.assertEqual([IdTerm('a'),
                       IdTerm('b'),
                       IdTerm('c'),
                       IdTerm('d')], v)
     r.nothing()
コード例 #3
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_comma_term(self):
     from ding.reader import Reader
     from ding.term   import DelimiterTerm, IdTerm
     r = Reader.from_string('a, b, c')
     v = r.many('token', 'term')
     self.assertEqual([IdTerm('a'),
                       DelimiterTerm(','),
                       IdTerm('b'),
                       DelimiterTerm(','),
                       IdTerm('c')],
                      v)
     r.nothing()
コード例 #4
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_compound_term(self):
     from ding.reader import Reader
     from ding.term   import IdTerm
     r = Reader.from_string('{ a b c d e }')
     v = r.token('compound_term')
     self.assertEqual('{}', v.shape)
     self.assertEqual([IdTerm('a'),
                       IdTerm('b'),
                       IdTerm('c'),
                       IdTerm('d'),
                       IdTerm('e')],
                      v.terms)
     r.nothing()
コード例 #5
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_operator_identifiers(self):
     from ding.reader import Reader
     from ding.term   import IdTerm
     r = Reader.from_string('+ - = ++ / * == += -= := ? : <=>')
     v = [IdTerm('+'),
          IdTerm('-'),
          IdTerm('='),
          IdTerm('++'),
          IdTerm('/'),
          IdTerm('*'),
          IdTerm('=='),
          IdTerm('+='),
          IdTerm('-='),
          IdTerm(':='),
          IdTerm('?'),
          IdTerm(':'),
          IdTerm('<=>')]
     for x in v:
         self.assertEqual(x, r.token('operator_identifier'))
     r.nothing()
コード例 #6
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_whitespace(self):
     from ding.reader import Reader
     r = Reader.from_string('    ')
     self.assertEqual('    ', r.whitespace())
     r.nothing()
コード例 #7
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_token_space(self):
     from ding.reader import Reader
     r = Reader.from_string('  // abcde \n\n\n/* fghi\n * jklm\n */  ')
     r.token_spaces()
     r.nothing()
コード例 #8
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_block_comment_odd(self):
     from ding.reader import Reader
     r = Reader.from_string('/* */')
     r.block_comment()
     r.nothing()
コード例 #9
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_line_comment(self):
     from ding.reader import Reader
     r = Reader.from_string('// this is a test\n')
     r.line_comment()
     r.nothing()
コード例 #10
0
ファイル: reader_tests.py プロジェクト: samdphillips/ding-py
 def test_whitespace_takes_just_enough(self):
     from ding.reader import Reader
     r = Reader.from_string('    test')
     r.whitespace()
     self.assertEqual('t', r.anything())