mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Splitting out CharStream from Scanner.
This commit is contained in:
committed by
Alex Beregszaszi
parent
87821c53c3
commit
2518b5314c
+1
-31
@@ -54,6 +54,7 @@
|
||||
|
||||
#include <libdevcore/Common.h>
|
||||
#include <libdevcore/CommonData.h>
|
||||
#include <liblangutil/CharStream.h>
|
||||
#include <liblangutil/SourceLocation.h>
|
||||
#include <liblangutil/Token.h>
|
||||
|
||||
@@ -62,41 +63,10 @@ namespace dev
|
||||
namespace solidity
|
||||
{
|
||||
|
||||
|
||||
class AstRawString;
|
||||
class AstValueFactory;
|
||||
class ParserRecorder;
|
||||
|
||||
class CharStream
|
||||
{
|
||||
public:
|
||||
CharStream(): m_position(0) {}
|
||||
explicit CharStream(std::string const& _source): m_source(_source), m_position(0) {}
|
||||
int position() const { return m_position; }
|
||||
bool isPastEndOfInput(size_t _charsForward = 0) const { return (m_position + _charsForward) >= m_source.size(); }
|
||||
char get(size_t _charsForward = 0) const { return m_source[m_position + _charsForward]; }
|
||||
char advanceAndGet(size_t _chars = 1);
|
||||
char rollback(size_t _amount);
|
||||
|
||||
void reset() { m_position = 0; }
|
||||
|
||||
std::string const& source() const { return m_source; }
|
||||
|
||||
///@{
|
||||
///@name Error printing helper functions
|
||||
/// Functions that help pretty-printing parse errors
|
||||
/// Do only use in error cases, they are quite expensive.
|
||||
std::string lineAtPosition(int _position) const;
|
||||
std::tuple<int, int> translatePositionToLineColumn(int _position) const;
|
||||
///@}
|
||||
|
||||
private:
|
||||
std::string m_source;
|
||||
size_t m_position;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class Scanner
|
||||
{
|
||||
friend class LiteralScope;
|
||||
|
||||
Reference in New Issue
Block a user