Пример #1
0
 def testrealnum(self):
     """test parsing of real numbers"""
     res = self.parser.parse('a=5.45\n',debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self)==5.45)
     res = self.parser.parse('a=.45e-24\n',debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==.45e-24)
Пример #2
0
 def testrealnum(self):
     """test parsing of real numbers"""
     res = self.parser.parse('a=5.45\n',debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self)==5.45)
     res = self.parser.parse('a=.45e-24\n',debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==.45e-24)
Пример #3
0
 def testshortstring(self):
     """test parsing a one-line string"""
     jk = "a = \"my pink pony's mane\""
     jl = "a = 'my pink pony\"s mane'"
     ress = self.parser.parse(jk+"\n",lexer=self.lexer)
     resr = self.parser.parse(jl+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(ress,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jk[5:-1])
     realfunc = drel_yacc.make_func(resr,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jl[5:-1])
Пример #4
0
 def testshortstring(self):
     """test parsing a one-line string"""
     jk = "a = \"my pink pony's mane\""
     jl = "a = 'my pink pony\"s mane'"
     ress = self.parser.parse(jk+"\n",lexer=self.lexer)
     resr = self.parser.parse(jl+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(ress,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jk[5:-1])
     realfunc = drel_yacc.make_func(resr,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jl[5:-1])
Пример #5
0
 def testassignment(self):
     """Test that an assignment works"""
     teststrg = "n  = 11" 
     res = self.parser.parse(teststrg,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","n",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self)==11)
Пример #6
0
 def testparen(self):
     """test parentheses"""
     test = "a = ('once', 'upon', 6,7j +.5e2)"
     res = self.parser.parse(test+"\n",lexer=self.lexer) 
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==('once' , 'upon' , 6 , 7j + .5e2 ))
Пример #7
0
 def testparen(self):
     """test parentheses"""
     test = "a = ('once', 'upon', 6,7j +.5e2)"
     res = self.parser.parse(test+"\n",lexer=self.lexer) 
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==('once' , 'upon' , 6 , 7j + .5e2 ))
Пример #8
0
 def testlongstring(self):
     """test parsing multi-line strings"""
     jk = '''a = """  a  long string la la la '"'
               some more
       end"""'''
     jl = """a = '''  a  long string la la la '"'
               some more
       end'''"""
     ress = self.parser.parse(jk+"\n",lexer=self.lexer)
     resr = self.parser.parse(jl+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(ress,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jk[7:-3])
     realfunc = drel_yacc.make_func(resr,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jl[7:-3])
Пример #9
0
 def testlists(self):
     """test list parsing"""
     test = "a = ['once', 'upon', 6,7j +.5e2]"
     res = self.parser.parse(test+"\n",lexer=self.lexer) 
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==['once' , 'upon' , 6 , 7j + .5e2 ])
Пример #10
0
 def testassignment(self):
     """Test that an assignment works"""
     teststrg = "n  = 11" 
     res = self.parser.parse(teststrg,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","n",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self)==11)
Пример #11
0
 def testexprlist(self):
     """test comma-separated expressions"""
     test = "a = 5,6,7+8.5e2"
     res = self.parser.parse(test+"\n",lexer=self.lexer) 
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==(5,6,7+8.5e2))
Пример #12
0
 def testlongstring(self):
     """test parsing multi-line strings"""
     jk = '''a = """  a  long string la la la '"'
               some more
       end"""'''
     jl = """a = '''  a  long string la la la '"'
               some more
       end'''"""
     ress = self.parser.parse(jk+"\n",lexer=self.lexer)
     resr = self.parser.parse(jl+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(ress,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jk[7:-3])
     realfunc = drel_yacc.make_func(resr,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == jl[7:-3])
Пример #13
0
 def test_attributes(self):
     """Test that attributes of complex expressions come out OK"""
     # We need to do a scary funky attribute of a key lookup 
     ourdic = CifFile.CifDic("testdic2")
     testblock = CifFile.CifFile("test_data.cif")["testdata"]
     self.parser.loopable_cats = ['geom','position'] #
     teststrg = """
     LineList = []
     PointList = []
     With p as position
     Loop g as geom {
     If (g.type == "point") {
           PointList += Tuple(g.vertex1_id,p[g.vertex1_id].vector_xyz)
     }
     #Else if (g.type == "line") {
     #      LineList ++= Tuple(Tuple(g.vertex1_id, g.vertex2_id),
     #                            Tuple(p[g.vertex1_id].vector_xyz,
     #                                    p[g.vertex2_id].vector_xyz))
     #}
     }
     """
     self.parser.target_id = 'PointList'
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","PointList")
     print "Function -> \n" + realfunc
     exec realfunc
     retval = myfunc(ourdic,testblock,"LineList")
     print "testdic2 return value" + `retval`
     print "Value for comparison with docs: %s" % `retval[0]`
Пример #14
0
 def test_attributes(self):
     """Test that attributes of complex expressions come out OK"""
     # We need to do a scary funky attribute of a key lookup 
     ourdic = CifFile.CifDic("testdic2",grammar="DDLm")
     testblock = CifFile.CifFile("test_data.cif",grammar="DDLm")["testdata"]
     self.parser.loopable_cats = ['geom','position'] #
     teststrg = """
     LineList = []
     PointList = []
     With p as position
     Loop g as geom {
     If (g.type == "point") {
           PointList += Tuple(g.vertex1_id,p[g.vertex1_id].vector_xyz)
     }
     #Else if (g.type == "line") {
     #      LineList ++= Tuple(Tuple(g.vertex1_id, g.vertex2_id),
     #                            Tuple(p[g.vertex1_id].vector_xyz,
     #                                    p[g.vertex2_id].vector_xyz))
     #}
     }
     """
     self.parser.target_id = 'PointList'
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","PointList")
     print "Function -> \n" + realfunc
     exec realfunc
     retval = myfunc(ourdic,testblock,"LineList")
     print "testdic2 return value" + `retval`
     print "Value for comparison with docs: %s" % `retval[0]`
Пример #15
0
 def testexprlist(self):
     """test comma-separated expressions"""
     test = "a = 5,6,7+8.5e2"
     res = self.parser.parse(test+"\n",lexer=self.lexer) 
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==(5,6,7+8.5e2))
Пример #16
0
 def testlists(self):
     """test list parsing"""
     test = "a = ['once', 'upon', 6,7j +.5e2]"
     res = self.parser.parse(test+"\n",lexer=self.lexer) 
     realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) ==['once' , 'upon' , 6 , 7j + .5e2 ])
