Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4680 right-hear 1
/*
2
** $Id: llex.h,v 1.65 2010/04/05 16:35:37 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
/* maximum length of a reserved word */
17
#define TOKEN_LEN	(sizeof("function")/sizeof(char))
18
 
19
 
20
/*
21
* WARNING: if you change the order of this enumeration,
22
* grep "ORDER RESERVED"
23
*/
24
enum RESERVED {
25
  /* terminal symbols denoted by reserved words */
26
  TK_AND = FIRST_RESERVED, TK_BREAK,
27
  TK_DO, TK_ELSE, TK_ELSEIF, TK_END, TK_FALSE, TK_FOR, TK_FUNCTION,
28
  TK_IF, TK_IN, TK_LOCAL, TK_NIL, TK_NOT, TK_OR, TK_REPEAT,
29
  TK_RETURN, TK_THEN, TK_TRUE, TK_UNTIL, TK_WHILE,
30
  /* other terminal symbols */
31
  TK_CONCAT, TK_DOTS, TK_EQ, TK_GE, TK_LE, TK_NE, TK_EOS,
32
  TK_NUMBER, TK_NAME, TK_STRING
33
};
34
 
35
/* number of reserved words */
36
#define NUM_RESERVED	(cast(int, TK_WHILE-FIRST_RESERVED+1))
37
 
38
 
39
typedef union {
40
  lua_Number r;
41
  TString *ts;
42
} SemInfo;  /* semantics information */
43
 
44
 
45
typedef struct Token {
46
  int token;
47
  SemInfo seminfo;
48
} Token;
49
 
50
 
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;  /* `FuncState' is private to the parser */
58
  struct lua_State *L;
59
  ZIO *z;  /* input stream */
60
  Mbuffer *buff;  /* buffer for tokens */
61
  struct Varlist *varl;  /* list of all active local variables */
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);
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 void luaX_syntaxerror (LexState *ls, const char *s);
75
LUAI_FUNC const char *luaX_token2str (LexState *ls, int token);
76
 
77
 
78
#endif