lib Library API Documentation

koscript_parsenode.h

00001 /* This file is part of the KDE project 00002 Copyright (C) 1998, 1999, 2000 Torben Weis <weis@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00017 Boston, MA 02111-1307, USA. 00018 */ 00019 00020 #ifndef __KSCRIPT_PARSENODE_H__ 00021 #define __KSCRIPT_PARSENODE_H__ 00022 00023 #include <qstring.h> 00024 00025 #include "koscript_types.h" 00026 00027 #define MAX_NODE_SIZE 255 00028 00029 typedef enum 00030 { 00031 definitions = 0, 00032 exports, 00033 t_vertical_line, 00034 t_circumflex, 00035 t_ampersand, 00036 t_shiftright, 00037 t_shiftleft, 00038 t_plus_sign, 00039 t_minus_sign, 00040 t_asterik, 00041 t_solidus, 00042 t_percent_sign, 00043 t_tilde, 00044 t_integer_literal, 00045 t_string_literal, 00046 t_character_literal, 00047 t_floating_pt_literal, 00048 t_boolean_literal, 00049 scoped_name, 00050 const_dcl, 00051 func_dcl, 00052 func_lines, 00053 assign_expr, 00054 t_equal, 00055 t_notequal, 00056 t_less_or_equal, 00057 t_greater_or_equal, 00058 t_array, 00059 t_dict, 00060 func_params, 00061 func_param_in, 00062 func_param_out, 00063 func_param_inout, 00064 t_func_call, 00065 member_expr, 00066 t_array_const, 00067 t_array_element, 00068 t_dict_const, 00069 t_dict_element, 00070 t_while, 00071 t_do, 00072 t_for, 00073 t_if, 00074 t_incr, 00075 t_decr, 00076 t_less, 00077 t_greater, 00078 t_foreach, 00079 t_match, 00080 t_subst, 00081 t_not, 00082 func_call_params, 00083 t_return, 00084 destructor_dcl, 00085 import, 00086 t_struct, 00087 t_struct_members, 00088 t_qualified_names, 00089 t_scope, 00090 t_try, 00091 t_catch, 00092 t_catch_default, 00093 t_raise, 00094 t_cell, 00095 t_range, 00096 from, 00097 plus_assign, 00098 minus_assign, 00099 bool_or, 00100 bool_and, 00101 t_regexp_group, 00102 t_input, 00103 t_line, 00104 t_match_line 00105 } KSParseNodeType; 00106 00107 class KSContext; 00108 00113 class KSParseNodeExtra 00114 { 00115 public: 00116 virtual ~KSParseNodeExtra() { } 00117 }; 00118 00119 class KSParseNode 00120 { 00121 private: 00122 KSParseNode &operator=(const KSParseNode &rhs); 00123 KSParseNode(const KSParseNode &rhs); 00124 00125 KSParseNodeType type; 00126 QString ident; 00127 00128 QString fname; 00129 long line_no; 00130 bool bIsToplevel; 00131 00132 union u { 00133 KScript::Long _int; 00134 KScript::Boolean _bool; 00135 KScript::Double _float; 00136 ushort _char; 00137 } _u; 00138 QString* str; 00139 00140 KSParseNodeExtra* m_extra; 00141 KSParseNode *b1; 00142 KSParseNode *b2; 00143 KSParseNode *b3; 00144 KSParseNode *b4; 00145 KSParseNode *b5; 00146 00147 void printBranch( int indent, const char *tag, bool detailed ); 00148 00149 public: 00150 KSParseNode( KSParseNodeType aType, KSParseNode *one = NULL, 00151 KSParseNode *two = NULL, KSParseNode *three = NULL, 00152 KSParseNode *four = NULL, KSParseNode *five = NULL ); 00153 ~KSParseNode(); 00154 void clear(); 00155 00156 bool eval( KSContext& ); 00157 00158 KSParseNodeType getType() const; 00159 void setIdent( const char *anIdent ); 00160 void setIdent( QString* anIdent ); 00161 void setIdent( const QString& anIdent ); 00162 QString getIdent(); 00163 QString getFname(); 00164 long getLineNo(); 00165 bool isToplevel(); 00166 00167 void setIntegerLiteral( KScript::Long l ); 00168 KScript::Long getIntegerLiteral(); 00169 void setStringLiteral( const char *s ); 00170 void setStringLiteral( const QString& s ); 00171 void setStringLiteral( QString* s ); 00172 QString getStringLiteral(); 00173 void setCharacterLiteral( const KScript::Char& c ); 00174 KScript::Char getCharacterLiteral(); 00175 void setFloatingPtLiteral( KScript::Double f ); 00176 KScript::Double getFloatingPtLiteral(); 00177 void setBooleanLiteral( KScript::Boolean b ); 00178 KScript::Boolean getBooleanLiteral(); 00179 00180 KSParseNode *branch1() { return b1; } 00181 KSParseNode *branch2() { return b2; } 00182 KSParseNode *branch3() { return b3; } 00183 KSParseNode *branch4() { return b4; } 00184 KSParseNode *branch5() { return b5; } 00185 KSParseNode *getBranch( int i ); 00186 void setBranch( int i, KSParseNode *node ); 00187 00188 KSParseNodeExtra* extra(); 00189 void setExtra( KSParseNodeExtra* e ); 00190 00191 void print( bool detailed = false ); 00192 }; 00193 00194 #endif
KDE Logo
This file is part of the documentation for lib Library Version 1.3.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Sep 28 04:04:01 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003