librdesc
Loading...
Searching...
No Matches
util.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025-2026 Metehan Selvi <me@metehanselvi.com>
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4
12#ifndef RDESC_UTIL_H
13#define RDESC_UTIL_H
14
15#include <stdint.h>
16#include <stdio.h>
17
18struct rdesc; /* defined in rdesc.h */
19struct rdesc_node;
20
21struct rdesc_grammar; /* defined in grammar.h */
22
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
35void rdesc_dump_cst(FILE *out,
36 const struct rdesc *parser,
37 void (*node_printer)(FILE *out, const struct rdesc_node *));
38
51void rdesc_dump_bnf(FILE *out,
52 const struct rdesc_grammar *grammar,
53 const char *const tk_names[],
54 const char *const nt_names[]);
55
86void rdesc_flip_left(struct rdesc *parser,
87 struct rdesc_node *parent,
88 uint16_t child_index);
89
90#ifdef __cplusplus
91}
92#endif
93
94
95#endif
Grammar definition.
Definition grammar.h:50
Recursive descent parser state.
Definition rdesc.h:42
void rdesc_flip_left(struct rdesc *parser, struct rdesc_node *parent, uint16_t child_index)
Rotates a right-recursive concrete syntax tree into a left-recursive form.
void rdesc_dump_bnf(FILE *out, const struct rdesc_grammar *grammar, const char *const tk_names[], const char *const nt_names[])
Dumps the grammar in BNF format.
void rdesc_dump_cst(FILE *out, const struct rdesc *parser, void(*node_printer)(FILE *out, const struct rdesc_node *))
Dumps the concrete syntax tree (CST) as a graphviz DOT graph.