]> gitweb.factorcode.org Git - factor.git/commitdiff
New utility word: complete-effect
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 22 Mar 2009 22:59:40 +0000 (17:59 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 22 Mar 2009 22:59:40 +0000 (17:59 -0500)
basis/constructors/constructors.factor
basis/functors/functors.factor
basis/locals/parser/parser.factor
core/effects/parser/parser.factor
core/parser/parser.factor

index 8cfeb83910624ce90c8aafe8d3baebead7957401..7a98cd5e0a905baf7f975cec6df1a421825f4400 100644 (file)
@@ -18,6 +18,6 @@ MACRO: set-slots ( slots -- quot )
 
 SYNTAX: CONSTRUCTOR:
     scan-word [ name>> "<" ">" surround create-in ] keep
-    "(" expect ")" parse-effect
+    complete-effect
     parse-definition
     define-constructor ;
\ No newline at end of file
index d69233b8d10cd7847b885bd07c7175f17842bfa3..309154fb491e3887a5e78b7e8ce64fbfae9f4e3b 100644 (file)
@@ -42,7 +42,7 @@ M: object fake-quotations> ;
     parse-definition >fake-quotations parsed \ fake-quotations> parsed ;
 
 : parse-declared* ( accum -- accum )
-    "(" expect ")" parse-effect
+    complete-effect
     [ parse-definition* ] dip
     parsed ;
 
@@ -71,7 +71,7 @@ SYNTAX: `M:
 SYNTAX: `C:
     scan-param parsed
     scan-param parsed
-    "(" expect ")" parse-effect
+    complete-effect
     [ [ [ boa ] curry ] over push-all ] dip parsed
     \ define-declared* parsed ;
 
index 3417d67e09e94e4ad230672556405d5f58adc331..5e9bdfbed6620286d98de669903471bc4d5d2b99 100644 (file)
@@ -104,7 +104,7 @@ M: lambda-parser parse-quotation ( -- quotation )
     (parse-lambda) <wlet> ?rewrite-closures ;
 
 : parse-locals ( -- effect vars assoc )
-    "(" expect ")" parse-effect
+    complete-effect
     dup
     in>> [ dup pair? [ first ] when ] map make-locals ;
 
index 2cc2e9f0a7c717dc0bc693935957e9a8637f8563..b9cb0ddcc9e101e127de7bb84de0be3debb55888 100644 (file)
@@ -27,5 +27,8 @@ ERROR: bad-effect ;
     parse-effect-tokens { "--" } split1 dup
     [ <effect> ] [ "Stack effect declaration must contain --" throw ] if ;
 
+: complete-effect ( -- effect )
+    "(" expect ")" parse-effect ;
+
 : parse-call( ( accum word -- accum )
     [ ")" parse-effect ] dip 2array over push-all ;
\ No newline at end of file
index 62177ec0c7c9ebe48c287ae5603e0399ca6e18ac..871f7c5321444b4d64f7420aec542fc3d790d4f1 100644 (file)
@@ -134,7 +134,7 @@ M: f parse-quotation \ ] parse-until >quotation ;
 
 : (:) ( -- word def effect )
     CREATE-WORD
-    "(" expect ")" parse-effect
+    complete-effect
     parse-definition swap ;
 
 ERROR: bad-number ;