Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

ShToken.cpp

00001 // Sh: A GPU metaprogramming language. 00002 // 00003 // Copyright (c) 2003 University of Waterloo Computer Graphics Laboratory 00004 // Project administrator: Michael D. McCool 00005 // Authors: Zheng Qin, Stefanus Du Toit, Kevin Moule, Tiberiu S. Popa, 00006 // Michael D. McCool 00007 // 00008 // This software is provided 'as-is', without any express or implied 00009 // warranty. In no event will the authors be held liable for any damages 00010 // arising from the use of this software. 00011 // 00012 // Permission is granted to anyone to use this software for any purpose, 00013 // including commercial applications, and to alter it and redistribute it 00014 // freely, subject to the following restrictions: 00015 // 00016 // 1. The origin of this software must not be misrepresented; you must 00017 // not claim that you wrote the original software. If you use this 00018 // software in a product, an acknowledgment in the product documentation 00019 // would be appreciated but is not required. 00020 // 00021 // 2. Altered source versions must be plainly marked as such, and must 00022 // not be misrepresented as being the original software. 00023 // 00024 // 3. This notice may not be removed or altered from any source 00025 // distribution. 00027 #include <iostream> 00028 #include "ShToken.hpp" 00029 #include "ShTokenizer.hpp" 00030 #include "ShUtility.hpp" 00031 00032 namespace SH { 00033 00038 char* tokenNames[] = { 00039 "IF", 00040 "ELSE", 00041 "ENDIF", 00042 "WHILE", 00043 "ENDWHILE", 00044 "DO", 00045 "UNTIL", 00046 "FOR", 00047 "ENDFOR", 00048 "BREAK", 00049 "CONTINUE", 00050 "SWITCH", 00051 "ENDSWITCH", 00052 "CASE", 00053 "DEFAULT" 00054 }; 00055 00056 ShToken::ShToken(ShTokenType type) 00057 : m_type(type) 00058 { 00059 } 00060 00061 ShToken::~ShToken() 00062 { 00063 } 00064 00065 ShTokenType ShToken::type() 00066 { 00067 return m_type; 00068 00069 } 00070 00071 00072 void ShToken::print(std::ostream& out, int indent) const 00073 { 00074 shPrintIndent(out, indent); 00075 out << tokenNames[m_type]; 00076 if (!arguments.empty()) out << "<"; 00077 out << std::endl; 00078 00079 for (std::vector<ShTokenArgument>::const_iterator I = arguments.begin(); 00080 I != arguments.end(); ++I) { 00081 shPrintIndent(out, indent + 2); 00082 out << I->result.name() << ", initialized using" << std::endl; 00083 I->blockList->print(out, indent + 2); 00084 } 00085 if (!arguments.empty()) out << '>' << std::endl; 00086 } 00087 00088 }

Generated on Mon Oct 18 14:17:40 2004 for Sh by doxygen 1.3.7