source: project/release/4/genturfahi/trunk/genturfahi.setup @ 22102

Last change on this file since 22102 was 22102, checked in by Alan Post, 10 years ago

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.

File size: 5.4 KB
Line 
1(include "version.scm")
2(include "chicken-conf.scm")
3
4       ; genturfahi executable
5       ;
6(make (("genturfahi" ("chicken-cmd.scm"
7                      "chicken-conf.scm"
8                      "chicken-declare.scm"
9                      "license.scm"
10                      "main-srfi-37.scm"
11                      "genturfahi.meta"
12                      "genturfahi.setup"
13                      (dynld-name "genturfahi")
14                      (dynld-name "genturfahi-peg"))
15       (compile ,@genturfahi-cscflags
16                -o "genturfahi"
17                "chicken-cmd.scm"))
18
19       ; dynamic library (genturfahi)
20       ;
21       ((dynld-name "genturfahi") ("cfisisku.scm"
22                                   "chicken-ext.scm"
23                                   "chicken-conf.scm"
24                                   "chicken-declare.scm"
25                                   "chicken-platform.scm"
26                                   "genturfahi.scm"
27                                   "javni-valsi.scm"
28                                   "junla.scm"
29                                   "lerfu-porsi.scm"
30                                   "nunjavni.scm"
31                                   "morji.scm"
32                                   "nunvalsi.scm"
33                                   "secuxna.scm"
34                                   "version.scm"
35                                   "genturfahi.meta"
36                                   "genturfahi.setup")
37       (begin (compile -s
38                       ,@genturfahi-cscflags
39                       -j genturfahi
40                       -o ,(dynld-name "genturfahi")
41                       chicken-ext.scm)
42              (compile -s
43                       ,@genturfahi-cscflags
44                       -o ,(dynld-name "genturfahi.import")
45                       genturfahi.import.scm)))
46
47       ; dynamic library (PEG parser)
48       ;
49       ((dynld-name "genturfahi-peg") ("bootstrap.scm"
50                                       "chicken-ext-peg.scm"
51                                       "chicken-conf.scm"
52                                       "chicken-declare.scm"
53                                       "chicken-platform.scm"
54                                       "eval.scm"
55                                       "peg.scm"
56                                       "samselpla.scm"
57                                       "genturfahi.meta"
58                                       "genturfahi.setup"
59                                       (dynld-name "genturfahi"))
60       (begin (compile -s
61                       ,@genturfahi-cscflags
62                       -j genturfahi-peg
63                       -o ,(dynld-name "genturfahi-peg")
64                       chicken-ext-peg.scm)
65              (compile -s
66                       ,@genturfahi-cscflags
67                       -o ,(dynld-name "genturfahi-peg.import")
68                       genturfahi-peg.import.scm)))
69
70       ; static library (genturfahi)
71       ;
72       ("genturfahi.o" ("cfisisku.scm"
73                        "chicken-ext.scm"
74                        "chicken-conf.scm"
75                        "chicken-declare.scm"
76                        "chicken-platform.scm"
77                        "genturfahi.scm"
78                        "javni-valsi.scm"
79                        "junla.scm"
80                        "lerfu-porsi.scm"
81                        "nunjavni.scm"
82                        "morji.scm"
83                        "nunvalsi.scm"
84                        "secuxna.scm"
85                        "version.scm"
86                        "genturfahi.meta"
87                        "genturfahi.setup")
88       (compile -c
89                ,@genturfahi-cscflags
90                -unit genturfahi
91                -o "genturfahi.o"
92                "chicken-ext.scm"))
93
94       ; static library (PEG parser)
95       ;
96       ("genturfahi-peg.o" ("bootstrap.scm"
97                            "chicken-ext-peg.scm"
98                            "chicken-conf.scm"
99                            "chicken-declare.scm"
100                            "chicken-platform.scm"
101                            "eval.scm"
102                            "peg.scm"
103                            "samselpla.scm"
104                            "genturfahi.meta"
105                            "genturfahi.setup")
106       (compile -c
107                ,@genturfahi-cscflags
108                -unit genturfahi-peg
109                -o "genturfahi-peg.o"
110                "chicken-ext-peg.scm"))
111
112       ("license.scm" ("LICENSE")
113        (call-with-output-file "license.scm"
114          (lambda (port)
115            (write
116              `(define genturfahi-license ,(read-all "LICENSE"))
117              port)))))
118
119      `("genturfahi"
120        ,(dynld-name "genturfahi")
121        ,(dynld-name "genturfahi-peg")
122        "genturfahi.o"
123        "genturfahi-peg.o"))
124
125(install-extension
126  ; lo cmene vi pagbu
127  'genturfahi
128
129  ; lo datnyvei vi pagbu
130  `("genturfahi.o"
131    ,(dynld-name "genturfahi")
132    ,(dynld-name "genturfahi.import"))
133
134  ; lo se ckaji vi pagbu
135  `((static "genturfahi.o")
136    (version ,genturfahi-version)))
137
138(install-extension
139  ; lo cmene vi pagbu
140  'genturfahi-peg
141
142  ; lo datnyvei vi pagbu
143  `("genturfahi-peg.o"
144    ,(dynld-name "genturfahi-peg")
145    ,(dynld-name "genturfahi-peg.import"))
146
147  ; lo se ckaji vi pagbu
148  `((static "genturfahi-peg.o")
149    (version ,genturfahi-version)))
150
151(install-program
152  ; lo cmene vi pagbu
153  'genturfahi-cmd
154
155  ; lo datnyvei vi pagbu
156  `("genturfahi")
157
158  ; lo se ckaji vi pagbu
159  `((version ,genturfahi-version)))
Note: See TracBrowser for help on using the repository browser.