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

picnic: reintegrated calculator language parser

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.