87 lines
1.2 KiB
Plaintext
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");
|
|
}
|