Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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