blob: 0f2901b8786079fa2bc88b8169abde03ca13a07d [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
Corentin Wallez054f7ed2016-09-20 17:15:59 -040010#include "common/angleutils.h"
11#include "compiler/preprocessor/DiagnosticsBase.h"
alokp@chromium.org04d7d222012-05-16 19:24:07 +000012
13namespace pp
14{
15
16class Lexer;
17struct Token;
18
Corentin Wallez054f7ed2016-09-20 17:15:59 -040019class ExpressionParser : angle::NonCopyable
alokp@chromium.org04d7d222012-05-16 19:24:07 +000020{
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:
Zhenyao Mod526f982014-05-13 14:51:19 -070037 Lexer *mLexer;
38 Diagnostics *mDiagnostics;
alokp@chromium.org04d7d222012-05-16 19:24:07 +000039};
40
41} // namespace pp
Geoff Lang0a73dd82014-11-19 16:18:08 -050042
43#endif // COMPILER_PREPROCESSOR_EXPRESSIONPARSER_H_