Changeset 22102 in project


Ignore:
Timestamp:
12/25/10 06:56:52 (9 years ago)
Author:
Alan Post
Message:

genturfa'i: add debug and profile support to parser.

This is a fairly substantial patch, adding all of the framework to
produce debug output and profiling information from the parser.
When these options are not enabled, there is a small initialization
penalty and no runtime penalty to the parser.

When debug in enabled, a file is written containing a symbolic
expression describing the path taken by the parser while it matches
the input.

When profile is enabled, timing for non-terminal rules and operators
is written as an association list. This information isn't perfect
yet, as it doesn't subtract containing rules from the timing of
outer rules. For purposes of debugging performance, however, it is
good enough. It allowed me to find some performance issues in the
memoization code, a patch for which is coming up.

Location:
release/4/genturfahi/trunk
Files:
4 added
12 edited

Legend:

Unmodified
Added
Removed
  • release/4/genturfahi/trunk/bootstrap.scm

    r22052 r22102  
    2020(define genturfahi-peg-gerna
    2121  (let ()
    22     (define (cfari-38 porsi mapti namapti) (cfari-39 porsi mapti namapti))
    23     (define (cfari-samselpla-2 porsi mapti namapti)
    24       (cfari-samselpla-40 porsi mapti namapti))
    25     (define (gerna-3 porsi mapti namapti) (gerna-41 porsi mapti namapti))
    26     (define (smuni-5 porsi mapti namapti) (smuni-42 porsi mapti namapti))
    27     (define (naselci-6 porsi mapti namapti) (naselci-43 porsi mapti namapti))
    28     (define (javni-7 porsi mapti namapti) (javni-44 porsi mapti namapti))
    29     (define (jonai-8 porsi mapti namapti) (jonai-45 porsi mapti namapti))
    30     (define (je-9 porsi mapti namapti) (je-46 porsi mapti namapti))
    31     (define (nastura-pajavni-10 porsi mapti namapti)
    32       (nastura-pajavni-47 porsi mapti namapti))
    33     (define (pajavni-13 porsi mapti namapti) (pajavni-48 porsi mapti namapti))
    34     (define (optional-14 porsi mapti namapti)
    35       (optional-49 porsi mapti namapti))
    36     (define (zero-or-more-15 porsi mapti namapti)
    37       (zero-or-more-50 porsi mapti namapti))
    38     (define (one-or-more-16 porsi mapti namapti)
    39       (one-or-more-51 porsi mapti namapti))
    40     (define (and-predicate-17 porsi mapti namapti)
    41       (and-predicate-52 porsi mapti namapti))
    42     (define (end-of-input-18 porsi mapti namapti)
    43       (end-of-input-53 porsi mapti namapti))
    44     (define (not-predicate-19 porsi mapti namapti)
    45       (not-predicate-54 porsi mapti namapti))
    46     (define (cmene-sumti-11 porsi mapti namapti)
    47       (cmene-sumti-55 porsi mapti namapti))
    48     (define (selci-javni-20 porsi mapti namapti)
    49       (selci-javni-56 porsi mapti namapti))
    50     (define (selci-naselci-21 porsi mapti namapti)
    51       (selci-naselci-57 porsi mapti namapti))
    52     (define (lerfu-selci-22 porsi mapti namapti)
    53       (lerfu-selci-58 porsi mapti namapti))
    54     (define (lerfu-cmene-27 porsi mapti namapti)
    55       (lerfu-cmene-59 porsi mapti namapti))
    56     (define (valsi-selci-23 porsi mapti namapti)
    57       (valsi-selci-60 porsi mapti namapti))
    58     (define (valsi-lerfu-28 porsi mapti namapti)
    59       (valsi-lerfu-61 porsi mapti namapti))
    60     (define (klesi-selci-24 porsi mapti namapti)
    61       (klesi-selci-62 porsi mapti namapti))
    62     (define (klesi-lerfu-29 porsi mapti namapti)
    63       (klesi-lerfu-63 porsi mapti namapti))
    64     (define (klesi-cmene-30 porsi mapti namapti)
    65       (klesi-cmene-64 porsi mapti namapti))
    66     (define (denpabu-25 porsi mapti namapti) (denpabu-65 porsi mapti namapti))
    67     (define (samselpla-12 porsi mapti namapti)
    68       (samselpla-66 porsi mapti namapti))
    69     (define (samselpla-xadni-31 porsi mapti namapti)
    70       (samselpla-xadni-67 porsi mapti namapti))
    71     (define (samselpla-cmene-32 porsi mapti namapti)
    72       (samselpla-cmene-68 porsi mapti namapti))
    73     (define (girzu-javni-26 porsi mapti namapti)
    74       (girzu-javni-69 porsi mapti namapti))
    75     (define (canlu-1 porsi mapti namapti) (canlu-70 porsi mapti namapti))
    76     (define (canlubu-33 porsi mapti namapti) (canlubu-71 porsi mapti namapti))
    77     (define (totoi-34 porsi mapti namapti) (totoi-72 porsi mapti namapti))
    78     (define (CR-36 porsi mapti namapti) (CR-73 porsi mapti namapti))
    79     (define (LF-37 porsi mapti namapti) (LF-74 porsi mapti namapti))
    80     (define (CRLF-35 porsi mapti namapti) (CRLF-75 porsi mapti namapti))
    81     (define (FAhO-4 porsi mapti namapti) (FAhO-76 porsi mapti namapti))
     22    (define cfari-38
     23      (nunjavni-secuxna
     24        (lambda () "cfari")
     25        (lambda (porsi mapti namapti) (cfari-39 porsi mapti namapti))))
     26    (define cfari-samselpla-2
     27      (nunjavni-secuxna
     28        (lambda () "cfari-samselpla")
     29        (lambda (porsi mapti namapti)
     30          (cfari-samselpla-40 porsi mapti namapti))))
     31    (define gerna-3
     32      (nunjavni-secuxna
     33        (lambda () "gerna")
     34        (lambda (porsi mapti namapti) (gerna-41 porsi mapti namapti))))
     35    (define smuni-5
     36      (nunjavni-secuxna
     37        (lambda () "smuni")
     38        (lambda (porsi mapti namapti) (smuni-42 porsi mapti namapti))))
     39    (define naselci-6
     40      (nunjavni-secuxna
     41        (lambda () "naselci")
     42        (lambda (porsi mapti namapti) (naselci-43 porsi mapti namapti))))
     43    (define javni-7
     44      (nunjavni-secuxna
     45        (lambda () "javni")
     46        (lambda (porsi mapti namapti) (javni-44 porsi mapti namapti))))
     47    (define jonai-8
     48      (nunjavni-secuxna
     49        (lambda () "jonai")
     50        (lambda (porsi mapti namapti) (jonai-45 porsi mapti namapti))))
     51    (define je-9
     52      (nunjavni-secuxna
     53        (lambda () "je")
     54        (lambda (porsi mapti namapti) (je-46 porsi mapti namapti))))
     55    (define nastura-pajavni-10
     56      (nunjavni-secuxna
     57        (lambda () "nastura-pajavni")
     58        (lambda (porsi mapti namapti)
     59          (nastura-pajavni-47 porsi mapti namapti))))
     60    (define pajavni-13
     61      (nunjavni-secuxna
     62        (lambda () "pajavni")
     63        (lambda (porsi mapti namapti) (pajavni-48 porsi mapti namapti))))
     64    (define optional-14
     65      (nunjavni-secuxna
     66        (lambda () "optional")
     67        (lambda (porsi mapti namapti) (optional-49 porsi mapti namapti))))
     68    (define zero-or-more-15
     69      (nunjavni-secuxna
     70        (lambda () "zero-or-more")
     71        (lambda (porsi mapti namapti) (zero-or-more-50 porsi mapti namapti))))
     72    (define one-or-more-16
     73      (nunjavni-secuxna
     74        (lambda () "one-or-more")
     75        (lambda (porsi mapti namapti) (one-or-more-51 porsi mapti namapti))))
     76    (define and-predicate-17
     77      (nunjavni-secuxna
     78        (lambda () "and-predicate")
     79        (lambda (porsi mapti namapti) (and-predicate-52 porsi mapti namapti))))
     80    (define end-of-input-18
     81      (nunjavni-secuxna
     82        (lambda () "end-of-input")
     83        (lambda (porsi mapti namapti) (end-of-input-53 porsi mapti namapti))))
     84    (define not-predicate-19
     85      (nunjavni-secuxna
     86        (lambda () "not-predicate")
     87        (lambda (porsi mapti namapti) (not-predicate-54 porsi mapti namapti))))
     88    (define cmene-sumti-11
     89      (nunjavni-secuxna
     90        (lambda () "cmene-sumti")
     91        (lambda (porsi mapti namapti) (cmene-sumti-55 porsi mapti namapti))))
     92    (define selci-javni-20
     93      (nunjavni-secuxna
     94        (lambda () "selci-javni")
     95        (lambda (porsi mapti namapti) (selci-javni-56 porsi mapti namapti))))
     96    (define selci-naselci-21
     97      (nunjavni-secuxna
     98        (lambda () "selci-naselci")
     99        (lambda (porsi mapti namapti) (selci-naselci-57 porsi mapti namapti))))
     100    (define lerfu-selci-22
     101      (nunjavni-secuxna
     102        (lambda () "lerfu-selci")
     103        (lambda (porsi mapti namapti) (lerfu-selci-58 porsi mapti namapti))))
     104    (define lerfu-cmene-27
     105      (nunjavni-secuxna
     106        (lambda () "lerfu-cmene")
     107        (lambda (porsi mapti namapti) (lerfu-cmene-59 porsi mapti namapti))))
     108    (define valsi-selci-23
     109      (nunjavni-secuxna
     110        (lambda () "valsi-selci")
     111        (lambda (porsi mapti namapti) (valsi-selci-60 porsi mapti namapti))))
     112    (define valsi-lerfu-28
     113      (nunjavni-secuxna
     114        (lambda () "valsi-lerfu")
     115        (lambda (porsi mapti namapti) (valsi-lerfu-61 porsi mapti namapti))))
     116    (define klesi-selci-24
     117      (nunjavni-secuxna
     118        (lambda () "klesi-selci")
     119        (lambda (porsi mapti namapti) (klesi-selci-62 porsi mapti namapti))))
     120    (define klesi-lerfu-29
     121      (nunjavni-secuxna
     122        (lambda () "klesi-lerfu")
     123        (lambda (porsi mapti namapti) (klesi-lerfu-63 porsi mapti namapti))))
     124    (define klesi-cmene-30
     125      (nunjavni-secuxna
     126        (lambda () "klesi-cmene")
     127        (lambda (porsi mapti namapti) (klesi-cmene-64 porsi mapti namapti))))
     128    (define denpabu-25
     129      (nunjavni-secuxna
     130        (lambda () "denpabu")
     131        (lambda (porsi mapti namapti) (denpabu-65 porsi mapti namapti))))
     132    (define samselpla-12
     133      (nunjavni-secuxna
     134        (lambda () "samselpla")
     135        (lambda (porsi mapti namapti) (samselpla-66 porsi mapti namapti))))
     136    (define samselpla-xadni-31
     137      (nunjavni-secuxna
     138        (lambda () "samselpla-xadni")
     139        (lambda (porsi mapti namapti)
     140          (samselpla-xadni-67 porsi mapti namapti))))
     141    (define samselpla-cmene-32
     142      (nunjavni-secuxna
     143        (lambda () "samselpla-cmene")
     144        (lambda (porsi mapti namapti)
     145          (samselpla-cmene-68 porsi mapti namapti))))
     146    (define girzu-javni-26
     147      (nunjavni-secuxna
     148        (lambda () "girzu-javni")
     149        (lambda (porsi mapti namapti) (girzu-javni-69 porsi mapti namapti))))
     150    (define canlu-1
     151      (nunjavni-secuxna
     152        (lambda () "canlu")
     153        (lambda (porsi mapti namapti) (canlu-70 porsi mapti namapti))))
     154    (define canlubu-33
     155      (nunjavni-secuxna
     156        (lambda () "canlubu")
     157        (lambda (porsi mapti namapti) (canlubu-71 porsi mapti namapti))))
     158    (define totoi-34
     159      (nunjavni-secuxna
     160        (lambda () "totoi")
     161        (lambda (porsi mapti namapti) (totoi-72 porsi mapti namapti))))
     162    (define CR-36
     163      (nunjavni-secuxna
     164        (lambda () "CR")
     165        (lambda (porsi mapti namapti) (CR-73 porsi mapti namapti))))
     166    (define LF-37
     167      (nunjavni-secuxna
     168        (lambda () "LF")
     169        (lambda (porsi mapti namapti) (LF-74 porsi mapti namapti))))
     170    (define CRLF-35
     171      (nunjavni-secuxna
     172        (lambda () "CRLF")
     173        (lambda (porsi mapti namapti) (CRLF-75 porsi mapti namapti))))
     174    (define FAhO-4
     175      (nunjavni-secuxna
     176        (lambda () "FAhO")
     177        (lambda (porsi mapti namapti) (FAhO-76 porsi mapti namapti))))
    82178    (define cfari-39
    83179      (nunjavni-morji
     
    661757    (define FAhO-76 (nunjavni-morji (morji-nunjavni-fanmo)))
    662758    (tolmohi-nunjavni)
    663     cfari-39))
     759    (nunjavni-secuxna (lambda () "cfari") cfari-39)))
  • release/4/genturfahi/trunk/chicken-csi.scm

    r21956 r22102  
    2020(include "morji.scm")
    2121(include "nunvalsi.scm")
     22(include "cfisisku.scm")
     23(include "junla.scm")
    2224(include "genturfahi.scm")
    2325(include "version.scm")
  • release/4/genturfahi/trunk/chicken-ext-peg.scm

    r21960 r22102  
    113113(require-extension ports)
    114114;(require-library extras)
     115(require-extension latch)
    115116(require-library sandbox)
    116117(require-library genturfahi)
     
    122123(import ports)           ; Chicken Scheme srfi-6 and port extensions
    123124;(import extras)         ; pretty-print, for debugging
     125(import latch)           ; let-once
    124126(import sandbox)
    125127(import genturfahi)
  • release/4/genturfahi/trunk/chicken-ext.scm

    r22055 r22102  
    101101   nunjavni-nastura
    102102
     103   nunjavni-secuxna
     104
    103105   ; morji
    104106   ;
     
    140142
    141143
     144   ; cfiselsisku
     145   cfisisku-datni
     146   nunjavni-cfisisku
     147
     148   ; junla
     149   junla-datni
     150   nunjavni-junla
     151
     152
    142153   ; secuxna
    143154   secuxna-start-production
     
    145156   secuxna-define-toplevel
    146157   secuxna-exit-status
     158   secuxna-debug-file
     159   secuxna-profile-file
    147160   secuxna-debug
    148161   secuxna-profile
     
    166179(require-extension srfi-13)
    167180(require-extension srfi-14)
     181(require-extension srfi-18)
    168182;(require-extension srfi-28)        ; built-in
    169183;(require-extension srfi-39)        ; built-in
    170184;(require-extension srfi-61)        ; built-in
    171185(require-extension srfi-69)
     186;(require-extension srfi-95)
     187(require-extension data-structures)
    172188(require-extension extras)
     189(require-extension latch)
    173190(require-extension ports)
    174191
     
    178195(import srfi-13)         ; string-copy
    179196(import srfi-14)         ; character set library
     197(import srfi-18)         ; multi-threading support
    180198;(import srfi-28)         ; basic format strings
    181199;(import srfi-39)         ; parameter objects
    182200;(import srfi-61)         ; A more general cond clause
    183201(import srfi-69)         ; basic hash tables
     202;(import srfi-95)         ; sorting and merging
     203(import data-structures) ; should be srfi-95
    184204(import extras)          ; format, pretty-print
     205(import latch)           ; let-once
    185206(import ports)           ; Chicken Scheme srfi-6 and port extensions
    186207
     
    193214(include "morji.scm")
    194215(include "nunvalsi.scm")
     216(include "cfisisku.scm")
     217(include "junla.scm")
    195218(include "genturfahi.scm")
    196219(include "version.scm"))
  • release/4/genturfahi/trunk/eval.scm

    r22055 r22102  
    4848(safe-environment-set!
    4949  genturfahi-env
     50  'output-file
     51  (lambda (file)
     52    (let ((port (open-output-file file)))
     53      (lambda () port))))
     54
     55(safe-environment-set!
     56  genturfahi-env
     57  'debug-file
     58  secuxna-debug-file)
     59
     60(safe-environment-set!
     61  genturfahi-env
     62  'profile-file
     63  secuxna-profile-file)
     64
     65(safe-environment-set!
     66  genturfahi-env
    5067  'debug
    5168  secuxna-debug)
  • release/4/genturfahi/trunk/genturfahi.meta

    r21794 r22102  
    44 (license "ISC")
    55 (depends sandbox srfi-14 srfi-37 srfi-69)
    6  (test-depends test)
     6 (test-depends test utils)
    77 (synopsis "lo ke pe'a jajgau ratcu ke'e genturfa'i"))
  • release/4/genturfahi/trunk/genturfahi.peg

    r22052 r22102  
    3030;; Enable debugging of the paser.
    3131;;
    32 ;; Describe the parse as it occurs, including
    33 ;; rule matches and failures, backtracking, memoization, &c.
    34 ;;
    35 ;; There may need to be a debug level.
    36 ;;
     32;; Describe the parse as it occurs, describing which rules matched
     33;; and which rules didn't.
     34;;
     35;{(debug-file "grammar-debug.scm")}
    3736;{(debug #f)}
    3837
    3938;; Enable profiling of the parser.
    4039;;
    41 ;; for each step in the parser, track:
    42 ;;
    43 ;;  * success or failure of rule
    44 ;;  * memoization
    45 ;;
     40;; Record the time expended by each rule determining whether it
     41;; matches.
     42;;
     43;{(profile-file "grammar-profile.scm")}
    4644;{(profile #f)}
     45
    4746
    4847;; Enable memoization of non-terminals.
  • release/4/genturfahi/trunk/genturfahi.scm

    r22053 r22102  
    2828;;
    2929(define (genturfahi javni)
     30  (define (cfisisku)
     31    (if (secuxna-debug)
     32        (call-with-output-file
     33          (secuxna-debug-file)
     34          (lambda (port)
     35            (pretty-print (cfisisku-datni) port)))))
     36
     37  (define (junla)
     38    (if (secuxna-profile)
     39        (call-with-output-file
     40          (secuxna-profile-file)
     41          (lambda (port)
     42            (pretty-print (junla-datni) port)))))
     43
    3044  ; generate the genturfa'i valsi.  Calling |nunvalsi| here
    3145  ; is where all of the samselpla specified in
     
    3751    (genturfahi-tolmohi)
    3852
     53    (cfisisku) ; if debugging is enabled, output the debugging report.
     54    (junla)    ; if profiling is enabled, output the profiling report.
     55
    3956    (values (javni-nunvalsi-val-filter nunvalsi)
    4057            (lerfu-porsi-string porsi)))
     
    4461    ; a new |porsi|.
    4562    (genturfahi-tolmohi)
     63
     64    (cfisisku) ; if debugging is enabled, output the debugging report.
     65    (junla)    ; if profiling is enabled, output the profiling report.
    4666
    4767    (values (secuxna-nonmatch-token) (lerfu-porsi-string porsi)))
  • release/4/genturfahi/trunk/genturfahi.setup

    r21822 r22102  
    1919       ; dynamic library (genturfahi)
    2020       ;
    21        ((dynld-name "genturfahi") ("chicken-ext.scm"
     21       ((dynld-name "genturfahi") ("cfisisku.scm"
     22                                   "chicken-ext.scm"
    2223                                   "chicken-conf.scm"
    2324                                   "chicken-declare.scm"
     
    2526                                   "genturfahi.scm"
    2627                                   "javni-valsi.scm"
     28                                   "junla.scm"
    2729                                   "lerfu-porsi.scm"
    2830                                   "nunjavni.scm"
     
    6870       ; static library (genturfahi)
    6971       ;
    70        ("genturfahi.o" ("chicken-ext.scm"
     72       ("genturfahi.o" ("cfisisku.scm"
     73                        "chicken-ext.scm"
    7174                        "chicken-conf.scm"
    7275                        "chicken-declare.scm"
     
    7477                        "genturfahi.scm"
    7578                        "javni-valsi.scm"
     79                        "junla.scm"
    7680                        "lerfu-porsi.scm"
    7781                        "nunjavni.scm"
  • release/4/genturfahi/trunk/nunjavni.scm

    r22053 r22102  
    3131                 (nunvalsi-lerfu lerfu))
    3232          (namapti porsi)))
    33     javni-lerfu))
     33    (nunjavni-secuxna
     34      (lambda ()
     35        (string-append "#\\" (make-string 1 lerfu)))
     36        javni-lerfu)))
    3437
    3538
     
    4346          (mapti (make-lerfu-porsi-pabalvi-lerfu porsi)
    4447                 (nunvalsi-. (lerfu-porsi-lerfu porsi)))))
    45     javni-.))
     48    (nunjavni-secuxna (lambda () "#\.") javni-.)))
    4649
    4750
     
    5356    (define (javni-e porsi mapti ignore-namapti)
    5457      (mapti porsi (nunvalsi-e empty-string)))
    55     javni-e))
     58    (nunjavni-secuxna (lambda () (make-string 2 #\")) javni-e)))
    5659
    5760
     
    6366    (define (javni-nil porsi mapti ignore-namapti)
    6467      (mapti porsi (nunvalsi-nil empty-list)))
    65     javni-nil))
     68    (nunjavni-secuxna (lambda () "()") javni-nil)))
    6669
    6770
     
    7780          (mapti porsi (nunvalsi-fanmo sentinel))
    7881          (namapti porsi)))
    79   javni-fanmo))
     82  (nunjavni-secuxna (lambda () "!.") javni-fanmo)))
    8083
    8184
     
    97100                   (nunvalsi-valsi valsi))
    98101            (namapti porsi))))
    99     javni-valsi))
     102    (nunjavni-secuxna
     103      (lambda ()
     104        (string-append (make-string 1 #\") valsi (make-string 1 #\")))
     105        javni-valsi)))
    100106
    101107
     
    118124
    119125      (mapti-char-set-* (char-set-* poi zva)))
    120     javni-char-set-*))
     126    (nunjavni-secuxna
     127      (lambda () (string-append "[" (char-set->string char-set) "]*"))
     128      javni-char-set-*)))
    121129
    122130
     
    130138        (if (char-set-contains? char-set (string-ref poi zva))
    131139            (javni-char-set-* porsi
    132                              mapti
    133                              namapti
    134                              poi
    135                              (+ 1 zva))
     140                              mapti
     141                              namapti
     142                              poi
     143                              (+ 1 zva))
    136144            (namapti porsi))))
    137     javni-char-set-+))
     145    (nunjavni-secuxna
     146      (lambda () (string-append "[" (char-set->string char-set) "]+"))
     147      javni-char-set-+)))
    138148
    139149;; XXX: inline optimize
     
    148158                   (nunvalsi-char-set (lerfu-porsi-lerfu porsi)))
    149159            (namapti porsi))))
    150     javni-char-set))
     160    (nunjavni-secuxna
     161      (lambda () (string-append "[" (char-set->string char-set) "]"))
     162      javni-char-set)))
    151163
    152164;; zero-or-more: parse zero or more javni out of the |lerfu-porsi|.
     
    185197
    186198      (javni porsi mapti-* namapti-*))
    187     javni-*))
     199    (nunjavni-secuxna (lambda () "*") javni-*)))
    188200
    189201
     
    201213                   fanmo: fanmo)))
    202214      (javni porsi mapti-+ namapti))
    203     javni-+))
     215    (nunjavni-secuxna (lambda () "+") javni-+)))
    204216
    205217
     
    224236
    225237      (javni porsi mapti-? namapti-?))
    226     javni-?))
     238    (nunjavni-secuxna (lambda () "?") javni-?)))
    227239
    228240
     
    238250
    239251    (javni porsi mapti-& namapti-&))
    240   javni-&)
     252  (nunjavni-secuxna (lambda () "&") javni-&))
    241253
    242254
     
    253265
    254266    (javni porsi mapti-! namapti-!))
    255   javni-!)
     267  (nunjavni-secuxna (lambda () "!") javni-!))
    256268
    257269
     
    312324                                         fanmo: (cdr fanmo)))))
    313325              (javni porsi mapti-je namapti-je)))))
    314   javni-je))
     326  (nunjavni-secuxna (lambda () "je") javni-je)))
    315327
    316328
     
    341353                                  (javni-jonai porsi mapti namapti rest))))
    342354              (javni porsi mapti-jonai namapti-jonai)))))
    343     javni-jonai))
     355    (nunjavni-secuxna (lambda () "jonai") javni-jonai)))
    344356
    345357
     
    487499    (javni porsi mapti-nastura namapti))
    488500  javni-nastura)
     501
     502;; decorate each rule according to the options specified.
     503;;
     504(define (nunjavni-secuxna nuncmene javni #!rest cmene-sumti)
     505  (define (cfisisku cmene javni)
     506    (if (secuxna-debug)
     507        (apply nunjavni-cfisisku cmene javni cmene-sumti)
     508        javni))
     509
     510  (define (junla cmene javni)
     511    (if (secuxna-profile)
     512        (apply nunjavni-junla cmene javni cmene-sumti)
     513        javni))
     514
     515  (if (or (secuxna-debug) (secuxna-profile))
     516      (let ((cmene (nuncmene)))
     517            (cfisisku cmene (junla cmene javni)))
     518      javni))
  • release/4/genturfahi/trunk/samselpla.scm

    r22075 r22102  
    6969        (define (suhorecmene-e-toplevel tamgau nunselci-cmene)
    7070          (map (lambda (tamgau cmene)
    71                   `(define ,tamgau ,cmene))
     71                  `(define
     72                     ,tamgau
     73                     (nunjavni-secuxna (lambda () ,selci-cmene) ,cmene)))
    7274               tamgau nunselci-cmene))
    7375
    7476        (define (suhorecmene-enai-toplevel nunselci-cmene)
    75           `((values ,@nunselci-cmene)))
     77          `((values ,@(map (lambda (tamgau cmene)
     78                             `(nunjavni-secuxna
     79                                (lambda () ,selci-cmene)
     80                                ,cmene))))))
    7681
    7782        (define (pacmene-e-toplevel tamgau nunselci-cmene)
    78           `((define ,tamgau ,nunselci-cmene)))
     83          `((define
     84              ,tamgau
     85              (nunjavni-secuxna (lambda () selci-cmene) ,nunselci-cmene))))
    7986
    8087        (define (pacmene-enai-toplevel nunselci-cmene)
    81           `(,nunselci-cmene))
     88          `((nunjavni-secuxna (lambda () ,selci-cmene) ,nunselci-cmene)))
    8289
    8390        ; reset the start production.
     
    138145          ; outer letrec (which stores references)
    139146          ;
    140     (list `(define (,symbol-nunselci porsi mapti namapti)
    141              (,symbol porsi mapti namapti))
     147    (list `(define ,symbol-nunselci
     148             (nunjavni-secuxna
     149               (lambda () ,naselci)
     150               (lambda (porsi mapti namapti)
     151                 (,symbol porsi mapti namapti))))
    142152
    143153          ; inner let (which stores grammar rules)
  • release/4/genturfahi/trunk/secuxna.scm

    r22055 r22102  
    3939(define secuxna-exit-status      (make-parameter 0))
    4040
     41(define secuxna-debug-file       (make-parameter "grammar-debug.scm"))
     42(define secuxna-profile-file     (make-parameter "grammar-profile.scm"))
     43
    4144(define secuxna-debug            (make-parameter #f))
    4245(define secuxna-profile          (make-parameter #f))
Note: See TracChangeset for help on using the changeset viewer.