-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpeggml.h
102 lines (75 loc) · 2.37 KB
/
peggml.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include "common.h"
typedef ty_real handle_t;
typedef ty_real symbol_id_t;
typedef ty_real index_t;
typedef ty_real uuid_t;
// ABI test -- should return "gml-peglib"
external ty_string
peggml_abi_test();
// Version number (can use this to compare header to compiled binary)
external ty_real
peggml_version();
#define PEGGML_VERSION 1.2
/// sets parsing stack size in bytes. (optional. Defaults to 8 mb.)
external ty_real
peggml_set_stack_size(ty_real size);
external ty_real
peggml_get_stack_size();
// how much of the stack depth is currently in use (in bytes)
external ty_real
peggml_stack_current_depth();
// estimates the maximum depth reached so far in the parsing stack (in bytes)
// (this can take a while, as it scans the memory.)
external ty_real
peggml_estimate_stack_usage();
// Create new parser for the given grammar syntax
// see [https://github.com/yhirose/cpp-peglib#cpp-peglib] for syntax
// returns its handle, or -1 on failure
external handle_t
peggml_parser_create(ty_string);
// Destroy grammar syntax
// (returns 0 on success)
external ty_real
peggml_parser_destroy(handle_t);
// enable packrat parsing
external ty_real
peggml_parser_enable_packrat(handle_t);
// define a nonzero symbol id for a symbol
// this will be returned from peggml_parse_next().
// if this is not invoked, the symbol will not be handlable.
external ty_real
peggml_parser_set_symbol_id(handle_t, ty_string, symbol_id_t);
// starts parsing the given string
external ty_real
peggml_parse_begin(handle_t, ty_string);
// returns symbol id if a new element is being parsed, 0 if parsing has completed.
external ty_real
peggml_parse_next();
external uuid_t
peggml_parse_elt_get_uuid();
external ty_string
peggml_parse_elt_get_string();
external ty_real
peggml_parse_elt_get_string_offset();
external ty_real
peggml_parse_elt_get_string_line();
external ty_real
peggml_parse_elt_get_string_column();
external ty_real
peggml_parse_elt_get_choice();
external index_t
peggml_parse_elt_get_child_count();
external uuid_t
peggml_parse_elt_get_child_uuid(index_t);
external index_t
peggml_parse_elt_get_token_count();
external ty_real
peggml_parse_elt_get_token_offset(index_t);
external ty_string
peggml_parse_elt_get_token_string(index_t);
// retrieves token 0 as a number
external ty_real
peggml_parse_elt_get_token_number();
// retrieves root uuid of most recent parse
external uuid_t
peggml_get_root_uuid();