1 /*- 2 * Copyright (c) 2007, Marcus von Appen 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer 10 * in this position and unchanged. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * 26 * $FreeBSD$ 27 * 28 */ 29 30 #ifndef CGRAPH_H 31 #define CGRAPH_H 32 33 #include "graph.h" 34 35 /* 36 * Possible token types. The C language specs define several constructs, 37 * which have to be taken care of. 38 */ 39 enum 40 { 41 UNKNOWN, /* Unknown token type. */ 42 ENDOFFILE, /* End of file marker, set by EOF. */ 43 44 ARGSTART, /* Argument list of something. */ 45 ARGEND, /* Argument list of something. */ 46 47 BODYSTART, /* Body of an object, enclosed by brackets. */ 48 BODYEND, /* Body of an object, enclosed by brackets. */ 49 50 STATIC, /* 'static' keyword. */ 51 EXTERN, /* 'extern' keyword. */ 52 TYPEDEF, /* 'typedef' keyword. */ 53 STRUCT, /* 'struct'or 'union'. */ 54 ENUM, /* 'enum'. */ 55 56 ARRAYSTART, /* Array access, like e.g str[7] or foo[get_no()]. */ 57 ARRAYEND, /* Array access, like e.g str[7] or foo[get_no()]. */ 58 OPERATOR, /* Operator, e.g. +, -, /, ... */ 59 SEMICOLON, /* ; */ 60 COLON, /* : */ 61 COMMA, /* , */ 62 ASSIGN, /* Assignment of an variable, e.g. = or combines. */ 63 REFERENCE, /* Reference access through pointers, e.g. -> or '.'. */ 64 POINTER, /* Pointer '*' */ 65 66 IDENTIFIER /* An identifier like 'i' or 'strcmp'. */ 67 }; 68 69 bool_t lex_create_graph (graph_t *graph, FILE *fp, char *filename); 70 71 #endif /* CGRAPH_H */ 72