Пример #17
0
 def testmathexpr(self):
     """test simple maths expressions """
     testexpr = (("a = 5.45 + 23.6e05",5.45+23.6e05), 
                 ("a = 11 - 45",11-45),
                 ("a = 45.6 / 22.2",45.6/22.2))
     for test,check in testexpr:
         res = self.parser.parse(test+"\n",lexer=self.lexer)
         realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
         exec realfunc
         self.failUnless(myfunc(self,self) == check)
Пример #18
0
 def testmathexpr(self):
     """test simple maths expressions """
     testexpr = (("a = 5.45 + 23.6e05",5.45+23.6e05), 
                 ("a = 11 - 45",11-45),
                 ("a = 45.6 / 22.2",45.6/22.2))
     for test,check in testexpr:
         res = self.parser.parse(test+"\n",lexer=self.lexer)
         realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
         exec realfunc
         self.failUnless(myfunc(self,self) == check)
Пример #19
0
 def testinteger(self):
     """test parsing an integer"""
     resm = [0,0,0,0]
     checkm = [1230,77,5,473]
     resm[0] = self.parser.parse('a = 1230\n',lexer=self.lexer)
     resm[1] = self.parser.parse('a = 0x4D\n',lexer=self.lexer)
     resm[2] = self.parser.parse('a = 0B0101\n',lexer=self.lexer)
     resm[3] = self.parser.parse('a = 0o731\n',lexer=self.lexer)
     for res,check in zip(resm,checkm):
         realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
         exec realfunc
         self.failUnless(myfunc(self,self) == check)
