1
0
Fork
You've already forked guile-syntax-parse
0
A mirror of Stefan Israelsson Tampe's syntax-parse for Guile. https://gitlab.com/guile-syntax-parse/guile-syntax-parse
  • Scheme 95.2%
  • M4 4.4%
  • Makefile 0.3%
Find a file
Stefan Israelsson Tampe 8eb3004674 non declarative modules
2022年01月13日 21:44:05 +01:00
compat/racket non declarative modules 2022年01月13日 21:44:05 +01:00
examples non declarative modules 2022年01月13日 21:44:05 +01:00
m4 missing pieces 2014年02月28日 21:00:00 +01:00
syntax non declarative modules 2022年01月13日 21:44:05 +01:00
tests ijp:s bugfixes and test cases added + one of my own 2012年05月12日 00:46:37 +02:00
.gitignore added changes from djurfelds patch 2018年11月05日 14:27:27 +01:00
acinclude.m4 prepare to work with guile 3.0 2018年11月04日 19:33:22 +01:00
ChangeLog autotools installer 2014年02月24日 22:22:42 +01:00
configure.ac prepare to work with guile 3.0 2018年11月04日 19:33:22 +01:00
COPYING.LIB Add the LGPL v2 license from racket 2012年01月22日 22:20:27 +01:00
env.in autotools installer 2014年02月24日 22:22:42 +01:00
guile.am autotools installer 2014年02月24日 22:22:42 +01:00
LICENSE.TXT Add the LGPL v2 license from racket 2012年01月22日 22:20:27 +01:00
Makefile.am fix for making it work under guile-2.2 2017年06月10日 20:31:18 +02:00
pkg-list.scm non declarative modules 2022年01月13日 21:44:05 +01:00
README README additions 2012年02月12日 18:17:49 +01:00
TODO Added TODI file 2014年03月02日 19:15:36 +01:00

Guile Syntax PArse should work with guile 2.0.4 and higher
Put the syntax directory in the load pathdirectory and then use
 (use-modules (syntax parse))
For documentation see the racket documentation at
 
 http://docs.racket-lang.org/syntax/stxparse.html
Examples can be seen in syntax/parse/test.scm
There are some deviations from the racket syntax,
* there is no notion of phases in guile
* regexp convetions assumes a regexp literal, use strings
 representing the regexp in stead
* define-syntax-class, define-syntax-class-splicing, define-conventions
 and define-literal-set cannot be used for local definitions in stead
 use corresponding with-syntax-class, with-syntax-class-splicing, 
 with-syntax-conventions, with-syntax-literal-set it's the same syntax
 but with the usual extra argument e.g.
 
 (define-syntax-class a ...) ...
 =>
 (with-syntax-class ((a ...) ...) code ...)
 For the case with many with statement we can do as well
 (with-syntax-data ((class a ...) 
 (splicing b ...) 
 (literal-set c ...)
 (conventions d ...))
 code ...)
 e.g. any combinations is allowd. This has * functionality like let*
 and is a little suger end ekvivalent to using the more specific with
 statements but with the benefit of shallow nesting.
* In logic that could be a general value if the expression form is
 either (syntax .) or (quasisyntax .) then the expresion will be 
 assumed to be a syntax and a implicit with-syntax is issued. It's unclear
 how this is controlled in racket.
* struct matching is not suported, guile does not handle structs well
 when inserted as a datum for syntax objects there are two reasons
 1. struct literals cannot be handled as atom data in the .go file but
 always has to be constructed at loading
 2. to destruct a struct one would want to be able to do it as with a 
 list with stx-car stx-cdr etc, these accessors handles syntax information
 and location information, a pure syntax-e and a struct accessor looses
 syntax features and render using struct elements unuseful. Use lists 
 instead.
 As a conclusion we do not support these feature in guile-syntax-parse until
 guile get's the needed features.
* similar argument applies to boxes.
* kernal-literals literal set is not supported because this is a racket feature
* contracts are not supported and the experimental features are not supported
* the experimental features are not supported