tbsp/test/convert.tbsp

87 lines
1.2 KiB
Plaintext

%top {
#include <stdio.h>
int depth = 0;
}
%language markdown
%%
enter section {
depth += 1;
}
leave section {
depth -= 1;
}
enter atx_heading {
puts("AAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
printf("<h%d>\n", depth);
}
leave atx_heading {
printf("</h%d>\n", depth);
}
enter paragraph {
puts("<p>");
}
leave paragraph {
puts("</p>");
}
enter list {
puts("<ol>");
}
leave list {
puts("</ol>");
}
enter list_item {
puts("<li>");
}
leave list_item {
puts("</li>");
}
enter fenced_code_block {
puts("<pre>");
}
leave fenced_code_block {
puts("</pre>");
}
enter inline {
char * text = tbget_text;
puts(text);
free(text);
}
enter code_fence_content {
char * text = tbget_text;
puts(text);
free(text);
}
%%
/* @BAKE
tbsp $@
gcc -o $*.out $*.tb.c $(pkg-config --cflags --libs tree-sitter) -ltree-sitter-markdown -ggdb
./$*.out input.md
@STOP
*/
#include "file2str.h"
signed main(int argc, char * * argv) {
if (argc < 2) { return 1; }
FILE2STR(fstr, argv[1]);
printf("-- meta: %d chars\n", flen);
printf("<html>\n");
printf("<body>\n");
tbtraverse(fstr);
printf("</body>\n");
printf("</html>\n");
}