Preliminary syntax ducking.

This commit is contained in:
Dominik Pantůček 2023-07-06 19:37:48 +02:00
parent 396e2d9896
commit e6d798bc2a
6 changed files with 43 additions and 9 deletions

View file

@ -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.

View file

@ -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

View file

@ -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)))))

View file

@ -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
)

View file

@ -28,4 +28,6 @@
util-parser
util-list
util-proc
util-format)
util-format
util-tag
)

View file

@ -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))))