# nedsemanticvalidator.h

Go to the documentation of this file.

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