[pypy-svn] r45194 - in pypy/dist/pypy/lang/scheme: . test

jlg at codespeak.net jlg at codespeak.net
Wed Jul 18 19:45:11 CEST 2007


Author: jlg
Date: Wed Jul 18 19:45:10 2007
New Revision: 45194

Modified:
   pypy/dist/pypy/lang/scheme/object.py
   pypy/dist/pypy/lang/scheme/ssparser.py
   pypy/dist/pypy/lang/scheme/test/test_eval.py
   pypy/dist/pypy/lang/scheme/test/test_object.py
   pypy/dist/pypy/lang/scheme/test/test_parser.py
Log:
W_Identifier is now W_Symbol

Modified: pypy/dist/pypy/lang/scheme/object.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/object.py	(original)
+++ pypy/dist/pypy/lang/scheme/object.py	Wed Jul 18 19:45:10 2007
@@ -62,16 +62,6 @@
     def __repr__(self):
         return "<W_Symbol " + self.name + ">"
 
-class W_Identifier(W_Symbol):
-    def __init__(self, val):
-        self.name = val
-
-    def to_string(self):
-        return self.name
-
-    def __repr__(self):
-        return "<W_Identifier " + self.name + ">"
-
     def eval_tr(self, ctx):
         w_obj = ctx.get(self.name)
         return (w_obj, None)
@@ -280,13 +270,13 @@
         self.args = []
         arg = args
         while not isinstance(arg, W_Nil):
-            if isinstance(arg, W_Identifier):
+            if isinstance(arg, W_Symbol):
                 self.args.append(Formal(arg.to_string(), True))
                 break
             else:
                 if not isinstance(arg, W_Pair):
                     raise SchemeSyntaxError
-                if not isinstance(arg.car, W_Identifier):
+                if not isinstance(arg.car, W_Symbol):
                     raise WrongArgType(arg.car, "Identifier")
                 #list of argument names, not evaluated
                 self.args.append(Formal(arg.car.to_string(), False))
@@ -573,14 +563,14 @@
             raise SchemeSyntaxError
         w_first = lst.car
         w_second = lst.get_cdr_as_pair()
-        if isinstance(w_first, W_Identifier):
+        if isinstance(w_first, W_Symbol):
             w_val = w_second.car.eval(ctx)
             ctx.set(w_first.name, w_val)
             return w_val #unspec
         elif isinstance(w_first, W_Pair):
             #we have lambda definition here!
             w_name = w_first.car
-            if not isinstance(w_name, W_Identifier):
+            if not isinstance(w_name, W_Symbol):
                 raise SchemeSyntaxError
 
             formals = w_first.cdr #isinstance of W_List
@@ -596,7 +586,7 @@
         if not isinstance(lst, W_Pair):
             raise SchemeSyntaxError
         w_identifier = lst.car
-        if not isinstance(w_identifier, W_Identifier):
+        if not isinstance(w_identifier, W_Symbol):
             raise WrongArgType(w_identifier, "Identifier")
 
         w_val = lst.get_cdr_as_pair().car.eval(ctx)
@@ -689,16 +679,16 @@
         return self.eval_body(local_ctx, lst.cdr)
 
 def quote(sexpr):
-    return W_Pair(W_Identifier('quote'), W_Pair(sexpr, W_Nil()))
+    return W_Pair(W_Symbol('quote'), W_Pair(sexpr, W_Nil()))
 
 def qq(sexpr):
-    return W_Pair(W_Identifier('quasiquote'), W_Pair(sexpr, W_Nil()))
+    return W_Pair(W_Symbol('quasiquote'), W_Pair(sexpr, W_Nil()))
 
 def unquote(sexpr):
-    return W_Pair(W_Identifier('unquote'), W_Pair(sexpr, W_Nil()))
+    return W_Pair(W_Symbol('unquote'), W_Pair(sexpr, W_Nil()))
 
 def unquote_splicing(sexpr):
-    return W_Pair(W_Identifier('unquote-splicing'), W_Pair(sexpr, W_Nil()))
+    return W_Pair(W_Symbol('unquote-splicing'), W_Pair(sexpr, W_Nil()))
 
 class Quote(W_Macro):
     def call(self, ctx, lst):
@@ -721,7 +711,7 @@
 
         if isinstance(w_lst, W_Pair):
             w_oper = w_lst.car
-            if isinstance(w_oper, W_Identifier):
+            if isinstance(w_oper, W_Symbol):
                 if w_oper.to_string() == "unquote":
  
                     #simply unquote
@@ -754,7 +744,7 @@
             #for unquote-splice we need to check one level earlier
             #cond = if we have w_oper = (unquote-splice <sexpr>)
             if deep == 1 and isinstance(w_oper, W_Pair) and \
-                    isinstance(w_oper.car, W_Identifier) and \
+                    isinstance(w_oper.car, W_Symbol) and \
                     w_oper.car.to_string() == "unquote-splicing":
 
                 #rest of list, needed for "stripping away" closing parens

Modified: pypy/dist/pypy/lang/scheme/ssparser.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/ssparser.py	(original)
+++ pypy/dist/pypy/lang/scheme/ssparser.py	Wed Jul 18 19:45:10 2007
@@ -1,7 +1,7 @@
 import autopath
 from pypy.rlib.parsing.pypackrat import PackratParser
 from pypy.rlib.parsing.makepackrat import BacktrackException, Status
