From fa0f182e8089cce96efc12e0189e4d188d831d9e Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 30 Jun 2009 04:18:34 +0000 Subject: [PATCH] fixed the way atomic rewriters work so that non-terminals with underscores render properly svn: r15332 --- collects/redex/private/bmps/language.png | Bin 5851 -> 5859 bytes .../private/bmps/metafunction-multi-arg.png | Bin 8608 -> 8595 bytes collects/redex/private/core-layout.ss | 34 ++++++++++-------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/collects/redex/private/bmps/language.png b/collects/redex/private/bmps/language.png index 4a4ea9c091cee777dbadb2176d43bc150cc9d19b..bd786cb6c7fbac0a7b8c6e26106bf2eda703466f 100644 GIT binary patch literal 5859 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 E7Z)RN{r~^~ literal 8608 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 - (λ (m) - (when (eq? (cadr m) e) - (error 'apply-rewrites "rewritten version of ~s is still ~s" e e)) - (let ([p (cadr m)]) - (if (procedure? p) - (p) - p)))] [(symbol? e) e] [(string? e) e] [(pict? e) e] @@ -704,23 +695,38 @@ [second-part (caddr m)] [first-span (- span (string-length first-part))]) (list - (make-string-token col - first-span - first-part - (non-terminal-style)) + (non-terminal->token col first-span first-part) (make-string-token (+ col first-span) (- span first-span) second-part (non-terminal-subscript-style)))))] [(or (memq atom all-nts) (memq atom '(number variable variable-except variable-not-otherwise-mentioned))) - (list (make-string-token col span (format "~s" atom) (non-terminal-style)))] + (list (non-terminal->token col span (format "~s" atom)))] [(symbol? atom) (list (make-string-token col span (symbol->string atom) (literal-style)))] [(string? atom) (list (make-string-token col span atom (default-style)))] [else (error 'atom->tokens "unk ~s" atom)])) + (define (non-terminal->token col span str) + (let ([e (string->symbol str)]) + (cond + [(assoc e (atomic-rewrite-table)) + => + (λ (m) + (when (eq? (cadr m) e) + (error 'apply-rewrites "rewritten version of ~s is still ~s" e e)) + (let ([p (cadr m)]) + (if (procedure? p) + (make-pict-token col span (p)) + (make-string-token col span p (non-terminal-style)))))] + [else + (make-string-token col + span + str + (non-terminal-style))]))) + (define (pick-font lst fallback) (let ([fl (get-face-list 'all)]) (let loop ([lst lst])