/* * Copyright (c) 2026, Apollo Telephone Laboratories. * Provided under the BSD-3 clause. */ #include #include #include #include /* * Display help options */ static void help(void) { printf("-- AT ISA assembler --\n"); printf("usage: ./atas [flags] [input file]\n"); printf("[-h] Display this help menu\n"); } /* * Begin assembling a specified input file * * @in_file: Path to input file to assemble */ static void atas_assemble(const char *in_file) { struct atas_state state; int error; if (in_file == NULL) { return; } error = atas_state_init(in_file, &state); if (error < 0) { perror("atas_state_init"); return; } error = atas_parse(&state); if (error < 0) { printf("failure occured in %s\n", in_file); atas_state_destroy(&state); return; } atas_state_destroy(&state); } int main(int argc, char **argv) { const char *in_path; int opt; if (argc < 2) { printf("fatal: too few arguments\n"); return -1; } while ((opt = getopt(argc, argv, "hv")) != -1) { switch (opt) { case 'h': help(); return 0; } } if (optind == argc) { printf("fatal: expected input file\n"); return -1; } in_path = argv[optind]; atas_assemble(in_path); return 0; }