-from pypy.lang.scheme.object import W_Pair, W_Integer, W_String, W_Identifier, \
+from pypy.lang.scheme.object import W_Pair, W_Integer, W_String, W_Symbol, \
         W_Nil, W_Boolean, W_Real, quote, qq, unquote, unquote_splicing
 
 def str_unquote(s):
@@ -24,10 +24,10 @@
         IGNORE*
         return {W_String(str_unquote(c))};
 
-    IDENTIFIER:
+    SYMBOL:
         c = `[\+\-\*\^\?a-zA-Z!<=>_~/$%&:][\+\-\*\^\?a-zA-Z0-9!<=>_~/$%&:]*`
         IGNORE*
-        return {W_Identifier(c)};
+        return {W_Symbol(c)};
 
     FIXNUM:
         c = `\-?(0|([1-9][0-9]*))`
@@ -86,7 +86,7 @@
       | FLOAT
       | FIXNUM
       | BOOLEAN
-      | IDENTIFIER
+      | SYMBOL
       | STRING;
 
     list:

Modified: pypy/dist/pypy/lang/scheme/test/test_eval.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/test/test_eval.py	(original)
+++ pypy/dist/pypy/lang/scheme/test/test_eval.py	Wed Jul 18 19:45:10 2007
@@ -4,7 +4,7 @@
 from pypy.lang.scheme.object import *
 
 def test_eval_obj():
-    w_num = W_Pair(W_Identifier("+"),
+    w_num = W_Pair(W_Symbol("+"),
                    W_Pair(W_Integer(4), W_Pair(W_Integer(5), W_Nil())))
     assert w_num.eval(ExecutionContext()).to_number() == 9 
 
@@ -522,7 +522,7 @@
     w_obj = parse("(let () (set! a 42) a)")[0]
     (w_expr, new_ctx) = w_obj.eval_tr(ctx)
     assert ctx.get("a").to_number() == 42
-    assert isinstance(w_expr, W_Identifier)
+    assert isinstance(w_expr, W_Symbol)
     assert new_ctx is not ctx
     assert isinstance(new_ctx, ExecutionContext)
     (w_obj, newer_ctx) = w_expr.eval_tr(new_ctx)

Modified: pypy/dist/pypy/lang/scheme/test/test_object.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/test/test_object.py	(original)
+++ pypy/dist/pypy/lang/scheme/test/test_object.py	Wed Jul 18 19:45:10 2007
@@ -51,7 +51,7 @@
     assert w_sym.to_boolean() is True
 
 def test_symbol():
-    w_id = W_Identifier("ident")
+    w_id = W_Symbol("ident")
     assert w_id.to_string() == "ident"
     assert w_id.to_boolean() is True
 

Modified: pypy/dist/pypy/lang/scheme/test/test_parser.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/test/test_parser.py	(original)
+++ pypy/dist/pypy/lang/scheme/test/test_parser.py	Wed Jul 18 19:45:10 2007
@@ -1,7 +1,7 @@
 import py
 from pypy.lang.scheme.ssparser import parse
 from pypy.lang.scheme.object import W_Boolean, W_Real, W_Integer, W_String
-from pypy.lang.scheme.object import W_Pair, W_Nil, W_Symbol, W_Identifier
+from pypy.lang.scheme.object import W_Pair, W_Nil, W_Symbol, W_Symbol
 
 def parse_sexpr(expr):
     return parse(expr)[0]
@@ -14,7 +14,7 @@
         return w_obj.to_number()
     elif isinstance(w_obj, W_String):
         return w_obj.strval
-    elif isinstance(w_obj, W_Identifier):
+    elif isinstance(w_obj, W_Symbol):
         return w_obj.name
     elif isinstance(w_obj, W_Symbol):
         return w_obj.name
@@ -39,7 +39,7 @@
     assert unwrap(w_fixnum) == 1123
     assert isinstance(w_fixnum, W_Integer)
     w_fixnum = parse_sexpr('abfa__')
-    assert isinstance(w_fixnum, W_Identifier)
+    assert isinstance(w_fixnum, W_Symbol)
     t = parse_sexpr(r'''"don't believe \"them\""''')
     assert isinstance(t, W_String)
     assert unwrap(t) == 'don\'t believe "them"'
@@ -67,7 +67,7 @@
 
     w_list = parse_sexpr('(+ 1 2)')
     assert isinstance(w_list, W_Pair)
-    assert isinstance(w_list.car, W_Identifier)
+    assert isinstance(w_list.car, W_Symbol)
     assert isinstance(w_list.cdr, W_Pair)
     assert isinstance(w_list.cdr.car, W_Integer)
     assert isinstance(w_list.cdr.cdr.car, W_Integer)
@@ -93,7 +93,7 @@
 def check_ident_ch(char):
     t = parse_sexpr("(" + char + ")")
     assert isinstance(t, W_Pair)
-    assert isinstance(t.car, W_Identifier)
+    assert isinstance(t.car, W_Symbol)
     assert unwrap(t.car) == char
     assert isinstance(t.cdr, W_Nil)
 



More information about the Pypy-commit mailing list