diff --git a/.gitignore b/.gitignore index 81816ac..5215c6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,14 @@ -# Created by https://www.gitignore.io/api/scheme +# Created by https://www.gitignore.io/api/scheme,racket + +### Racket ### +*.rkt~ +*.rkt.bak +\#*.rkt# +\#*.rkt#*# +*.dep +*.zo + +compiled ### Scheme ### *.ss~ @@ -9,10 +19,6 @@ *.scm#* .#*.scm -# End of https://www.gitignore.io/api/scheme -### WINDOWS ### -*.bak +# End of https://www.gitignore.io/api/scheme,racket -#### MAC ### -.DS_Store diff --git a/interpreter.scm b/interpreter.scm index 9aa52e0..6167791 100644 --- a/interpreter.scm +++ b/interpreter.scm @@ -1,8 +1,9 @@ ; Brett Johnson ; Adam Beck ; Daniel Grigsby - -(load "simpleParser.scm") +#lang racket +(require "simpleParser.scm") +(provide (all-defined-out)) ; This section reads code from a file, parses it to a list, ; interprets it and returns the return value or error diff --git a/lex.scm b/lex.scm index 875cade..580cd0a 100644 --- a/lex.scm +++ b/lex.scm @@ -1,6 +1,6 @@ ; Uncomment these two lines if you are using racket instead of scheme -;#lang racket -;(provide (all-defined-out)) +#lang racket +(provide (all-defined-out)) ;;=============================================================== ;; The Lexical Analyzer @@ -41,7 +41,7 @@ ; read the next character from the file -(define readchar +(define readchar (lambda (port) (if saved-last-char (begin @@ -79,7 +79,7 @@ ; return a lexeme with the next read symbol -(define return-id-lex +(define return-id-lex (lambda (id) (if (memq id reserved-word-list) (if (or (eq? id 'false) (eq? id 'true)) diff --git a/simpleParser.scm b/simpleParser.scm index 948ef65..39a9cda 100644 --- a/simpleParser.scm +++ b/simpleParser.scm @@ -1,6 +1,6 @@ ; If you are using racket instead of scheme, uncomment these two lines, comment the (load "lex.scm") line and uncomment the (require "lex.scm") line -;#lang racket -;(provide (all-defined-out)) +#lang racket +(provide (all-defined-out)) ; A simple parser for a Java-ish language ; EECS 345: Programming Language Concepts @@ -14,8 +14,8 @@ ; ; The return value is a parse tree in list format -(load "lex.scm") -;(require "lex.scm") +;(load "lex.scm") +(require "lex.scm") (define parser (lambda (filename) @@ -165,8 +165,8 @@ (lambda () (let* ((firstoperand (value-parse)) (op (get-next-symbol))) - (if (and (eq? (car op) 'BINARY-OP) - (or (eq? (cdr op) '==) + (if (and (eq? (car op) 'BINARY-OP) + (or (eq? (cdr op) '==) (eq? (cdr op) '<) (eq? (cdr op) '>) (eq? (cdr op) '<=) @@ -186,7 +186,7 @@ (begin (unget-next-symbol) (cons 'var lhs)))))) - + ; parse an assignment statement: a left-hand-side followed by an = followed by a value @@ -338,5 +338,3 @@ ((eq? (car firstsymbol) 'ID) (cdr firstsymbol)) ((eq? (car firstsymbol) 'BOOLEAN) (cdr firstsymbol)) (else (error 'parser "Unknown statmement")))));) - - diff --git a/tester.scm b/tester.scm index b16a50e..1859252 100644 --- a/tester.scm +++ b/tester.scm @@ -1,11 +1,17 @@ -(load "interpreter.scm") +#lang racket +(require "interpreter.scm") + + +; Tester ; General testing framework (define test (lambda (filename expected-output) (if (eq? (interpret filename) expected-output) (string-append "Passed " filename) - (string-append "Failed " filename " ! Expected output: " (number->string expected-output) ", Interpreter output: " (symbol->string (interpret filename)))))) + (string-append "Failed " filename + ", ! Expected output: " (number->string expected-output) + ", Interpreter output: " (symbol->string (interpret filename)))))) ; Tests 1 (newline)(newline)