b5ec9f5cb7103b7bee5350132797c91340ddc510
[m6w6/ext-psi] / src / parser.h
1 #ifndef _PSI_PARSER_H
2 #define _PSI_PARSER_H
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <stdarg.h>
7 #include <string.h>
8
9 #include "parser_proc.h"
10
11 #define BSIZE 256
12
13 #include "token.h"
14 #include "types.h"
15 #include "data.h"
16
17 struct psi_parser {
18 PSI_DATA_MEMBERS;
19 FILE *fp;
20 token_t num;
21 void *proc;
22 unsigned line, col;
23 char *cur, *tok, *lim, *eof, *ctx, *mrk, buf[BSIZE];
24 };
25
26 #define PSI_PARSER_DEBUG 0x1
27 #define PSI_PARSER_SILENT 0x2
28
29 struct psi_parser *psi_parser_init(struct psi_parser *P, const char *filename, psi_error_cb error, unsigned flags);
30 void psi_parser_syntax_error(struct psi_parser *P, const char *fn, size_t ln, const char *msg, ...);
31 ssize_t psi_parser_fill(struct psi_parser *P, size_t n);
32 token_t psi_parser_scan(struct psi_parser *P);
33 void psi_parser_parse(struct psi_parser *P, struct psi_token *src);
34 void psi_parser_dtor(struct psi_parser *P);
35 void psi_parser_free(struct psi_parser **P);
36
37 #endif