Пример #20
0
 def testinteger(self):
     """test parsing an integer"""
     resm = [0,0,0,0]
     checkm = [1230,77,5,473]
     resm[0] = self.parser.parse('a = 1230\n',lexer=self.lexer)
     resm[1] = self.parser.parse('a = 0x4D\n',lexer=self.lexer)
     resm[2] = self.parser.parse('a = 0B0101\n',lexer=self.lexer)
     resm[3] = self.parser.parse('a = 0o731\n',lexer=self.lexer)
     for res,check in zip(resm,checkm):
         realfunc = drel_yacc.make_func(res,"myfunc","a",have_sn=False)
         exec realfunc
         self.failUnless(myfunc(self,self) == check)
Пример #21
0
 def test_tables(self):
     """Test that tables are parsed correctly"""
     teststrg = """
     jk = Table()
     jk['bx'] = 25
     """
     print "Table test:"
     res = self.parser.parse(teststrg+"\n",debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","jk",have_sn=False)
     print "Table: %s" % `res[0]`
     exec realfunc
     b = myfunc(self,self)
     self.failUnless(b['bx']==25)
Пример #22
0
 def test_tables(self):
     """Test that tables are parsed correctly"""
     teststrg = """
     jk = Table()
     jk['bx'] = 25
     """
     print "Table test:"
     res = self.parser.parse(teststrg+"\n",debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","jk",have_sn=False)
     print "Table: %s" % `res[0]`
     exec realfunc
     b = myfunc(self,self)
     self.failUnless(b['bx']==25)
Пример #23
0
 def test_if_stmt(self):
     """test parsing of if statement"""
     teststrg = """
     dmin = 5.0
     d1 = 4.0
     rad1 = 2.2
     radius_bond = 2.0
     If (d1<dmin or d1>(rad1+radius_bond)) b = 5 
     """
     res = self.parser.parse(teststrg + "\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","b",have_sn=False)
     exec realfunc
     b = myfunc(self,self)
     print "if returns %d" %  b 
     self.failUnless(b==5)
Пример #24
0
 def test_if_stmt(self):
     """test parsing of if statement"""
     teststrg = """
     dmin = 5.0
     d1 = 4.0
     rad1 = 2.2
     radius_bond = 2.0
     If (d1<dmin or d1>(rad1+radius_bond)) b = 5 
     """
     res = self.parser.parse(teststrg + "\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","b",have_sn=False)
     exec realfunc
     b = myfunc(self,self)
     print "if returns %d" %  b 
     self.failUnless(b==5)
Пример #25
0
 def test_loop_statement(self):
     """Test proper processing of loop statements"""
     teststrg = """
     n = 0
     loop p as dictionary_audit n += 1
         _symmetry.ops = n 
          """
     self.parser.loopable_cats = ['dictionary_audit']   #category dictionary is not looped
     self.parser.target_id = '_symmetry.ops'
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer,debug=1)
     realfunc = drel_yacc.make_func(res,"myfunc",None)
     print "Loop statement -> \n" + realfunc
     exec realfunc
     symops = myfunc(self.testdic,self.testblock)
     print 'symops now %d' % symops 
     self.failUnless(symops == 81)
Пример #26
0
 def test_loop_statement(self):
     """Test proper processing of loop statements"""
     teststrg = """
     n = 0
     loop p as dictionary_audit n += 1
         _symmetry.ops = n 
          """
     self.parser.loopable_cats = ['dictionary_audit']   #category dictionary is not looped
     self.parser.target_id = '_symmetry.ops'
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer,debug=1)
     realfunc = drel_yacc.make_func(res,"myfunc",None)
     print "Loop statement -> \n" + realfunc
     exec realfunc
     symops = myfunc(self.testdic,self.testblock)
     print 'symops now %d' % symops 
     self.failUnless(symops == 81)
