From bad998157c95851eb29d3e4f6824a276d7032b12 Mon Sep 17 00:00:00 2001 From: bd Date: Mon, 4 Nov 2024 20:13:50 -0500 Subject: Add modules, open port for reading --- src/gscc | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'src/gscc') diff --git a/src/gscc b/src/gscc index 801bdfe..7ee1bf1 100755 --- a/src/gscc +++ b/src/gscc @@ -1,9 +1,10 @@ #!/run/current-system/profile/bin/guile \ --e main -s +-L ./src -e main -s !# -(use-modules (ice-9 getopt-long)) +(use-modules (ice-9 getopt-long) + (modules lexer lexer)) (define version "v0.1") @@ -30,8 +31,11 @@ file on a success." (zero? (system (string-concatenate `("gcc -E -P " ,file " -o " ,preprocessed-file-name)))) preprocessed-file-name))) -(define (process file lex? parse? codegen?) - "") +(define (process file parse? assemble?) + "Driver for lexing, parsing, and assembly generation." + (let ((port (open-input-file file))) + (read-tokens-from-port port) + (close-input-port port))) (define (postprocess file dest) "Assembles and links file, producing an executable. @@ -50,7 +54,7 @@ Returns #f on a failure, #t on a success." (file (if (null? rest) #f (car rest)))) (cond ((option-ref options 'version #f) - (display (string-concatenate `("gscc (the 'Guile Scheme C Compiler', " ,version ")")))) + (display (string-concatenate `("gscc (the 'Guile Scheme C Compiler', " ,version ")\n")))) ((not (equal? 1 (length rest))) (error "Wrong number of arguments.")) ((or (not file) (not (access? file R_OK)) @@ -58,13 +62,10 @@ Returns #f on a failure, #t on a success." (#t (let ((source (preprocess file))) (when source - (display (string-concatenate `("Preprocess reported success (wrote " ,source ")."))) + (display (string-concatenate `("Preprocess reported success (wrote " ,source ").\n"))) (process source - (option-ref options 'lex #f) - (option-ref options 'parse #f) - (option-ref options 'codegen #f)) - (newline) - (display "Done!"))))))) + (not (option-ref options 'lex #f)) + (not (option-ref options 'parse #f))))))))) ;; Local Variables: -- cgit v1.2.3