Changeset 30645 in project


Ignore:
Timestamp:
04/04/14 08:18:10 (7 years ago)
Author:
Ivan Raikov
Message:

picnic: reintegrated calculator language parser

Location:
release/4/picnic/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/picnic/trunk/calc-parser.scm

    r30536 r30645  
    5656                 (cond [(eq? 'eof c)   (errorp "unexpected end of string constant")]
    5757                       [(char=? c #\\) (let ((n (read-char in)))
    58                                          (loop (cons n l)))]
     58                                         (read-string (cons n l)))]
    5959                       [(char=? c #\") (begin (read-char in) (apply string (reverse l))) ]
    60                        [else (read-string (cons (read-char in) cs))] ))
     60                       [else (read-string (cons (read-char in) l))] ))
    6161               ))
    6262             )
  • release/4/picnic/trunk/picnic-utils.scm

    r30637 r30645  
    2626
    2727       
    28         (require-extension srfi-69
    29                            datatype matchable vector-lib mpi
    30                            mathh typeclass kd-tree random-mtzig)
    31 
    32 
    33         (require-library srfi-1 srfi-4 irregex files posix data-structures
     28        (require-extension srfi-69 datatype matchable vector-lib
     29                           mpi mathh typeclass kd-tree random-mtzig
     30                           lalr-driver)
     31
     32
     33        (require-library srfi-1 srfi-4 srfi-13 irregex files posix data-structures
    3434                         bvsp-spline parametric-curve)
    3535
     
    4242                      s32vector s32vector-length s32vector-ref
    4343                      f64vector f64vector? f64vector-ref f64vector-length f64vector->list list->f64vector)
    44                 (only srfi-13 string= string< string-null?)
     44                (only srfi-13 string= string< string-null? string-prefix? string-trim-both)
    4545                (only irregex string->irregex irregex-match)
    4646                (only files make-pathname)
     
    836836       
    837837
     838        (include "calc-parser.scm")
     839
     840       
     841        (define (load-config-file filename)
     842          (let ((in (open-input-file filename)))
     843            (if (not in) (error 'load-config-file "file not found" filename))
     844            (init-bindings)
     845            (let* ((lines (reverse (filter (lambda (x) (not (string-null? x))) (read-lines in))))
     846                   (properties (filter-map
     847                                (lambda (line)
     848                                  (and (not (string-prefix? "//" line))
     849                                       (let ((lst (string-split line "=")))
     850                                         (and (> (length lst) 1)
     851                                              (let ((key (string->symbol (string-trim-both (car lst) #\space)))
     852                                                    (val (calc-eval-string (cadr lst))))
     853                                                (add-binding key val)
     854                                                (cons key val))))))
     855                                lines)))
     856              properties
     857              ))
     858          )
     859
     860       
    838861)
    839862
  • release/4/picnic/trunk/picnic.setup

    r30637 r30645  
    99
    1010(make (
    11        ((dynld-name "picnic-utils") ("picnic-utils.scm")
     11       ("calc.yy.scm" ("calc.grm")
     12        (run (csi -s calc.grm)))
     13
     14       ((dynld-name "picnic-utils") ("picnic-utils.scm" "calc.yy.scm")
    1215        (compile -O -d2 -S -s picnic-utils.scm -j picnic-utils))
    1316
Note: See TracChangeset for help on using the changeset viewer.