#include #include #include "lr-parser.c" #include "bin/generated.c" #include "parts/toklist.h" enum symbol { PLUS = 0, MINUS, LPAREN, RPAREN, N0, N1, END_INPUT, EP, E, T, N, SYMBOLS_END, }; static inline symbol char_to_token(char c) { switch(c) { case '+': return PLUS; case '-': return MINUS; case '(': return LPAREN; case ')': return RPAREN; case '0': return N0; case '1': return N1; case 0 : return END_INPUT; default: fprintf(stderr, "ERROR: Unknown character '%c'\n", c); exit(1); } } static char *input; symbol toklist_eat() { return char_to_token(*(input++)); } // unsafe symbol toklist_peek() { return char_to_token(*input); } // unsafe int main(int argc, char **argv) { if(argc != 2) { fprintf(stderr, "ERROR: Not enough arguments\n"); return 1; } input = argv[1]; printf("INPUT: '%s'\n", input); printf("OUTPUT: %d\n", lr_parser()); return 0; }