From 1bcaa2c59283d8a9d05a2251343db54ebbe62f99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 14 May 2007 16:53:38 +0000 Subject: [PATCH] Building statement list; NEW, NEWARRAY, DELETE, DELETEARRAY --- main.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 0595d9a04..6d377f455 100644 --- a/main.cpp +++ b/main.cpp @@ -25,7 +25,7 @@ void Tokenize(const char FileName[]); std::vector VariableNames; struct STATEMENT { - enum etype {OBRACE, EBRACE, DECL, ASSIGN, USE}; + enum etype {OBRACE, EBRACE, DECL, ASSIGN, NEW, DELETE, NEWARRAY, DELETEARRAY}; etype Type; unsigned int VarIndex; }; @@ -594,8 +594,35 @@ void CreateStatementList() break; if (match(tok2,"var =")) - AppendStatement(STATEMENT::ASSIGN, tok2->str); + { + TOKEN *rs = tok2->next->next; + + if ( match(rs,"new type ;") ) + AppendStatement(STATEMENT::NEW, tok2->str); + + else if ( match(rs, "new type (") ) + AppendStatement(STATEMENT::NEW, tok2->str); + + else if ( match(rs, "new type [") ) + AppendStatement(STATEMENT::NEWARRAY, tok2->str); + + else + AppendStatement(STATEMENT::ASSIGN, tok2->str); + } } + + // Delete.. + for (TOKEN *tok2 = tok; tok2; tok2 = tok2->next) + { + if (tok2->str[0]==';') + break; + + if (match(tok2,"delete var ;")) + AppendStatement(STATEMENT::DELETE, getstr(tok2,1)); + if (match(tok2,"delete [ ] var ;")) + AppendStatement(STATEMENT::DELETEARRAY, getstr(tok2,3)); + } + } } @@ -628,6 +655,24 @@ void CreateStatementList() case STATEMENT::ASSIGN: std::cout << "assign " << VariableNames[s.VarIndex] << "\n"; break; + + case STATEMENT::NEW: + std::cout << "new " << VariableNames[s.VarIndex] << "\n"; + break; + + case STATEMENT::NEWARRAY: + std::cout << "new[] " << VariableNames[s.VarIndex] << "\n"; + break; + + case STATEMENT::DELETE: + std::cout << "delete " << VariableNames[s.VarIndex] << "\n"; + break; + + case STATEMENT::DELETEARRAY: + std::cout << "delete[] " << VariableNames[s.VarIndex] << "\n"; + break; + + }; } // }