Noah Lavine
74393a53cf
Remove eval-when
...
* module/ice-9/peg.scm: remove the eval-when statement
2013-01-16 10:11:43 +01:00
Noah Lavine
44bd21ae7b
Factor PEG Structure
...
* modules/ice-9/peg.scm: remove the part that defines a match structure
* modules/ice-9/peg/match-record.scm: and put it here
2013-01-16 10:11:43 +01:00
Noah Lavine
f3f41b9226
Factor PEG Functions
...
* module/ice-9/peg.scm: take out the functions for simplifying trees
* module/ice-9/peg/simplify-tree.scm: and put them here
2013-01-16 10:11:43 +01:00
Noah Lavine
5e16c41703
Separate PEG Strings
...
* module/ice-9/peg.scm: remove functions dealing with PEGs as strings
* module/ice-9/peg/string-peg.scm: and put them here
2013-01-16 10:11:43 +01:00
Noah Lavine
00923497d2
Make Macros Hygienic
...
* modules/ice-9/peg.scm: convert the unhygienic macros that generate code
for string PEGs to use hygiene.
2013-01-16 10:11:43 +01:00
Noah Lavine
86849e2c19
Rename in peg.scm
...
* module/ice-9/peg.scm: rename peg-parse-* functions to avoid confusion
with what PEGs do.
2013-01-16 10:11:42 +01:00
Noah Lavine
bff3ccd957
Split peg.scm
...
* module/ice-9/peg.scm: move code generators to new module
* module/ice-9/peg/codegen.scm: new module for PEG code generators
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
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
e2551947dd
All r6rs ports are both textual and binary
...
* module/rnrs/io/ports.scm (binary-port?): All ports are binary _and_
textual. Bytevectors and strings may be written to or read from
either.
(port-transcoder): All textual ports (all ports) have transcoders of
some sort.
* test-suite/tests/r6rs-ports.test ("8.2.6 Input and output ports"):
Remove test that binary ports don't have transcoders, because binary
ports are also textual.
2013-01-15 16:32:52 +01:00
Andy Wingo
b4fa6cc909
Merge remote-tracking branch 'origin/stable-2.0'
...
There is a failing test due to a scm_from_utf8_stringn bug brought out
by the iconv test that will be fixed in the next commit.
Conflicts:
libguile/deprecated.h
module/ice-9/deprecated.scm
2013-01-15 10:45:39 +01:00