blob: 7a6fa87b040de0987c896e82333522491b738d61 [file] [log] [blame]
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "Input.h"
#include "Lexer.h"
#include "pp_utils.h"
namespace pp
class Diagnostics;
class Tokenizer : public Lexer
struct Context
Diagnostics* diagnostics;
Input input;
// The location where yytext points to. Token location should track
// scanLoc instead of Input::mReadLoc because they may not be the same
// if text is buffered up in the scanner input buffer.
Input::Location scanLoc;
bool leadingSpace;
bool lineStart;
static const std::size_t kMaxTokenLength;
Tokenizer(Diagnostics* diagnostics);
bool init(size_t count, const char* const string[], const int length[]);
void setFileNumber(int file);
void setLineNumber(int line);
virtual void lex(Token* token);
bool initScanner();
void destroyScanner();
void* mHandle; // Scanner handle.
Context mContext; // Scanner extra.
} // namespace pp