Пример #27
0
 def test_functions(self):
     """Test that functions are converted correctly"""
     struct_testdic = CifFile.CifFile("/home/jrh/COMCIFS/DDLm_20071010/cif_core.dic")
     struct_testblock = struct_testdic["CIF_CORE"]
     self.parser.loopable_cats = ["import"]   #category import is looped
     self.parser.target_id = "_import_list.id"
     self.parser.withtable = {}
     teststrg = """
     with i as import 
         _import_list.id = List([i.scope, i.block, i.file, i.if_dupl, i.if_miss])
     """
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc",None)
     print "With statement -> \n" + realfunc
     exec realfunc
     retval = myfunc(self.testdic,struct_testblock,3)
     self.failUnless(retval == StarFile.StarList(["dic","CORE_MODEL","core_model.dic","exit","exit"]))
Пример #28
0
 def test_functions(self):
     """Test that functions are converted correctly"""
     struct_testdic = CifFile.CifFile("cif_core.dic", grammar="DDLm")
     struct_testblock = struct_testdic["CIF_CORE"]
     self.parser.loopable_cats = ["import"]   #category import is looped
     self.parser.target_id = "_import_list.id"
     self.parser.withtable = {}
     teststrg = """
     with i as import 
         _import_list.id = List([i.scope, i.block, i.file, i.if_dupl, i.if_miss])
     """
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc",None)
     print "With statement -> \n" + realfunc
     exec realfunc
     retval = myfunc(self.testdic,struct_testblock,3)
     self.failUnless(retval == StarFile.StarList(["dic","CORE_MODEL","core_model.dic","exit","exit"]))
Пример #29
0
 def test_nested_stmt(self):
     """Test how a nested do statement prints"""
     teststrg = """
     total = 0
     othertotal = 0
     do jkl = 0,20,2 { total = total + jkl 
        do emm = 1,5 { othertotal = othertotal + 1 } 
        }
     end_of_loop = -25.6
     """
     res = self.parser.parse(teststrg + "\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","othertotal,total",have_sn=False)
     print "Nested do:\n" + realfunc
     exec realfunc
     othertotal,total = myfunc(self,self)
     print "nested do returns %d, %d" % (othertotal,total) 
     self.failUnless(othertotal==55)
     self.failUnless(total==110)
Пример #30
0
 def test_nested_stmt(self):
     """Test how a nested do statement prints"""
     teststrg = """
     total = 0
     othertotal = 0
     do jkl = 0,20,2 { total = total + jkl 
        do emm = 1,5 { othertotal = othertotal + 1 } 
        }
     end_of_loop = -25.6
     """
     res = self.parser.parse(teststrg + "\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","othertotal,total",have_sn=False)
     print "Nested do:\n" + realfunc
     exec realfunc
     othertotal,total = myfunc(self,self)
     print "nested do returns %d, %d" % (othertotal,total) 
     self.failUnless(othertotal==55)
     self.failUnless(total==110)
Пример #31
0
 def test_do_stmt(self):
     """Test how a do statement comes out"""
     teststrg = """
     total = 0
     do jkl = 0,20,2 { total = total + jkl
        }
     do emm = 1,5 {
        total = total + emm
        }
     """
     res = self.parser.parse(teststrg + "\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","total",have_sn=False)
     exec realfunc
     realres = myfunc(self,self)
     # Do statements are inclusive
     print "Do statement returns %d" % realres
     self.failUnless(realres==125)
     print res
