From 6e19bb560d474736d45f5be011ff0830c7019991 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Mon, 5 Nov 2018 23:34:00 +0200 Subject: Squashed 'spasm/' content from commit 08ee95d git-subtree-dir: spasm git-subtree-split: 08ee95d89054ba0d33697d613799a0a013aedf89 --- src/asm/lexdump3.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/asm/lexdump3.cpp (limited to 'src/asm/lexdump3.cpp') diff --git a/src/asm/lexdump3.cpp b/src/asm/lexdump3.cpp new file mode 100644 index 0000000..4e4ce9e --- /dev/null +++ b/src/asm/lexdump3.cpp @@ -0,0 +1,62 @@ +#include +#include + +#include + +#include "token.hpp" +#include "tokenizer.hpp" + +using namespace SpasmImpl::ASM::Lexer; + +#define TOKENS \ + TOK(push) \ + TOK(pop) \ + TOK(dup) \ + TOK(print) \ + TOK(read) \ + TOK(plus) \ + TOK(minus) \ + TOK(multiply) \ + TOK(divide) \ + TOK(modulus) \ + TOK(gotrue) \ + TOK(gofalse) \ + TOK(go) \ + TOK(call) \ + TOK(ret) \ + TOK(load) \ + TOK(store) \ + TOK(label) \ + TOK(ident) \ + TOK(integer) \ + TOK(xinteger) \ + TOK(endinput) + +const char* token_name[24] = {"halt", +#define TOK(x) #x, + TOKENS +#undef TOK + "notused!!!"}; + +int main() +{ + Tokenizer td(std::cin); + Token token; + + token = td.next_token(); + while (token.type() != Token::endinput) + { + token = td.next_token(); + Token::Token_type ttype = token.type(); + std::cout.width(8); + std::cout << token.lineno(); + std::cout << ": " << token_name[ttype]; + if (ttype == Token::integer || ttype == Token::xinteger) + std::cout << '|' << token.value_int() << '|'; + else if (ttype == Token::ident) + std::cout << '|' << token.value_str() << '|'; + std::cout << std::endl; + } + + return 0; +} -- cgit v1.3.1-23-gd82d