diff options
author | bd <bdunaisky@umass.edu> | 2024-11-04 20:13:50 -0500 |
---|---|---|
committer | bd <bdunaisky@umass.edu> | 2024-11-04 20:13:50 -0500 |
commit | bad998157c95851eb29d3e4f6824a276d7032b12 (patch) | |
tree | c5d39f90f5048faa4422c8c347d7cd4d497e0565 /src/gscc | |
parent | 64de3b65fec63268fb17cf7b76dba69c68ea7d1d (diff) |
Add modules, open port for reading
Diffstat (limited to 'src/gscc')
-rwxr-xr-x | src/gscc | 23 |
1 files changed, 12 insertions, 11 deletions
@@ -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: |