Пример #32
0
 def test_do_stmt(self):
     """Test how a do statement comes out"""
     teststrg = """
     total = 0
     do jkl = 0,20,2 { total = total + jkl
        }
     do emm = 1,5 {
        total = total + emm
        }
     """
     res = self.parser.parse(teststrg + "\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","total",have_sn=False)
     exec realfunc
     realres = myfunc(self,self)
     # Do statements are inclusive
     print "Do statement returns %d" % realres
     self.failUnless(realres==125)
     print res
Пример #33
0
 def test_do_stmt_2(self):
     """Test how another do statement comes out"""
     teststrg = """
     pp = 0
     geom_hbond = [(1,2),(2,3),(3,4)]
     do i= 0,1 {
        l,s = geom_hbond [i] 
        pp += s
        }
     """
     self.parser.special_id = [{'axy':1}]
     res = self.parser.parse(teststrg + "\n",debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","pp",have_sn=False)
     exec realfunc
     realres = myfunc(self,self)
     # Do statements are inclusive
     print "Do statement returns %d" % realres
     self.failUnless(realres==5)
     print res
Пример #34
0
 def test_do_stmt_2(self):
     """Test how another do statement comes out"""
     teststrg = """
     pp = 0
     geom_hbond = [(1,2),(2,3),(3,4)]
     do i= 0,1 {
        l,s = geom_hbond [i] 
        pp += s
        }
     """
     self.parser.special_id = [{'axy':1}]
     res = self.parser.parse(teststrg + "\n",debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc","pp",have_sn=False)
     exec realfunc
     realres = myfunc(self,self)
     # Do statements are inclusive
     print "Do statement returns %d" % realres
     self.failUnless(realres==5)
     print res
Пример #35
0
 def test_fancy_assign(self):
     """Test fancy assignment"""
     teststrg = """
     a = [2,3,4] 
     b = 3
     c= 4
     do jkl = 1,5,1 {
        geom_angle( .id = Tuple(a,b,c),
                    .distances = Tuple(b,c),
                    .value = jkl)
                    }
     """
     self.parser.target_id = "geom_angle"
     res = self.parser.parse(teststrg + "\n",debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc",None,cat_meth = True,have_sn=False)
     print "Fancy assign: %s" % res[0]
     exec realfunc
     b = myfunc(self,self)
     print "Geom_angle.angle = %s" % b['geom_angle.value']
     self.failUnless(b['geom_angle.value']==[1,2,3,4])
Пример #36
0
 def test_fancy_assign(self):
     """Test fancy assignment"""
     teststrg = """
     a = [2,3,4] 
     b = 3
     c= 4
     do jkl = 1,5,1 {
        geom_angle( .id = Tuple(a,b,c),
                    .distances = Tuple(b,c),
                    .value = jkl)
                    }
     """
     self.parser.target_id = "geom_angle"
     res = self.parser.parse(teststrg + "\n",debug=True,lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc",None,cat_meth = True,have_sn=False)
     print "Fancy assign: %s" % res[0]
     exec realfunc
     b = myfunc(self,self)
     print "Geom_angle.angle = %s" % b['geom_angle.value']
     self.failUnless(b['geom_angle.value']==[1,2,3,4])
Пример #37
0
 def test_with_stmt(self):
     """Test what comes out of a simple flow statement, including
        multiple with statements"""
     teststrg = """
     with p as description
     with q as dictionary {
         x = 22
         j = 25
         jj = q.date
         px = p.text
         _dictionary.date = "2007-04-01"
         }"""
     self.parser.loopable_cats = []   #category dictionary is not looped
     self.parser.target_id = '_dictionary.date'
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc",None)
     print "With statement -> \n" + realfunc
     exec realfunc
     newdate = myfunc(self.testdic,self.testblock)
     print 'date now %s' % newdate 
     self.failUnless(newdate == "2007-04-01")
Пример #38
0
 def test_with_stmt(self):
     """Test what comes out of a simple flow statement, including
        multiple with statements"""
     teststrg = """
     with p as description
     with q as dictionary {
         x = 22
         j = 25
         jj = q.date
         px = p.text
         _dictionary.date = "2007-04-01"
         }"""
     self.parser.loopable_cats = []   #category dictionary is not looped
     self.parser.target_id = '_dictionary.date'
     res = self.parser.parse(teststrg+"\n",lexer=self.lexer)
     realfunc = drel_yacc.make_func(res,"myfunc",None)
     print "With statement -> \n" + realfunc
     exec realfunc
     newdate = myfunc(self.testdic,self.testblock)
     print 'date now %s' % newdate 
     self.failUnless(newdate == "2007-04-01")
Пример #39
0
	def execute_method(self):
		#create our lexer and parser
	      	self.lexer = drel_lex.lexer
      		self.parser = drel_yacc.parser
       		#use a simple dictionary
       		self.testdic = CifFile.CifDic("dict/cif_short.dic")
		self.testdic.diclang = "DDLm"
       		self.testblock = CifFile.CifFile("tests/c2ctest5.cif") ["c2ctest5"]
       		#create the global namespace
       		self.namespace = self.testblock.keys()
       		self.namespace = dict(map(None,self.namespace,self.namespace))
       		self.parser.loopable_cats = ["import"]
		self.parser.special_id = [self.namespace]
       		self.parser.withtable = {}
       		self.parser.target_id = None
       		self.parser.indent = ""
		#get valuename from cmdline
		valuename = sys.argv[1]

		f = open("method_expression")
		expression = f.readline()
		str_list = []
		str_list.append(expression)

		while expression:
			expression = f.readline()
			str_list.append(expression)
		
		expression = "".join(str_list)
		
		self.parser.target_id = valuename
		res = self.parser.parse(expression + "\n", lexer=self.lexer)
		realfunc = drel_yacc.make_func(res, "myfunc", valuename)
		print "Compiling dREL....."
		exec realfunc
		realres = myfunc(self.testdic,self.testblock)
		print "Generated value: %s" % realres
		fout = open("method_output", 'w')
		print>>fout, realres
Пример #40
0
    def execute_method(self):
        #create our lexer and parser
        self.lexer = drel_lex.lexer
        self.parser = drel_yacc.parser
        #use a simple dictionary
        self.testdic = CifFile.CifDic("dict/cif_short.dic")
        self.testdic.diclang = "DDLm"
        self.testblock = CifFile.CifFile("tests/c2ctest5.cif")["c2ctest5"]
        #create the global namespace
        self.namespace = self.testblock.keys()
        self.namespace = dict(map(None, self.namespace, self.namespace))
        self.parser.loopable_cats = ["import"]
        self.parser.special_id = [self.namespace]
        self.parser.withtable = {}
        self.parser.target_id = None
        self.parser.indent = ""
        #get valuename from cmdline
        valuename = sys.argv[1]

        f = open("method_expression")
        expression = f.readline()
        str_list = []
        str_list.append(expression)

        while expression:
            expression = f.readline()
            str_list.append(expression)

        expression = "".join(str_list)

        self.parser.target_id = valuename
        res = self.parser.parse(expression + "\n", lexer=self.lexer)
        realfunc = drel_yacc.make_func(res, "myfunc", valuename)
        print "Compiling dREL....."
        exec realfunc
        realres = myfunc(self.testdic, self.testblock)
        print "Generated value: %s" % realres
        fout = open("method_output", 'w')
        print >> fout, realres
Пример #41
0
 def testcomplex(self):
     """test parsing a complex number"""
     resc = self.parser.parse('a = 13.45j\n',lexer=self.lexer)
     realfunc = drel_yacc.make_func(resc,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == 13.45j)
Пример #42
0
 def testcomplex(self):
     """test parsing a complex number"""
     resc = self.parser.parse('a = 13.45j\n',lexer=self.lexer)
     realfunc = drel_yacc.make_func(resc,"myfunc","a",have_sn=False)
     exec realfunc
     self.failUnless(myfunc(self,self) == 13.45j)