Preliminary syntax ducking.
This commit is contained in:
parent
396e2d9896
commit
e6d798bc2a
6 changed files with 43 additions and 9 deletions
|
@ -356,3 +356,16 @@ A simple module with less-common formatting functions.
|
|||
Converts given number to a string with two-digit fractional
|
||||
part. Should the fractional part be 0, it is replaced with the string
|
||||
"--".
|
||||
|
||||
## util-tag [module]
|
||||
|
||||
(import util-tag)
|
||||
|
||||
A unifying module for compound data structures tagging.
|
||||
|
||||
### make-tag [syntax]
|
||||
|
||||
* ```name``` - unquoted symbol to base the tag on
|
||||
|
||||
Creates a unique and collision free symbol to identify compound data
|
||||
structures based on lists and pairs.
|
||||
|
|
11
src/Makefile
11
src/Makefile
|
@ -55,18 +55,20 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \
|
|||
table-processor.o table-border.o table-style.o sgr-state.o \
|
||||
util-utf8.o sgr-cell.o template-list-expander.o \
|
||||
box-drawing.o util-list.o export-web-static.o util-dir.o \
|
||||
dokuwiki.o racket-kwargs.o
|
||||
dokuwiki.o racket-kwargs.o duck.o
|
||||
|
||||
GENDOC-SOURCES=gendoc.scm duck-extract.import.scm \
|
||||
util-time.import.scm util-csv.import.scm util-git.import.scm \
|
||||
util-io.import.scm util-stdout.import.scm \
|
||||
util-parser.import.scm util-list.import.scm \
|
||||
util-proc.import.scm util-format.import.scm
|
||||
util-proc.import.scm util-format.import.scm \
|
||||
util-tag.import.scm
|
||||
|
||||
GENDOC-OBJS=gendoc.o duck-extract.o util-time.o util-csv.o util-io.o \
|
||||
progress.o testing.o util-proc.o util-git.o util-io.o \
|
||||
util-stdout.o util-parser.o util-list.o util-proc.o \
|
||||
util-format.o
|
||||
util-format.o racket-kwargs.o util-dict-list.o util-tag.o \
|
||||
util-set-list.o duck.o
|
||||
|
||||
.PHONY: imports
|
||||
imports: $(HACKERBASE-DEPS)
|
||||
|
@ -276,7 +278,7 @@ UTIL-TIME-SOURCES=util-time.scm duck.import.scm
|
|||
util-time.o: util-time.import.scm
|
||||
util-time.import.scm: $(UTIL-TIME-SOURCES)
|
||||
|
||||
UTIL-TAG-SOURCES=util-tag.scm testing.import.scm
|
||||
UTIL-TAG-SOURCES=util-tag.scm testing.import.scm duck.import.scm
|
||||
|
||||
util-tag.o: util-tag.import.scm
|
||||
util-tag.import.scm: $(UTIL-TAG-SOURCES)
|
||||
|
@ -508,6 +510,7 @@ dokuwiki.import.scm: $(DOKUWIKI-SOURCES)
|
|||
DUCK-SOURCES=duck.scm
|
||||
|
||||
duck.import.scm: $(DUCK-SOURCES)
|
||||
duck.o: duck.import.scm
|
||||
|
||||
DUCK-EXTRACT-SOURCES=duck-extract.scm util-proc.import.scm
|
||||
|
||||
|
|
|
@ -169,6 +169,12 @@
|
|||
(newline)
|
||||
(print-duck-text (caddr sec)))
|
||||
|
||||
(define (print-duck-syntax sec)
|
||||
(newline)
|
||||
(print "### " (cadr sec) " [syntax]")
|
||||
(newline)
|
||||
(print-duck-text (caddr sec)))
|
||||
|
||||
(define (print-duck-unknown sec)
|
||||
(print sec))
|
||||
|
||||
|
@ -181,6 +187,7 @@
|
|||
((VAR) (print-duck-variable (car mod)))
|
||||
((PAR) (print-duck-parameter (car mod)))
|
||||
((FUN) (print-duck-procedure (car mod)))
|
||||
((STX) (print-duck-syntax (car mod)))
|
||||
(else (print-duck-unknown (car mod)))))
|
||||
(loop (cdr mod)))))
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
;;
|
||||
|
||||
(declare (unit duck))
|
||||
|
||||
(module
|
||||
duck
|
||||
(
|
||||
|
@ -96,8 +98,8 @@
|
|||
(module
|
||||
modname
|
||||
exports
|
||||
(import (only scheme define set! quote reverse list quasiquote)
|
||||
(only (chicken module) export)
|
||||
(import scheme
|
||||
(chicken module)
|
||||
(chicken base)
|
||||
duck
|
||||
)
|
||||
|
|
|
@ -28,4 +28,6 @@
|
|||
util-parser
|
||||
util-list
|
||||
util-proc
|
||||
util-format)
|
||||
util-format
|
||||
util-tag
|
||||
)
|
||||
|
|
|
@ -25,8 +25,11 @@
|
|||
|
||||
(declare (unit util-tag))
|
||||
|
||||
(module
|
||||
(import duck)
|
||||
|
||||
(module*
|
||||
util-tag
|
||||
#:doc ("A unifying module for compound data structures tagging.")
|
||||
(
|
||||
make-tag
|
||||
util-tag-make
|
||||
|
@ -37,7 +40,11 @@
|
|||
(chicken random))
|
||||
|
||||
;; Syntactic wrapper to allow easy tag creation
|
||||
(define-syntax make-tag
|
||||
(define-syntax/doc make-tag
|
||||
("* ```name``` - unquoted symbol to base the tag on
|
||||
|
||||
Creates a unique and collision free symbol to identify compound data
|
||||
structures based on lists and pairs.")
|
||||
(syntax-rules ()
|
||||
((_ tag)
|
||||
(util-tag-make 'tag))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue