trying to run earley using Racket's compiler
This commit is contained in:
parent
cfa1874f0a
commit
d0b6d2e8c6
|
@ -30,6 +30,18 @@
|
|||
'cadr
|
||||
'caddr
|
||||
'list
|
||||
'list->vector
|
||||
'vector->list
|
||||
'vector
|
||||
'vector-length
|
||||
'vector-ref
|
||||
'vector-set!
|
||||
'make-vector
|
||||
'equal?
|
||||
'member
|
||||
'append
|
||||
'reverse
|
||||
'length
|
||||
'pair?
|
||||
'null?
|
||||
'not
|
||||
|
|
|
@ -3,29 +3,7 @@
|
|||
(require "simulator.rkt"
|
||||
"simulator-structs.rkt"
|
||||
"simulator-helpers.rkt"
|
||||
"compiler.rkt"
|
||||
"compiler-structs.rkt"
|
||||
;;"parse.rkt"
|
||||
"parse-bytecode-5.1.1.rkt"
|
||||
"il-structs.rkt")
|
||||
|
||||
(require (prefix-in racket: racket/base))
|
||||
|
||||
|
||||
;; Use Racket's compiler, and then parse the resulting bytecode
|
||||
;; to our own AST structures.
|
||||
(define (parse stx)
|
||||
(parameterize ([current-namespace (make-base-namespace)])
|
||||
(let ([bc (racket:compile stx)]
|
||||
[op (open-output-bytes)])
|
||||
(write bc op)
|
||||
(parse-bytecode
|
||||
(open-input-bytes (get-output-bytes op))))))
|
||||
|
||||
|
||||
(define (run-compiler code)
|
||||
(compile (parse code) 'val next-linkage/drop-multiple))
|
||||
|
||||
"test-helpers.rkt")
|
||||
|
||||
|
||||
|
||||
|
@ -162,7 +140,7 @@
|
|||
(fib 10))
|
||||
55)
|
||||
|
||||
;; Fibonacci, iterative. This should be computable while using at most 10 spots.
|
||||
;; Fibonacci, iterative. This should be computable while using at most a bounded number of stack slots.
|
||||
(test '(let ()
|
||||
(define (fib n)
|
||||
(fib-iter 1 0 n))
|
||||
|
@ -174,5 +152,5 @@
|
|||
(fib 10000))
|
||||
33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875
|
||||
|
||||
#:stack-limit 10
|
||||
#:stack-limit 20
|
||||
#:control-limit 3)
|
|
@ -3,28 +3,8 @@
|
|||
(require "simulator.rkt"
|
||||
"simulator-structs.rkt"
|
||||
"simulator-helpers.rkt"
|
||||
"compiler.rkt"
|
||||
"compiler-structs.rkt"
|
||||
#; "parse.rkt"
|
||||
"parse-bytecode-5.1.1.rkt"
|
||||
"il-structs.rkt")
|
||||
"test-helpers.rkt")
|
||||
|
||||
(require (prefix-in racket: racket/base))
|
||||
|
||||
|
||||
;; Use Racket's compiler, and then parse the resulting bytecode
|
||||
;; to our own AST structures.
|
||||
(define (parse stx)
|
||||
(parameterize ([current-namespace (make-base-namespace)])
|
||||
(let ([bc (racket:compile stx)]
|
||||
[op (open-output-bytes)])
|
||||
(write bc op)
|
||||
(parse-bytecode
|
||||
(open-input-bytes (get-output-bytes op))))))
|
||||
|
||||
|
||||
(define (run-compiler code)
|
||||
(compile (parse code) 'val next-linkage/drop-multiple))
|
||||
|
||||
|
||||
;; Test out the compiler, using the simulator.
|
||||
|
@ -1345,6 +1325,9 @@
|
|||
'((1 3 4))
|
||||
#:with-bootstrapping? #t)
|
||||
|
||||
;; TODO: use begin0 in multiple-value context, but where we should get dynamic runtime error since
|
||||
;; the surrounding context can't consume multiple values.
|
||||
|
||||
|
||||
|
||||
#;(test (read (open-input-file "tests/conform/program0.sch"))
|
||||
|
|
|
@ -2,14 +2,9 @@
|
|||
|
||||
(require "simulator.rkt"
|
||||
"simulator-structs.rkt"
|
||||
"compiler-structs.rkt"
|
||||
"compiler.rkt"
|
||||
"parse.rkt"
|
||||
"il-structs.rkt")
|
||||
"test-helpers.rkt")
|
||||
|
||||
|
||||
(define (run-compiler code)
|
||||
(compile (parse code) 'val next-linkage/drop-multiple))
|
||||
|
||||
;; run: machine -> (machine number)
|
||||
;; Run the machine to completion.
|
||||
|
|
24
test-helpers.rkt
Normal file
24
test-helpers.rkt
Normal file
|
@ -0,0 +1,24 @@
|
|||
#lang racket/base
|
||||
|
||||
(require (prefix-in racket: racket/base)
|
||||
"compiler-structs.rkt"
|
||||
"compiler.rkt"
|
||||
"parse-bytecode-5.1.1.rkt")
|
||||
|
||||
|
||||
(provide parse run-compiler)
|
||||
|
||||
|
||||
;; Use Racket's compiler, and then parse the resulting bytecode
|
||||
;; to our own AST structures.
|
||||
(define (parse stx)
|
||||
(parameterize ([current-namespace (make-base-namespace)])
|
||||
(let ([bc (racket:compile stx)]
|
||||
[op (open-output-bytes)])
|
||||
(write bc op)
|
||||
(parse-bytecode
|
||||
(open-input-bytes (get-output-bytes op))))))
|
||||
|
||||
|
||||
(define (run-compiler code)
|
||||
(compile (parse code) 'val next-linkage/drop-multiple))
|
Loading…
Reference in New Issue
Block a user