1 /* 2 * Copyright (C) 2013-2014 Jo-Philipp Wich <jo@mein.io> 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef __AST_H_ 18 #define __AST_H_ 19 20 #include <stddef.h> 21 22 struct jp_opcode { 23 int type; 24 struct jp_opcode *next; 25 struct jp_opcode *down; 26 struct jp_opcode *sibling; 27 char *str; 28 int num; 29 }; 30 31 struct jp_state { 32 struct jp_opcode *pool; 33 struct jp_opcode *path; 34 int error_pos; 35 int error_code; 36 int off; 37 }; 38 39 static inline struct jp_opcode * 40 append_op(struct jp_opcode *a, struct jp_opcode *b) 41 { 42 struct jp_opcode *tail = a; 43 44 while (tail->sibling) 45 tail = tail->sibling; 46 47 tail->sibling = b; 48 49 return a; 50 } 51 52 struct jp_opcode *jp_alloc_op(struct jp_state *s, int type, int num, char *str, ...); 53 struct jp_state *jp_parse(const char *expr); 54 void jp_free(struct jp_state *s); 55 56 void *ParseAlloc(void *(*mfunc)(size_t)); 57 void Parse(void *pParser, int type, struct jp_opcode *op, struct jp_state *s); 58 void ParseFree(void *pParser, void (*ffunc)(void *)); 59 60 #endif /* __AST_H_ */ 61
This page was automatically generated by LXR 0.3.1. • OpenWrt