grammar.py and friends: Improve line numbers and headers

Line numbers of parsed input are now automatically maintained. More
needed data structures are now automatically created in the API header
file.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2017-11-03 12:54:19 +01:00
commit 3cba245b77
5 changed files with 76 additions and 71 deletions

View file

@ -1,19 +1,10 @@
#include <string>
#include <stdio.h>
#include <misc.h>
#include <slog.h>
#include <YMisc.h>
// TODO: this should be included from grammartest.tab.h automatically
#include "include/grammartest.h"
#include "include/defs.h"
#include "include/grammartest.tab.h"
extern int FB_SYM(debug);
using namespace std;
int main(int argc, const char *argv[])
@ -30,20 +21,9 @@ int main(int argc, const char *argv[])
return 1;
}
// TODO: Initialize this in a generated function
struct context context = {
line: 1,
column: 0
};
FB_SYM(debug) = 1;
struct vp_scanner *scanner = FB_SYM(init_scanner)(content.c_str());
int status = FB_SYM(parse)(&context, FB_SYM(scanner_get_data)(scanner));
FB_SYM(cleanup_scanner)(scanner);
if (status) {
slog(PRI_ERR, "failed to parse [%s] (%s)", path, err());
return -1;
if (FB_SYM(create_ast)(content.c_str())<0) {
slog(PRI_ERR, "failed to create AST from [%s] (%s)", path, err());
return 1;
}
return 0;