summaryrefslogtreecommitdiff
path: root/src/parse/lex.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse/lex.hpp')
-rw-r--r--src/parse/lex.hpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/parse/lex.hpp b/src/parse/lex.hpp
index da56c6ba..47c2db60 100644
--- a/src/parse/lex.hpp
+++ b/src/parse/lex.hpp
@@ -133,8 +133,12 @@ public:
#define CLEAR_PARSE_FLAG(lex, flag) SavedParseState _sps(lex, lex.parse_state()); lex.parse_state().flag = false
#define CHECK_PARSE_FLAG(lex, flag) (lex.parse_state().flag == true)
-class Lexer
+class Lexer:
+ public TokenStream
{
+ ::std::string m_path;
+ unsigned int m_line;
+
::std::ifstream m_istream;
bool m_last_char_valid;
char m_last_char;
@@ -142,16 +146,19 @@ class Lexer
public:
Lexer(::std::string filename);
- Token getToken();
+ virtual Position getPosition() const override;
+ virtual Token realGetToken() override;
private:
+ Token getTokenInt();
+
signed int getSymbol();
double parseFloat(uint64_t whole);
uint32_t parseEscape(char enclosing);
char getc();
char getc_num();
- void putback();
+ void ungetc();
class EndOfFile {};
};