Andy Wingo
718bc349af
reformat and reflow api-peg.texi
...
* doc/ref/api-peg.texi: Reformat and reflow.
2013-01-16 10:11:42 +01:00
Andy Wingo
c7ed2190cf
peg: remove error-val
...
* module/ice-9/peg.scm (error-val): Remove needless definition.
2013-01-16 10:11:42 +01:00
Andy Wingo
3be2799eaf
peg: refactor peg-sexp-compile to operate on syntax directly
...
* module/ice-9/peg.scm (cg-generic-ret): Remove unused for-syntax
argument.
(peg-sexp-compile): Take the pattern as syntax directly, and use
syntax-case to destructure it and dispatch to the code generators.
(cg-and, cg-and-int, cg-or, cg-or-int): Refactor to operate on syntax
instead of on s-expressions.
(cg-body): Likewise; though this was a larger refactor.
(define-nonterm, peg-match): Adapt to peg-sexp-compile calling
convention change.
(peg-string-compile): Likewise, and just take the grammar as a syntax
object.
2013-01-16 10:11:41 +01:00
Andy Wingo
5041b82067
peg: cg-string, cg-peg-any, cg-range: remove needless for-syntax arg
...
* module/ice-9/peg.scm (cg-string, cg-peg-any, cg-range): Remove
unnecessary for-syntax arg.
(peg-sexp-compile): Adapt.
2013-01-16 10:11:41 +01:00
Andy Wingo
c5b85eceba
peg: change some instances of "match" to "pat"
...
* module/ice-9/peg.scm (cg-string): Rename "match" to "pat".
(peg-sexp-compile, cg-body-test, cg-body, define-nonterm): Likewise.
2013-01-16 10:11:40 +01:00
Andy Wingo
63a1336de7
remove cggl, cg-generic-lambda
...
* module/ice-9/peg.scm (cg-generic-lambda, cggl): Remove these helpers,
they are no longer needed.
(cg-generic-ret): Remove optimization for particular cg- routines, as
it's no longer needed.
2013-01-16 10:11:40 +01:00
Andy Wingo
e9722ec0aa
peg: more cggl / cggr excisions
...
* module/ice-9/peg.scm (cg-peg-any): Don't use cggr.
(cg-range): Don't use cggl or cggr.
2013-01-16 10:11:39 +01:00
Andy Wingo
102d022f53
peg: cg-string does not use cggr
...
* module/ice-9/peg.scm (cg-string): Don't use cggr. Interesting to see
what it actually generates.
2013-01-16 10:11:39 +01:00
Andy Wingo
67ac87f96d
peg: cg-peg-any does not use cggl
...
* module/ice-9/peg.scm (cg-peg-any): Don't use cggl.
2013-01-16 10:11:39 +01:00
Andy Wingo
7b746f4090
peg: cg-string without cggl
...
* module/ice-9/peg.scm (cg-string): Refactor to not use cggl.
2013-01-16 10:11:38 +01:00
Andy Wingo
990b24b254
peg: cg-string improvement
...
* module/ice-9/peg.scm (cg-string): Use the more efficient string= with
range args, rather than string=? and substring.
2013-01-16 10:11:38 +01:00
Andy Wingo
87c3ef2f95
peg: helper macro docstrings
...
* module/ice-9/peg.scm: Convert the helper macro comments into
docstrings.
2013-01-16 10:11:37 +01:00
Andy Wingo
09a6a7a44a
peg: module-ref cleanup
...
* module/ice-9/peg.scm (cg-generic-ret, cg-and-int, cg-body-test):
Remove a few needless @ or @@ forms.
2013-01-16 10:11:37 +01:00
Andy Wingo
49db248111
peg: remove get-code debugging foo
...
* module/ice-9/peg.scm (define-nonterm): Don't stash the code in a
symbol property.
(get-code): Remove.
2013-01-16 10:11:37 +01:00
Andy Wingo
a907bce657
peg: more syntax helper cleanup
...
* module/ice-9/peg.scm (single-filter, push-not-null!): Use
syntax-rules, and move outside the eval-when.
2013-01-16 10:11:36 +01:00
Andy Wingo
bb7ff21a77
peg: else for default cond clauses, not #t
...
* module/ice-9/peg.scm: Change default cases of `cond' to use `else'
instead of #t.
2013-01-16 10:11:36 +01:00
Andy Wingo
b5ebb8abad
peg; syntax helper cleanups
...
* module/ice-9/peg.scm (until, single?, push!): Move outside the
eval-when. Use syntax-rules, and single? is faster now.
2013-01-16 10:11:35 +01:00
Andy Wingo
3c8963de27
peg: cleanups
...
* module/ice-9/peg.scm (until): Rename from until-works, and be
functional (and faster).
(peg-match): Adapt.
2013-01-16 10:11:35 +01:00
Andy Wingo
0d2f21fc81
peg: define-module cleanup
...
* module/ice-9/peg.scm: Fix up define-module block.
2013-01-16 10:11:35 +01:00
Noah Lavine
9ca71e7b84
peg: let cleanups
...
* module/ice-9/peg.scm (cg-string, cg-peg-any, cg-range): Remove some
unnecessary lets.
2013-01-16 10:11:34 +01:00
Noah Lavine
18905baf6e
peg: remove unhygienic safe-bind, safe-bind-f
...
* module/ice-9/peg.scm (safe-bind, safe-bind-f): Remove.
2013-01-16 10:11:34 +01:00
Noah Lavine
ac8a071390
peg: remove unused nonhygienic expander helpers
...
* module/ice-9/peg.scm (cggl, cggr): Remove, and rename the cggl-syn and
cggr-syn to take their place.
2013-01-16 10:11:33 +01:00
Noah Lavine
84cb143eb4
peg: more helpers returning syntax
...
* module/ice-9/peg.scm (cg-body, cg-body-success, cg-body-more)
(cg-body-ret): Return syntax instead of s-expressions.
2013-01-16 10:11:33 +01:00
Noah Lavine
8e8de46ec6
peg: cg-or, cg-or-int return syntax
...
* module/ice-9/peg.scm (cg-or, cg-or-int): Return syntax instead of
s-expressions.
(peg-sexp-compile): Adapt.
2013-01-16 10:11:33 +01:00
Noah Lavine
00e227f779
peg: hygiene in cg-and, cg-and-int
...
* module/ice-9/peg.scm (cg-and, cg-and-int): Use cggr-syn instead of
cggr, and also return syntax now instead of s-expressions.
2013-01-16 10:11:32 +01:00
Noah Lavine
8b52357e88
peg: hygiene in cg-range
...
* module/ice-9/peg.scm (cg-range): Use cggl-syn and cggr-syn.
2013-01-16 10:11:32 +01:00
Noah Lavine
febe6dadab
peg: hygiene in cg-peg-any
...
* module/ice-9/peg.scm (cg-peg-any): Use cggl-syn and cggr-syn.
2013-01-16 10:11:31 +01:00
Noah Lavine
6f6c7d15a2
peg: more hygiene in cg-string
...
* module/ice-9/peg.scm (cggl-syn, cggr-syn): New functions, equivalent
to cggl and cggr except that they operate on syntax instead of
s-expressions.
(cg-string): Use them here.
2013-01-16 10:11:31 +01:00
Noah Lavine
0b61da75fe
peg: lower datum->syntax in cg-range case
...
* module/ice-9/peg.scm (cg-range): Datum->syntax here...
(peg-sexp-compile): ...instead of here.
2013-01-16 10:11:31 +01:00
Noah Lavine
6a297af101
peg: lower datum->syntax in cg-peg-any case
...
* module/ice-9/peg.scm (cg-peg-any): Datum->syntax here...
(peg-sexp-compile): ...instead of here.
2013-01-16 10:11:30 +01:00
Noah Lavine
b987677437
peg: lower datum->syntax in cg-string case
...
* module/ice-9/peg.scm (cg-string): Return syntax instead of
s-expressions.
(peg-sexp-compile): No need for datum->string in cg-string case.
2013-01-16 10:11:30 +01:00
Noah Lavine
2a88fe3046
peg: peg-sexp-compile datum->syntax refactor
...
* module/ice-9/peg.scm (peg-sexp-compile): Push datum->syntax call
through cond expression in peg-sexp-compile. This is a preliminary
move so that I can convert the code-generating functions into
syntax-generating functions one by one.
2013-01-16 10:11:29 +01:00
Noah Lavine
fe50d7ee1a
peg: compilers return syntax instead of s-expressions
...
* module/ice-9/peg.scm (peg-sexp-compile, peg-string-compile): Return
syntax instead of s-expressions.
2013-01-16 10:11:29 +01:00
Noah Lavine
ccab173a5b
peg: beginnings of hygiene
...
* module/ice-9/peg.scm: Pass for-syntax argument to all of the
code-generating functions.
2013-01-16 10:11:29 +01:00
Noah Lavine
c9a6f4befa
peg: more syntax-for-non-cache-case cleanups
...
* module/ice-9/peg.scm (syntax-for-non-cache-case): More cleanups.
2013-01-16 10:11:28 +01:00
Noah Lavine
8b38945119
peg: clean up syntax-for-non-cache-case
...
* module/ice-9/peg.scm (syntax-for-non-cache-case): Cleanups.
2013-01-16 10:11:28 +01:00
Noah Lavine
bce6e5d3f2
peg: use quasisyntax instead of safe-bind
...
* module/ice-9/peg.scm (syntax-for-non-cache-case): Use quasisyntax
instead of safe-bind.
2013-01-16 10:11:27 +01:00
Noah Lavine
c011c0b6ef
peg: define-nonterm returns syntax instead of s-expression
...
* module/ice-9/peg.scm (define-nonterm, syntax-for-non-cache-case):
Returns syntax instead of an s-expression.
2013-01-16 10:11:27 +01:00
Noah Lavine
f4576d8161
peg: split define-nonterm into two functions for better readability.
...
* module/ice-9/peg.scm (define-nonterm): Split for readability.
2013-01-16 10:11:27 +01:00
Andy Wingo
add20d35be
peg: add copyright header
...
* module/ice-9/peg.scm: Add copyright header.
2013-01-16 10:11:26 +01:00
Andy Wingo
eee0877c3e
add PEG parser generator
...
* module/ice-9/peg.scm: New file.
* module/Makefile.am: Add to build.
* doc/ref/Makefile.am:
* doc/ref/api-peg.texi:
* doc/ref/guile.texi: Add documentation for PEG parser.
* test-suite/Makefile.am:
* test-suite/tests/peg.bench:
* test-suite/tests/peg.test: Add tests, and a benchmark.
2013-01-16 10:11:15 +01:00
Andy Wingo
58c4a39d98
an end to the generated-documentation experiment
...
* doc/ref/statprof.texi:
* doc/ref/sxml.texi:
* doc/ref/texinfo.texi: New files, containing the documentation that was
previously generated from source and rendered into
standard-library.texi. The documentation is still horrible, but at
least now it is user-editable.
2013-01-16 10:03:44 +01:00
Andy Wingo
2f0db5ee96
update make-struct docstring
...
* libguile/struct.c (scm_make_struct): Remove reference to deprecated
make-vtable-vtable.
2013-01-16 09:17:35 +01:00
Greg Benison
5156f4d745
doc/ref/hierarchy.png: conform to hierarchy.txt and manual
...
hierarchy.png (and .pdf, .eps) were changed to add one node
to the graph, getting them in sync with hierarchy.txt
(and the GOOPS section of the manual).
Also added hierarchy.dot, a file to generate said figure
using graphviz.
2013-01-15 19:17:55 +01:00
Andy Wingo
e211d69d9d
fix string->bytevector for utf-8 and non-error conversion strategies
...
* module/ice-9/iconv.scm (call-with-encoded-output-string):
(string->bytevector, bytevector->string): Only call string->utf8 and
utf8->string if the conversion strategy is `error'.
2013-01-15 16:41:20 +01:00
Andy Wingo
449ca87bdb
ASCII is not ISO-8859-1
...
* libguile/ports.c (scm_i_set_default_port_encoding): An encoding of
ASCII is not the same as ISO-8859-1, because it does not allow
characters above 128. Fix this.
2013-01-15 16:37:01 +01:00
Andy Wingo
e5cef86e9c
fix string->bytevector for utf-8 and non-error conversion strategies
...
* module/ice-9/iconv.scm (call-with-encoded-output-string):
(string->bytevector, bytevector->string): Only call string->utf8 and
utf8->string if the conversion strategy is `error'.
2013-01-15 16:37:01 +01:00
Andy Wingo
686df5162d
string->utf8 implementation uses scm_from_utf8_stringn
...
* libguile/bytevectors.c (UTF_TO_STRING): Use scm_from_utf8_stringn.
2013-01-15 16:36:55 +01:00
Andy Wingo
b39685c6da
scm_from_stringn and scm_to_stringn encoding args are never NULL
...
* libguile/strings.c (scm_from_stringn, scm_to_stringn): Encoding
argument cannot be NULL. Instead check that the encoding was
ISO-8859-1.
2013-01-15 16:32:52 +01:00
Andy Wingo
d1b9f8ace9
Port encodings cannot be NULL
...
* libguile/ports.c (scm_c_read_unlocked, scm_ungetc_unlocked):
* libguile/read.c (scm_read_character):
* libguile/vports.c (sf_fill_input): Port encodings cannot be NULL any
more, now that encodings are canonicalized, so simplify these.
2013-01-15 16:32:52 +01:00