eschulte pushed a commit to branch go
in repository elpa.

commit 5cb84444831cf1c4b323cf4c8ed8af48b1a02989
Author: Eric Schulte <[email protected]>
Date:   Tue May 15 07:25:19 2012 -0400

    passing all tests
---
 sgf.el |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/sgf.el b/sgf.el
index d9e42ba..39683e9 100644
--- a/sgf.el
+++ b/sgf.el
@@ -61,15 +61,18 @@
        (nreverse res))))
 (def-edebug-spec parse-many (regexp string body))
 
-(defvar prop-val-re
+(defvar parse-prop-val-re
   "\\[\\(.*?[^\\]\\)\\]")
 
 (defvar parse-prop-re
-  (format "[[:space:]]*\\([[:alpha:]]+\\(%s\\)+\\)" prop-val-re))
+  (format "[[:space:]]*\\([[:alpha:]]+\\(%s\\)+\\)" parse-prop-val-re))
 
 (defvar parse-node-re
   (format "[[:space:]]*;\\(%s\\)+" parse-prop-re))
 
+(defvar parse-tree-part-re
+  (format "[[:space:]]*(\\(%s\\)[[:space:]]*\\([()]\\)" parse-node-re))
+
 (defun parse-prop-ident (str)
   (let ((end (if (and (<= ?A (aref str 1))
                       (< (aref str 1) ?Z))
@@ -78,9 +81,13 @@
             (substring str end))))
 
 (defun parse-prop-vals (str)
-  (parse-many parse-prop-re str
+  (parse-many parse-prop-val-re str
     (collect (match-string 1 str))))
 
+(defun parse-prop (str)
+  (multiple-value-bind (id rest) (parse-prop-ident str)
+    (cons id (parse-prop-vals rest))))
+
 (defun parse-props (str)
   (parse-many parse-prop-re str
     (multiple-value-bind (id rest) (parse-prop-ident (match-string 1 str))

Reply via email to