From 7ad1a8b4b40784e0a10bd453c75dd0dcf123d5f1 Mon Sep 17 00:00:00 2001 From: "John Hodge (bugs)" Date: Sat, 22 Nov 2014 23:36:20 +0800 Subject: Initial commit, lexer structurally complete, parsing hacking up --- parse/preproc.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 parse/preproc.cpp (limited to 'parse/preproc.cpp') diff --git a/parse/preproc.cpp b/parse/preproc.cpp new file mode 100644 index 00000000..ec64d731 --- /dev/null +++ b/parse/preproc.cpp @@ -0,0 +1,50 @@ +#include "preproc.hpp" +#include + +Preproc::Preproc(::std::string path): + m_cache_valid(false), + m_lex(path) +{ + //ctor +} + +Preproc::~Preproc() +{ + //dtor +} + +Token Preproc::getTokenInt() +{ + while(true) + { + Token tok = m_lex.getToken(); + ::std::cout << "getTokenInt: tok = " << tok << ::std::endl; + switch(tok.type()) + { + case TOK_WHITESPACE: + continue; + case TOK_COMMENT: + continue; + default: + return tok; + } + } +} + +Token Preproc::getToken() +{ + if( m_cache_valid ) + { + m_cache_valid = false; + return m_cache; + } + else + { + return this->getTokenInt(); + } +} +void Preproc::putback(Token tok) +{ + m_cache_valid = true; + m_cache = tok; +} -- cgit v1.2.3