diff options
| author | kartofen <kartofen.mail.0@protonmail.com> | 2025-07-02 22:55:08 +0300 |
|---|---|---|
| committer | kartofen <kartofen.mail.0@protonmail.com> | 2025-07-02 22:55:08 +0300 |
| commit | 67447ebd3a51a9af29d18a53a38aba038a0c039e (patch) | |
| tree | 7a41182cf329e77ebb760969e3f220f60079c187 /demos/generate-parser.c | |
| parent | a854ee90235597711e036fe38de2c310dab6e168 (diff) | |
turn clr into lalr and first steps for generating a parser
Diffstat (limited to 'demos/generate-parser.c')
| -rw-r--r-- | demos/generate-parser.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/demos/generate-parser.c b/demos/generate-parser.c new file mode 100644 index 0000000..b0a769d --- /dev/null +++ b/demos/generate-parser.c @@ -0,0 +1,25 @@ +#include <stdio.h> +#include <dlfcn.h> + +#include <parts/table.h> + +struct action **table; +size_t table_states; +size_t total_symbols; + +int main(int argc, char **argv) +{ + if(argc != 2) return 1; + + void *handle = dlopen(argv[1], RTLD_LAZY); + if(!handle) { puts(dlerror()); return 1; } + + table = *(typeof(&table))dlsym(handle, "table"); + table_states = *(typeof(&table_states))dlsym(handle, "table_states"); + total_symbols = *(typeof(&total_symbols))dlsym(handle, "total_symbols"); + + table_print(); + + dlclose(handle); + return 0; +} |
