rewind(fp);
}
- scanner = ctf_scanner_alloc(fp);
+ scanner = ctf_scanner_alloc();
if (!scanner) {
fprintf(stderr, "[error] Error allocating scanner\n");
ret = -ENOMEM;
goto end_scanner_alloc;
}
- ret = ctf_scanner_append_ast(scanner);
+ ret = ctf_scanner_append_ast(scanner, fp);
if (ret) {
fprintf(stderr, "[error] Error creating AST\n");
goto end;
babeltrace_debug = 1;
babeltrace_verbose = 1;
- scanner = ctf_scanner_alloc(stdin);
+ scanner = ctf_scanner_alloc();
if (!scanner) {
fprintf(stderr, "Error allocating scanner\n");
return -ENOMEM;
}
- ret = ctf_scanner_append_ast(scanner);
+ ret = ctf_scanner_append_ast(scanner, stdin);
if (ret) {
fprintf(stderr, "Error creating AST\n");
goto end;
return ast;
}
-int ctf_scanner_append_ast(struct ctf_scanner *scanner)
+int ctf_scanner_append_ast(struct ctf_scanner *scanner, FILE *input)
{
+ /* Start processing new stream */
+ yyrestart(input, scanner->scanner);
+ if (yydebug)
+ fprintf(stdout, "Scanner input is a%s.\n",
+ isatty(fileno(input)) ? "n interactive tty" :
+ " noninteractive file");
return yyparse(scanner, scanner->scanner);
}
-struct ctf_scanner *ctf_scanner_alloc(FILE *input)
+struct ctf_scanner *ctf_scanner_alloc(void)
{
struct ctf_scanner *scanner;
int ret;
if (!scanner)
return NULL;
memset(scanner, 0, sizeof(*scanner));
-
ret = yylex_init_extra(scanner, &scanner->scanner);
if (ret) {
printf_fatal("yylex_init error");
goto cleanup_scanner;
}
- /* Start processing new stream */
- yyrestart(input, scanner->scanner);
-
scanner->objstack = objstack_create();
if (!scanner->objstack)
goto cleanup_lexer;
init_scope(&scanner->root_scope, NULL);
scanner->cs = &scanner->root_scope;
- if (yydebug)
- fprintf(stdout, "Scanner input is a%s.\n",
- isatty(fileno(input)) ? "n interactive tty" :
- " noninteractive file");
-
return scanner;
cleanup_objstack:
struct objstack *objstack;
};
-struct ctf_scanner *ctf_scanner_alloc(FILE *input);
+struct ctf_scanner *ctf_scanner_alloc(void);
void ctf_scanner_free(struct ctf_scanner *scanner);
-int ctf_scanner_append_ast(struct ctf_scanner *scanner);
+int ctf_scanner_append_ast(struct ctf_scanner *scanner, FILE *input);
static inline
struct ctf_ast *ctf_scanner_get_ast(struct ctf_scanner *scanner)