llex.h revision 1.1
1/*	$NetBSD: llex.h,v 1.1 2010/10/31 11:16:57 mbalmer Exp $	*/
2
3/*
4** Id: llex.h,v 1.58.1.1 2007/12/27 13:02:25 roberto Exp
5** Lexical Analyzer
6** See Copyright Notice in lua.h
7*/
8
9#ifndef llex_h
10#define llex_h
11
12#include "lobject.h"
13#include "lzio.h"
14
15
16#define FIRST_RESERVED	257
17
18/* maximum length of a reserved word */
19#define TOKEN_LEN	(sizeof("function")/sizeof(char))
20
21
22/*
23* WARNING: if you change the order of this enumeration,
24* grep "ORDER RESERVED"
25*/
26enum RESERVED {
27  /* terminal symbols denoted by reserved words */
28  TK_AND = FIRST_RESERVED, TK_BREAK,
29  TK_DO, TK_ELSE, TK_ELSEIF, TK_END, TK_FALSE, TK_FOR, TK_FUNCTION,
30  TK_IF, TK_IN, TK_LOCAL, TK_NIL, TK_NOT, TK_OR, TK_REPEAT,
31  TK_RETURN, TK_THEN, TK_TRUE, TK_UNTIL, TK_WHILE,
32  /* other terminal symbols */
33  TK_CONCAT, TK_DOTS, TK_EQ, TK_GE, TK_LE, TK_NE, TK_NUMBER,
34  TK_NAME, TK_STRING, TK_EOS
35};
36
37/* number of reserved words */
38#define NUM_RESERVED	(cast(int, TK_WHILE-FIRST_RESERVED+1))
39
40
41/* array with token `names' */
42LUAI_DATA const char *const luaX_tokens [];
43
44
45typedef union {
46  lua_Number r;
47  TString *ts;
48} SemInfo;  /* semantics information */
49
50
51typedef struct Token {
52  int token;
53  SemInfo seminfo;
54} Token;
55
56
57typedef struct LexState {
58  int current;  /* current character (charint) */
59  int linenumber;  /* input line counter */
60  int lastline;  /* line of last token `consumed' */
61  Token t;  /* current token */
62  Token lookahead;  /* look ahead token */
63  struct FuncState *fs;  /* `FuncState' is private to the parser */
64  struct lua_State *L;
65  ZIO *z;  /* input stream */
66  Mbuffer *buff;  /* buffer for tokens */
67  TString *source;  /* current source name */
68  char decpoint;  /* locale decimal point */
69} LexState;
70
71
72LUAI_FUNC void luaX_init (lua_State *L);
73LUAI_FUNC void luaX_setinput (lua_State *L, LexState *ls, ZIO *z,
74                              TString *source);
75LUAI_FUNC TString *luaX_newstring (LexState *ls, const char *str, size_t l);
76LUAI_FUNC void luaX_next (LexState *ls);
77LUAI_FUNC void luaX_lookahead (LexState *ls);
78LUAI_FUNC void luaX_lexerror (LexState *ls, const char *msg, int token);
79LUAI_FUNC void luaX_syntaxerror (LexState *ls, const char *s);
80LUAI_FUNC const char *luaX_token2str (LexState *ls, int token);
81
82
83#endif
84