BAM
Abstract Machine for Bottom-Up Evaluation with the Push Method
tok.h
Go to the documentation of this file.
1 // ============================================================================
2 // Project: Deductive Database
3 // Filename: tok.h
4 // Purpose: Token types
5 // Last Change: 04.08.2017
6 // Language: C++
7 // EMail: brass@informatik.uni-halle.de
8 // WWW: http://www.informatik.uni-halle.de/~brass/
9 // Address: Feldschloesschen 15, D-06120 Halle (Saale), GERMANY
10 // Copyright: (c) 1998-2017 by Stefan Brass
11 // License: See file "LICENSE" for copying conditions.
12 // Note: There is no warranty at all - this code may contain bugs.
13 // ============================================================================
14 
21 //=============================================================================
22 // Include File Frame:
23 //=============================================================================
24 
25 #ifndef TOK_INCLUDED
26 #define TOK_INCLUDED
27 
28 //=============================================================================
29 // Used Types and Macros:
30 //=============================================================================
31 
32 #ifndef VER_INCLUDED
33 #include "../base/ver.h"
34 #endif
35 
36 #ifndef STR_INCLUDED
37 #include "../base/str.h"
38 #endif
39 
40 #ifndef CHECK_INCLUDED
41 #include "../base/check.h"
42 #endif
43 
44 //=============================================================================
45 // Exported Types:
46 //=============================================================================
47 
48 //-----------------------------------------------------------------------------
49 // tok_t: Token types.
50 //-----------------------------------------------------------------------------
51 
56 typedef enum tok_enum {
57  TOK_EOF,
58  TOK_FULLSTOP,
59  TOK_ATOM,
60  TOK_STR,
61  TOK_INT,
62  TOK_VAR,
63  TOK_ANONVAR,
64  TOK_COMMA,
65  TOK_LPAREN,
66  TOK_RPAREN,
67  TOK_IF,
68  TOK_AND,
69  TOK_OR,
70  TOK_NOT,
71  TOK_QUERY,
72  TOK_COLON,
73  TOK_LESS,
74  TOK_GREATER,
75  TOK_MINUS,
76  TOK_ILLEGAL_CHAR,
77  TOK_MISSINGQ,
78  TOK_NOSPACE,
79  TOK_INT_OVERFLOW,
80  TOK_BAD_ESCAPE_SEQ
81 } tok_t;
82 
83 //=============================================================================
84 // Exported Functions:
85 //=============================================================================
86 
87 //-----------------------------------------------------------------------------
88 // tok_valid: Is the parameter a valid element of the enumeration type?
89 //-----------------------------------------------------------------------------
90 
91 #if VER_DEBUG
92 bool tok_valid(tok_t tok);
93 #endif
94 
95 //-----------------------------------------------------------------------------
96 // tok_name: Name of token type.
97 //-----------------------------------------------------------------------------
98 
99 str_t tok_name(tok_t tok);
100 
101 //-----------------------------------------------------------------------------
102 // tok_is_err: The token type marks a lexical error.
103 //-----------------------------------------------------------------------------
104 
105 inline bool tok_is_err(tok_t tok)
106 {
107  return (tok == TOK_ILLEGAL_CHAR ||
108  tok == TOK_MISSINGQ ||
109  tok == TOK_NOSPACE ||
110  tok == TOK_INT_OVERFLOW ||
111  tok == TOK_BAD_ESCAPE_SEQ);
112 }
113 
114 //=============================================================================
115 // End of File:
116 //=============================================================================
117 
118 #endif
119 
const char * str_t
Definition: str.h:41
enum tok_enum tok_t
tok_enum
Definition: tok.h:56