00001 //========================================================================== 00002 // nedsemanticvalidator.h - part of the OMNeT++ Discrete System Simulation System 00003 // 00004 // Contents: 00005 // class NEDSemanticValidator 00006 // 00007 //========================================================================== 00008 00009 /*--------------------------------------------------------------* 00010 Copyright (C) 2002-2003 Andras Varga 00011 00012 This file is distributed WITHOUT ANY WARRANTY. See the file 00013 `license' for details on this and other legal matters. 00014 *--------------------------------------------------------------*/ 00015 00016 00017 #ifndef __NEDSEMANTICVALIDATOR_H 00018 #define __NEDSEMANTICVALIDATOR_H 00019 00020 #include <string.h> 00021 #include "nedvalidator.h" 00022 00023 class NEDSymbolTable; 00024 00030 class NEDSemanticValidator : public NEDValidatorBase 00031 { 00032 protected: 00033 bool parsedExpressions; 00034 NEDSymbolTable *symboltable; 00035 00036 // temporary variables: 00037 NEDElement *moduletypedecl; 00038 00039 NEDElement *findChildWithTagAndAttribute(NEDElement *node, int tag, const char *attr, const char *value); 00040 00041 public: 00042 NEDSemanticValidator(bool parsedExpr, NEDSymbolTable *symbtab); 00043 virtual ~NEDSemanticValidator(); 00044 00045 virtual void validateElement(NedFilesNode *node); 00046 virtual void validateElement(NedFileNode *node); 00047 virtual void validateElement(ImportNode *node); 00048 virtual void validateElement(ImportedFileNode *node); 00049 virtual void validateElement(ChannelNode *node); 00050 virtual void validateElement(ChannelAttrNode *node); 00051 virtual void validateElement(NetworkNode *node); 00052 virtual void validateElement(SimpleModuleNode *node); 00053 virtual void validateElement(CompoundModuleNode *node); 00054 virtual void validateElement(ParamsNode *node); 00055 virtual void validateElement(ParamNode *node); 00056 virtual void validateElement(GatesNode *node); 00057 virtual void validateElement(GateNode *node); 00058 virtual void validateElement(MachinesNode *node); 00059 virtual void validateElement(MachineNode *node); 00060 virtual void validateElement(SubmodulesNode *node); 00061 virtual void validateElement(SubmoduleNode *node); 00062 virtual void validateElement(SubstparamsNode *node); 00063 virtual void validateElement(SubstparamNode *node); 00064 virtual void validateElement(GatesizesNode *node); 00065 virtual void validateElement(GatesizeNode *node); 00066 virtual void validateElement(SubstmachinesNode *node); 00067 virtual void validateElement(SubstmachineNode *node); 00068 virtual void validateElement(ConnectionsNode *node); 00069 virtual void validateElement(ConnectionNode *node); 00070 virtual void validateElement(ConnAttrNode *node); 00071 virtual void validateElement(ForLoopNode *node); 00072 virtual void validateElement(LoopVarNode *node); 00073 virtual void validateElement(DisplayStringNode *node); 00074 virtual void validateElement(ExpressionNode *node); 00075 virtual void validateElement(OperatorNode *node); 00076 virtual void validateElement(FunctionNode *node); 00077 virtual void validateElement(ParamRefNode *node); 00078 virtual void validateElement(IdentNode *node); 00079 virtual void validateElement(ConstNode *node); 00080 virtual void validateElement(CppincludeNode *node); 00081 virtual void validateElement(CppStructNode *node); 00082 virtual void validateElement(CppCobjectNode *node); 00083 virtual void validateElement(CppNoncobjectNode *node); 00084 virtual void validateElement(EnumNode *node); 00085 virtual void validateElement(EnumFieldsNode *node); 00086 virtual void validateElement(EnumFieldNode *node); 00087 virtual void validateElement(MessageNode *node); 00088 virtual void validateElement(ClassNode *node); 00089 virtual void validateElement(StructNode *node); 00090 virtual void validateElement(FieldsNode *node); 00091 virtual void validateElement(FieldNode *node); 00092 virtual void validateElement(PropertiesNode *node); 00093 virtual void validateElement(PropertyNode *node); 00094 virtual void validateElement(UnknownNode *node); 00095 }; 00096 00097 #endif 00098