2026-03-07 07:58:20 -07:00
|
|
|
/*
|
|
|
|
|
* parse.cpp - MUX expression recursive-descent parser study tool.
|
|
|
|
|
*
|
|
|
|
|
* Reads MUX expressions from stdin (one per line), tokenizes them,
|
2026-03-07 08:45:01 -07:00
|
|
|
* then builds an AST and prints it. Stage 2 of the parser study.
|
2026-03-07 07:58:20 -07:00
|
|
|
*/
|
|
|
|
|
|
2026-03-07 08:45:01 -07:00
|
|
|
#include "mux_parse.h"
|
2026-03-07 07:58:20 -07:00
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
char line[8192];
|
|
|
|
|
while (fgets(line, sizeof(line), stdin)) {
|
|
|
|
|
size_t len = strlen(line);
|
|
|
|
|
if (len > 0 && line[len - 1] == '\n') {
|
|
|
|
|
line[len - 1] = '\0';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("INPUT: %s\n", line);
|
|
|
|
|
auto tokens = tokenize(line);
|
|
|
|
|
Parser parser(tokens);
|
|
|
|
|
auto ast = parser.parse();
|
2026-03-07 08:45:01 -07:00
|
|
|
ast_print(ast.get(), 2);
|
2026-03-07 07:58:20 -07:00
|
|
|
printf("\n");
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|