diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-04-01 10:53:44 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-04-01 10:53:44 +0300 |
| commit | ad18c24e7223b1c0d48a20ba9b618c4eaf1e3a84 (patch) | |
| tree | 86f3cba0b5b4bf4b7e49b96ceb61bec8b0be2780 /include/cu/parser.h | |
| parent | b8211cda90f8a9cb14657d3328cfa9ec78722c5c (diff) | |
| download | ek-ad18c24e7223b1c0d48a20ba9b618c4eaf1e3a84.tar.gz ek-ad18c24e7223b1c0d48a20ba9b618c4eaf1e3a84.zip | |
fix gitignore
Diffstat (limited to 'include/cu/parser.h')
| -rw-r--r-- | include/cu/parser.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/include/cu/parser.h b/include/cu/parser.h new file mode 100644 index 0000000..dfc2b6a --- /dev/null +++ b/include/cu/parser.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ + +#ifndef PARSER_H +#define PARSER_H + +#include <stddef.h> +#include <stdbool.h> +#include <cu/ast.h> + +struct parser { + bool failed; + void *lexer; + size_t buf_offset; + const char *buf; + const char *fname; + size_t comment_nesting; + struct ast_node *tree; +}; + +#define YY_DECL int yylex(YYSTYPE *yylval, YYLTYPE *yylloc, \ + yyscan_t yyscanner, struct parser *parser) + +#include <../gen/gen_parser.h> +#ifndef FROM_LEXER +#include <../gen/gen_lexer.h> +#endif + +YY_DECL; + +struct parser *create_parser(); +void destroy_parser(struct parser *p); +void parse(struct parser *p, const char *fname, const char *buf); +int next_interesting_feature(YYSTYPE *yylval, YYLTYPE *yylloc, + void *scanner, struct parser *parser); + +struct src_loc to_src_loc(YYLTYPE *yylloc); + +void yyerror(YYLTYPE *yylloc, void *lexer, struct parser *parser, + const char *msg); + +long long match_escape(char c); +const char *clone_string(const char *s); + +#endif /* PARSER_H */ |
