v6.3-exception
Matthew Butterick 6 years ago
parent 2b776d8ee0
commit 380f4a2d37

@ -7,17 +7,18 @@
(for/list ([tok (in-port read-char ip)])
tok))
(define (parse-char c)
(define int (modulo (char->integer c) 128))
(for/list ([bit (in-range 7)])
(if (bitwise-bit-set? int bit)
'taco
null)))
(define (parse toks)
(for/list ([tok (in-list toks)])
(define int (modulo (char->integer tok) 128))
(for/list ([bit (in-range 7)])
(if (bitwise-bit-set? int bit)
'taco
null))))
(define (read-syntax src ip)
(define toks (tokenize ip))
(define parse-tree (map parse-char toks))
(define parse-tree (parse toks))
(strip-context
(with-syntax ([(PARSED-CHAR ...) parse-tree])
(with-syntax ([PT parse-tree])
#'(module tacofied racket
(for-each displayln '(PARSED-CHAR ...))))))
(for-each displayln 'PT)))))

@ -7,16 +7,17 @@
(for/list ([tok (in-port read ip)])
tok))
(define (parse tok)
(integer->char
(for/sum ([val (in-list tok)]
[power (in-naturals)]
#:when (eq? val 'taco))
(expt 2 power))))
(define (parse toks)
(for/list ([tok (in-list toks)])
(integer->char
(for/sum ([val (in-list tok)]
[power (in-naturals)]
#:when (eq? val 'taco))
(expt 2 power)))))
(define (read-syntax src ip)
(define toks (tokenize ip))
(define parse-tree (map parse toks))
(define parse-tree (parse toks))
(strip-context
(with-syntax ([PT parse-tree])
#'(module untaco racket

@ -7,16 +7,17 @@
(for/list ([tok (in-port read ip)])
tok))
(define (parse tok)
(integer->char
(for/sum ([val (in-list tok)]
[power (in-naturals)]
#:when (eq? val 'taco))
(expt 2 power))))
(define (parse toks)
(for/list ([tok (in-list toks)])
(integer->char
(for/sum ([val (in-list tok)]
[power (in-naturals)]
#:when (eq? val 'taco))
(expt 2 power)))))
(define (read-syntax src ip)
(define toks (tokenize ip))
(define parse-tree (map parse toks))
(define parse-tree (parse toks))
(define src-string (list->string parse-tree))
(define racket-toks
(for/list ([tok (in-port read (open-input-string src-string))])

@ -5,27 +5,30 @@
(module+ reader
(provide read-syntax))
(define lex
(lexer
["#$" lexeme]
["%" lexeme]
[any-char (lex input-port)]))
(define (tokenize ip)
(define lex
(lexer
["#$" lexeme]
["%" lexeme]
[any-char (lex input-port)]))
(lex ip))
(define (taco-program . pieces) pieces)
(define (taco-leaf . pieces)
(integer->char
(for/sum ([bit (in-list pieces)]
(for/sum ([taco-or-not (in-list pieces)]
[pow (in-naturals)])
(* bit (expt 2 pow)))))
(* taco-or-not (expt 2 pow)))))
(define (taco) 1)
(define (not-a-taco) 0)
(define (read-syntax src ip)
(define parse-tree (parse (λ () (lex ip))))
(define token-thunk (λ () (tokenize ip)))
(define parse-tree (parse token-thunk))
(strip-context
(with-syntax ([PT parse-tree])
#'(module vic taco-victory-demo
#'(module winner taco-victory-demo
(display (apply string PT))))))

@ -8,17 +8,20 @@
(for/list ([tok (in-port read-char ip)])
tok))
(define (leaf->char taco-leaf)
(integer->char
(for/sum ([val (in-list (cdr taco-leaf))]
[power (in-naturals)]
#:when (equal? val '(taco)))
(expt 2 power))))
(define (parse toks)
(define parse-tree-datum (parse-to-datum toks))
(for/list ([leaf (in-list (cdr parse-tree-datum))])
(integer->char
(for/sum ([val (in-list (cdr leaf))]
[power (in-naturals)]
#:when (equal? val '(taco)))
(expt 2 power)))))
(define (read-syntax src ip)
(define parse-tree (parse-to-datum (tokenize ip)))
(define taco-branches (cdr parse-tree))
(define toks (tokenize ip))
(define parse-tree (parse toks))
(strip-context
(with-syntax ([CHARS (map leaf->char taco-branches)])
(with-syntax ([PT parse-tree])
#'(module untaco racket
(display (list->string 'CHARS))))))
(display (list->string 'PT))))))

@ -17,16 +17,17 @@
(for/list ([tok (in-slice 7 toklets)])
tok))
(define (parse taco-rec-tok)
(integer->char
(for/sum ([val (in-list taco-rec-tok)]
[power (in-naturals)]
#:when (eq? val 'taco))
(expt 2 power))))
(define (parse toks)
(for/list ([tok (in-list toks)])
(integer->char
(for/sum ([val (in-list tok)]
[power (in-naturals)]
#:when (eq? val 'taco))
(expt 2 power)))))
(define (read-syntax src ip)
(define toks (tokenize ip))
(define parse-tree (map parse toks))
(define parse-tree (parse toks))
(strip-context
(with-syntax ([PT parse-tree])
#'(module untaco racket

Loading…
Cancel
Save