/* * This file is part of Beastie * SPDX-FileCopyrightText: 2023 Norman Gray * SPDX-License-Identifier: BSD-2-Clause */ #ifndef PARSE_MARKDOWN_H #define PARSE_MARKDOWN_H 1 #include // for FILE* #include "beastie.h" // for YYSTYPE and s7_pointer #include "yycommon.h" // for YYLTYPE struct markdown_extra_s { char vspace_p; // are we skipping vertical space? int bq_level; // current number of blockquote indents char found_annotation_p; // did we just find an annotation? char* string_buf; // non-NULL when parsing a string const char* filename; // input file name, or NULL for stdin FILE* infile; }; typedef struct markdown_extra_s* markdown_extra_t; // defined in parse-markdown.lex yyscan_t parse_markdown_setup_file(markdown_extra_t, const char*); yyscan_t parse_markdown_setup_string(markdown_extra_t, const char*, size_t); void parse_markdown_finish(markdown_extra_t, yyscan_t); int markdownlex(YYSTYPE* lvalp, YYLTYPE* llocp, yyscan_t scanner); int markdownget_lineno(yyscan_t); // defined in parse-markdown.y int markdownparse(markdown_extra_t, s7_pointer* parse_result, s7_pointer metadata, s7_pointer input_source, yyscan_t scanner); #endif /* PARSE_MARKDOWN_H */