source: project/release/4/genturfahi/trunk/chicken-ext.scm @ 25738

Last change on this file since 25738 was 25738, checked in by Alan Post, 9 years ago

genturfa'i: use list, rather than vector, for parser input.

This converts several of the now o(n) routines back to o(1). I
noticed the performance hit, just testing as I converted this
code.

Rather than storing a vector and an index, we store the current
position in the list and advance it as we parse. The grouping
code is now immeasurably slower. You won't notice.

File size: 4.8 KB
Line 
1;;;;
2;;;; genturfahi - lo la .ckim. ke pe'a jajgau ratcu ke'e genturfa'i
3;;;;            `-> A Scheme packrat parser.
4;;;;
5;;;; Copyright (c) 2010 ".alyn.post." <alyn.post@lodockikumazvati.org>
6;;;;
7;;;; Permission to use, copy, modify, and/or distribute this software for any
8;;;; purpose with or without fee is hereby granted, provided that the above
9;;;; copyright notice and this permission notice appear in all copies.
10;;;;
11;;;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12;;;; WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13;;;; MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14;;;; ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15;;;; WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16;;;; ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17;;;; OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18;;;;
19
20(module genturfahi
21  (genturfahi
22   genturfahi*
23
24   genturfahi-version
25   genturfahi-version-major
26   genturfahi-version-minor
27   genturfahi-version-patch
28
29   ; lerfu-porsi
30   ;
31   make-lerfu-porsi-string
32   make-lerfu-porsi-port
33   lerfu-porsi-string
34
35   lerfu-porsi-fanmo?
36
37   span-kuspe
38
39   ; javni-valsi
40   ;
41   make-javni-valsi
42   javni-valsi?
43   javni-valsi-cme
44   javni-valsi-val*
45
46   javni-nastura?
47
48   javni-valsi-val
49   javni-rodavalsi
50   javni-rodavalsi-je
51   javni-rodavalsi-*
52   javni-rodavalsi-samselpla
53
54   javni-valsi->string
55
56
57   ; nunjavni
58   ;
59   nunjavni-lerfu
60   nunjavni-.*
61   nunjavni-.+
62   nunjavni-.kuspe
63   nunjavni-.
64   nunjavni-e
65   nunjavni-nil
66   nunjavni-fanmo
67   nunjavni-valsi
68   nunjavni-char-set-*
69   nunjavni-char-set-+
70   nunjavni-char-set-kuspe
71   nunjavni-char-set
72   nunjavni-*
73   nunjavni-+
74   nunjavni-kuspe
75   nunjavni-?
76   nunjavni-&
77   nunjavni-!
78   nunjavni-je
79   nunjavni-jonai
80   nunjavni-porjahe
81
82   genturfahi-semorji
83   genturfahi-tolmohi
84   nunjavni-morji
85   nunjavni-samselpla
86   nunjavni-samselpla-cabna
87   nunjavni-cmene
88   nunjavni-nastura
89
90   nunjavni-secuxna
91
92   ; morji
93   ;
94   tolmohi-nunjavni
95   nunmorji-nunjavni
96
97   morji-nunjavni-lerfu
98   morji-nunjavni-.*
99   morji-nunjavni-.+
100   morji-nunjavni-.kuspe
101   morji-nunjavni-.
102   morji-nunjavni-e
103   morji-nunjavni-nil
104   morji-nunjavni-fanmo
105   morji-nunjavni-valsi
106   morji-nunjavni-char-set-*
107   morji-nunjavni-char-set-+
108   morji-nunjavni-char-set-kuspe
109   morji-nunjavni-char-set
110   morji-nunjavni-*
111   morji-nunjavni-+
112   morji-nunjavni-kuspe
113   morji-nunjavni-?
114   morji-nunjavni-&
115   morji-nunjavni-!
116   morji-nunjavni-je
117   morji-nunjavni-jonai
118   morji-nunjavni-porjahe
119
120   morji-nunjavni-samselpla
121   morji-nunjavni-samselpla-cabna
122   morji-nunjavni-cmene
123   morji-nunjavni-nastura
124
125
126   ; nunvalsi
127   ;
128   make-nunvalsi
129   make-nunvalsi-predicate
130   venunjmina-nunvalsi
131   venunjmina-rodavalsi-*
132   venunjmina-rodavalsi-je
133   novejmina-nunvalsi
134
135
136   ; cfiselsisku
137   cfisisku-datni
138   nunjavni-cfisisku
139
140   ; junla
141   junla-datni
142   nunjavni-junla
143
144
145   ; secuxna
146   secuxna-start-production
147   secuxna-define-name
148   secuxna-define-toplevel
149   secuxna-exit-status
150   secuxna-debug-file
151   secuxna-profile-file
152   secuxna-debug
153   secuxna-profile
154   secuxna-no-memoize
155   secuxna-sentinel
156   secuxna-empty-string
157   secuxna-empty-list
158   secuxna-?-default
159   secuxna-*-default
160   secuxna-nonmatch-token
161   secuxna-nastura)
162
163(import chicken)
164(import scheme)
165
166(include "chicken-declare.scm")
167
168(require-extension utf8)
169
170(require-extension srfi-1)
171;(require-extension srfi-6)         ; built-in
172;(require-extension srfi-9)         ; built-in
173(require-extension utf8-srfi-13)
174(require-extension utf8-srfi-14)
175(require-extension srfi-18)
176;(require-extension srfi-28)        ; built-in
177;(require-extension srfi-39)        ; built-in
178(require-extension srfi-69)
179;(require-extension srfi-95)
180(require-extension data-structures)
181(require-extension extras)
182(require-extension matchable)
183(require-extension ports)
184
185(import utf8)
186(import srfi-1)          ; filter
187;(import srfi-6)          ; string ports
188;(import srfi-9)          ; define-record-type
189(import utf8-srfi-13)    ; string-copy
190(import utf8-srfi-14)    ; character set library
191(import srfi-18)         ; multi-threading support
192;(import srfi-28)         ; basic format strings
193;(import srfi-39)         ; parameter objects
194(import srfi-69)         ; basic hash tables
195;(import srfi-95)         ; sorting and merging
196(import data-structures) ; should be srfi-95
197(import extras)          ; format, pretty-print
198(import matchable)
199(import ports)           ; Chicken Scheme srfi-6 and port extensions
200
201(include "chicken-platform.scm")
202
203(include "lerfu-porsi.scm")
204(include "javni-valsi.scm")
205(include "secuxna.scm")
206(include "nunjavni.scm")
207(include "morji.scm")
208(include "nunvalsi.scm")
209(include "cfisisku.scm")
210(include "junla.scm")
211(include "genturfahi.scm")
212(include "version.scm"))
Note: See TracBrowser for help on using the repository browser.