%top { #include //#define TBDEBUG 1 #define print puts int depth = 0; } %language markdown %% enter section { depth += 1; } leave section { depth -= 1; } enter atx_heading { printf("\n", depth); } leave atx_heading { printf("\n", depth); } enter paragraph { print("

"); } leave paragraph { print("

\n"); } enter list { print("
    "); } leave list { print("
\n"); } enter list_item { print("
  • "); } leave list_item { print("
  • \n"); } enter fenced_code_block { print("
    ");
    }
    leave fenced_code_block {
        print("
    \n"); } enter inline { print(tbtext); } enter code_fence_content { print(tbtext); } %% // @BAKE g++ $@ $(pkg-config --cflags --libs tree-sitter) -ltree-sitter-markdown -ggdb signed main(int argc, char * * argv) { FILE* f = fopen(argv[1], "r"); fseek(f, 0, SEEK_END); int flen = ftell(f); rewind(f); char fstr[flen+1]; fstr[flen] = '\00'; fread(fstr, flen, sizeof(char), f); fclose(f); printf("-- meta: %d chars\n", flen); print("\n"); print("\n"); tbtraverse(fstr); print("\n"); print("\n"); }