554556f764afdf504b9cc9063971f7a22313f7e3
[WebKit-https.git] / JavaScriptCore / parser / JSParser.h
1 /*
2  * Copyright (C) 2010 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef JSParser_h
27 #define JSParser_h
28
29 namespace JSC {
30
31 class Identifier;
32 class JSGlobalData;
33
34 enum JSTokenType {
35     NULLTOKEN = 258,
36     TRUETOKEN = 259,
37     FALSETOKEN = 260,
38     BREAK = 261,
39     CASE = 262,
40     DEFAULT = 263,
41     FOR = 264,
42     NEW = 265,
43     VAR = 266,
44     CONSTTOKEN = 267,
45     CONTINUE = 268,
46     FUNCTION = 269,
47     RETURN = 270,
48     VOIDTOKEN = 271,
49     DELETETOKEN = 272,
50     IF = 273,
51     THISTOKEN = 274,
52     DO = 275,
53     WHILE = 276,
54     INTOKEN = 277,
55     INSTANCEOF = 278,
56     TYPEOF = 279,
57     SWITCH = 280,
58     WITH = 281,
59     RESERVED = 282,
60     THROW = 283,
61     TRY = 284,
62     CATCH = 285,
63     FINALLY = 286,
64     DEBUGGER = 287,
65     IF_WITHOUT_ELSE = 288,
66     ELSE = 289,
67     EQEQ = 290,
68     NE = 291,
69     STREQ = 292,
70     STRNEQ = 293,
71     LE = 294,
72     GE = 295,
73     OR = 296,
74     AND = 297,
75     PLUSPLUS = 298,
76     MINUSMINUS = 299,
77     LSHIFT = 300,
78     RSHIFT = 301,
79     URSHIFT = 302,
80     PLUSEQUAL = 303,
81     MINUSEQUAL = 304,
82     MULTEQUAL = 305,
83     DIVEQUAL = 306,
84     LSHIFTEQUAL = 307,
85     RSHIFTEQUAL = 308,
86     URSHIFTEQUAL = 309,
87     ANDEQUAL = 310,
88     MODEQUAL = 311,
89     XOREQUAL = 312,
90     OREQUAL = 313,
91     OPENBRACE = 314,
92     CLOSEBRACE = 315,
93     NUMBER = 316,
94     IDENT = 317,
95     STRING = 318,
96     AUTOPLUSPLUS = 319,
97     AUTOMINUSMINUS = 320
98 };
99
100 union JSTokenData {
101     int intValue;
102     double doubleValue;
103     const Identifier* ident;
104 };
105 typedef JSTokenData YYSTYPE;
106
107 struct JSTokenInfo {
108     JSTokenInfo() : last_line(0) {}
109     int first_line;
110     int last_line;
111     int first_column;
112     int last_column;
113 };
114 typedef JSTokenInfo YYLTYPE;
115 struct JSToken {
116     int m_type;
117     JSTokenData m_data;
118     JSTokenInfo m_info;
119 };
120
121 int jsParse(JSGlobalData*);
122 }
123 #endif // JSParser_h