step: save progress with mpc integration
This commit is contained in:
parent
e9a6558d4b
commit
c3720d0951
23
src/mumble.c
23
src/mumble.c
|
@ -7,14 +7,14 @@
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
puts("Mumble version 0.0.1\n");
|
puts("Mumble version 0.0.2\n");
|
||||||
puts("Press Ctrl+C/Ctrl+D to exit\n");
|
puts("Press Ctrl+C/Ctrl+D to exit\n");
|
||||||
|
|
||||||
/* Create Some Parsers */
|
/* Create Some Parsers */
|
||||||
mpc_parser_t* Number = mpc_new("number");
|
mpc_parser_t* Number = mpc_new("number");
|
||||||
mpc_parser_t* Operator = mpc_new("operator");
|
mpc_parser_t* Operator = mpc_new("operator");
|
||||||
mpc_parser_t* Expr = mpc_new("expr");
|
mpc_parser_t* Expr = mpc_new("expr");
|
||||||
mpc_parser_t* Lispy = mpc_new("lispy");
|
mpc_parser_t* Mumble = mpc_new("mumble");
|
||||||
|
|
||||||
/* Define them with the following Language */
|
/* Define them with the following Language */
|
||||||
mpca_lang(MPCA_LANG_DEFAULT,
|
mpca_lang(MPCA_LANG_DEFAULT,
|
||||||
|
@ -22,9 +22,9 @@ int main(int argc, char** argv)
|
||||||
number : /-?[0-9]+/ ; \
|
number : /-?[0-9]+/ ; \
|
||||||
operator : '+' | '-' | '*' | '/' ; \
|
operator : '+' | '-' | '*' | '/' ; \
|
||||||
expr : <number> | '(' <operator> <expr>+ ')' ; \
|
expr : <number> | '(' <operator> <expr>+ ')' ; \
|
||||||
lispy : /^/ <operator> <expr>+ /$/ ; \
|
mumble : /^/ <operator> <expr>+ /$/ ; \
|
||||||
",
|
",
|
||||||
Number, Operator, Expr, Lispy);
|
Number, Operator, Expr, Mumble);
|
||||||
|
|
||||||
int loop = 1;
|
int loop = 1;
|
||||||
while (loop) {
|
while (loop) {
|
||||||
|
@ -34,7 +34,18 @@ int main(int argc, char** argv)
|
||||||
loop = 0;
|
loop = 0;
|
||||||
puts("");
|
puts("");
|
||||||
} else {
|
} else {
|
||||||
printf("Did you say \"%s\"?\n", input);
|
/* Attempt to Parse the user Input */
|
||||||
|
mpc_result_t r;
|
||||||
|
if (mpc_parse("<stdin>", input, Mumble, &r)) {
|
||||||
|
/* On Success Print the AST */
|
||||||
|
mpc_ast_print(r.output);
|
||||||
|
mpc_ast_delete(r.output);
|
||||||
|
} else {
|
||||||
|
/* Otherwise Print the Error */
|
||||||
|
mpc_err_print(r.error);
|
||||||
|
mpc_err_delete(r.error);
|
||||||
|
}
|
||||||
|
// printf("Did you say \"%s\"?\n", input);
|
||||||
add_history(input);
|
add_history(input);
|
||||||
// can't add if input is NULL
|
// can't add if input is NULL
|
||||||
}
|
}
|
||||||
|
@ -42,7 +53,7 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Undefine and Delete our Parsers */
|
/* Undefine and Delete our Parsers */
|
||||||
mpc_cleanup(4, Number, Operator, Expr, Lispy);
|
mpc_cleanup(4, Number, Operator, Expr, Mumble);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user