blob: 841c67b61cdb53043acda20b56a7fe2093521405 [file] [log] [blame]
alokp@chromium.org04d7d222012-05-16 19:24:07 +00001//
2// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
Geoff Lang0a73dd82014-11-19 16:18:08 -05007#ifndef COMPILER_PREPROCESSOR_EXPRESSIONPARSER_H_
8#define COMPILER_PREPROCESSOR_EXPRESSIONPARSER_H_
alokp@chromium.org04d7d222012-05-16 19:24:07 +00009
Olli Etuaho247374c2015-09-09 15:07:24 +030010#include "DiagnosticsBase.h"
alokp@chromium.org04d7d222012-05-16 19:24:07 +000011#include "pp_utils.h"
12
13namespace pp
14{
15
16class Lexer;
17struct Token;
18
19class ExpressionParser
20{
21 public:
Olli Etuaho247374c2015-09-09 15:07:24 +030022 struct ErrorSettings
23 {
24 Diagnostics::ID unexpectedIdentifier;
25 bool integerLiteralsMustFit32BitSignedRange;
26 };
27
Zhenyao Mod526f982014-05-13 14:51:19 -070028 ExpressionParser(Lexer *lexer, Diagnostics *diagnostics);
alokp@chromium.org04d7d222012-05-16 19:24:07 +000029
Olli Etuaho247374c2015-09-09 15:07:24 +030030 bool parse(Token *token,
31 int *result,
32 bool parsePresetToken,
33 const ErrorSettings &errorSettings,
34 bool *valid);
alokp@chromium.org04d7d222012-05-16 19:24:07 +000035
36 private:
37 PP_DISALLOW_COPY_AND_ASSIGN(ExpressionParser);
38
Zhenyao Mod526f982014-05-13 14:51:19 -070039 Lexer *mLexer;
40 Diagnostics *mDiagnostics;
alokp@chromium.org04d7d222012-05-16 19:24:07 +000041};
42
43} // namespace pp
Geoff Lang0a73dd82014-11-19 16:18:08 -050044
45#endif // COMPILER_PREPROCESSOR_EXPRESSIONPARSER_H_