tbsp/test/function_collector.tbsp
2024-09-16 17:37:22 +02:00

45 lines
717 B
Plaintext

%top {
#include <stdio.h>
#include <string>
#include <set>
using namespace std;
set<string> functions;
}
%language cpp
%%
// this is a comment
/* so is this
*/
enter function_definition {
char * name = tbget_node_text($$->"declarator"->"declarator");
functions.insert(name);
free(name);
}
%%
/* @BAKE
tbsp -o $*.tb.cpp $@
g++ -o $*.out $*.tb.cpp $(pkg-config --cflags --libs tree-sitter tree-sitter-cpp) -ggdb
./$*.out $@
@STOP
*/
#include "file2str.h"
signed main(int argc, char * * argv) {
if (argc < 2) { return 1; }
FILE2STR(fstr, argv[1]);
tbtraverse(fstr);
for (const auto &i : functions) {
puts(i.c_str());
}
return 0;
}