lang-bootstrap/05/main.b

66 lines
1.1 KiB
Brainfuck
Raw Normal View History

2022-01-07 23:32:27 -05:00
; add 24 + 16 = 40 to the stack pointer to put argc, argv in the right place
byte 0x48
byte 0x81
byte 0xc4
byte 40
byte 0
byte 0
byte 0
goto main
2022-01-08 12:15:17 -05:00
function compile_error
argument file
argument line
argument message
fputs(2, file)
fputc(2, ':)
fputn(2, line)
fputs(2, .str_error)
fputs(2, message)
fputc(2, 10)
exit(1)
:str_error
string : Error:
byte 32
byte 0
2022-01-07 23:32:27 -05:00
#include util.b
#include constants.b
#include preprocess.b
function main
argument argv2
argument argv1
argument argv0
argument argc
local input_filename
local output_filename
2022-01-08 12:15:17 -05:00
local pptokens
2022-01-07 23:32:27 -05:00
input_filename = .str_default_input_filename
output_filename = .str_default_output_filename
if argc == 1 goto have_filenames
if argc != 3 goto usage_error
input_filename = argv1
output_filename = argv2
:have_filenames
2022-01-08 12:15:17 -05:00
pptokens = split_into_preprocessing_tokens(input_filename)
print_pptokens(pptokens)
2022-01-07 23:32:27 -05:00
exit(0)
:usage_error
fputs(2, .str_usage_error)
exit(1)
:str_usage_error
string Please either specify no arguments or an input and output file.
:str_default_input_filename
string main.c
byte 0
:str_default_output_filename
string a.out
byte 0