libutap
Public Member Functions | List of all members
UTAP::TypeChecker Class Reference

A visitor which type checks the system it visits. More...

#include <typechecker.h>

Inheritance diagram for UTAP::TypeChecker:
UTAP::SystemVisitor UTAP::AbstractStatementVisitor UTAP::StatementVisitor

Public Member Functions

 TypeChecker (TimedAutomataSystem *system, bool refinement=false)
 
virtual ~TypeChecker ()
 
virtual void visitTemplateAfter (template_t &)
 
virtual bool visitTemplateBefore (template_t &)
 
virtual void visitSystemAfter (TimedAutomataSystem *)
 
virtual void visitVariable (variable_t &)
 
virtual void visitState (state_t &)
 
virtual void visitEdge (edge_t &)
 
virtual void visitInstance (instance_t &)
 
virtual void visitProperty (expression_t)
 
virtual void visitFunction (function_t &)
 
virtual void visitProgressMeasure (progress_t &)
 
virtual void visitHybridClock (expression_t)
 
virtual void visitIODecl (iodecl_t &)
 
virtual void visitGanttChart (gantt_t &)
 
virtual void visitProcess (instance_t &)
 
virtual void visitInstanceLine (instanceLine_t &)
 
virtual void visitMessage (message_t &)
 
virtual void visitCondition (condition_t &)
 
virtual void visitUpdate (update_t &)
 
virtual int32_t visitEmptyStatement (EmptyStatement *stat)
 
virtual int32_t visitExprStatement (ExprStatement *stat)
 
virtual int32_t visitAssertStatement (AssertStatement *stat)
 
virtual int32_t visitForStatement (ForStatement *stat)
 
virtual int32_t visitIterationStatement (IterationStatement *stat)
 
virtual int32_t visitWhileStatement (WhileStatement *stat)
 
virtual int32_t visitDoWhileStatement (DoWhileStatement *stat)
 
virtual int32_t visitBlockStatement (BlockStatement *stat)
 
virtual int32_t visitIfStatement (IfStatement *stat)
 
virtual int32_t visitReturnStatement (ReturnStatement *stat)
 
bool checkDynamicExpressions (Statement *stat)
 
bool checkExpression (expression_t)
 Type check an expression. More...
 
bool checkSpawnParameterCompatible (type_t param, expression_t arg)
 
bool checkSpawnAndExit (expression_t)
 
- Public Member Functions inherited from UTAP::SystemVisitor
virtual ~SystemVisitor ()
 
virtual void visitSystemBefore (TimedAutomataSystem *)
 
virtual void visitTypeDef (symbol_t)
 
- Public Member Functions inherited from UTAP::AbstractStatementVisitor
virtual int32_t visitSwitchStatement (SwitchStatement *stat)
 
virtual int32_t visitCaseStatement (CaseStatement *stat)
 
virtual int32_t visitDefaultStatement (DefaultStatement *stat)
 
virtual int32_t visitBreakStatement (BreakStatement *stat)
 
virtual int32_t visitContinueStatement (ContinueStatement *stat)
 
- Public Member Functions inherited from UTAP::StatementVisitor
virtual ~StatementVisitor ()
 

Additional Inherited Members

- Protected Member Functions inherited from UTAP::AbstractStatementVisitor
virtual int32_t visitStatement (Statement *stat)
 

Detailed Description

A visitor which type checks the system it visits.

The type checker can only visit the system given in the constructor. The type checker must not be constructed before the system has been parsed.

Constructor & Destructor Documentation

TypeChecker::TypeChecker ( TimedAutomataSystem system,
bool  refinement = false 
)
virtual UTAP::TypeChecker::~TypeChecker ( )
inlinevirtual

Member Function Documentation

bool TypeChecker::checkDynamicExpressions ( Statement stat)

References UTAP::Statement::accept().

Referenced by visitFunction().

bool TypeChecker::checkExpression ( expression_t  expr)

Type check an expression.

Type check and checkExpression the expression.

This function performs basic type checking of the given expression and assigns a type to every subexpression of the expression. It checks that only left-hand side values are updated, checks that functions are called with the correct arguments, checks that operators are used with the correct operands and checks that operands to assignment operators are assignment compatible. Errors are reported by calling handleError(). This function does not check/compute the range of integer expressions and thus does not produce out-of-range errors or warnings. Returns true if no type errors were found, false otherwise.

References UTAP::Constants::A_BUCHI, UTAP::Constants::A_UNTIL, UTAP::Constants::A_WEAKUNTIL, UTAP::Constants::AF, UTAP::Constants::AG, UTAP::Constants::AG_R_Piotr, UTAP::Constants::AND, UTAP::Constants::ARRAY, UTAP::Constants::ASSAND, UTAP::Constants::ASSDIV, UTAP::Constants::ASSIGN, UTAP::Constants::ASSLSHIFT, UTAP::Constants::ASSMINUS, UTAP::Constants::ASSMOD, UTAP::Constants::ASSMULT, UTAP::Constants::ASSOR, UTAP::Constants::ASSPLUS, UTAP::Constants::ASSRSHIFT, UTAP::Constants::ASSXOR, UTAP::Constants::BIT_AND, UTAP::Constants::BIT_LSHIFT, UTAP::Constants::BIT_OR, UTAP::Constants::BIT_RSHIFT, UTAP::Constants::BIT_XOR, UTAP::Constants::BOOL, UTAP::Constants::CEIL_F, UTAP::Constants::CHANNEL, checkIDList(), checkSpawnParameterCompatible(), CLOCK, UTAP::Constants::COMMA, UTAP::Constants::CONSISTENCY, UTAP::Constants::CONSTANT, UTAP::Constants::CONSTRAINT, UTAP::Constants::CONTROL, UTAP::Constants::CONTROL_TOPT, UTAP::Constants::CONTROL_TOPT_DEF1, UTAP::Constants::CONTROL_TOPT_DEF2, UTAP::Constants::COS_F, UTAP::type_t::createPrimitive(), UTAP::Constants::DIFF, UTAP::Constants::DIV, UTAP::Constants::DOUBLE, UTAP::Constants::DOUBLEINVGUARD, UTAP::template_t::dynamic, UTAP::Constants::EF, UTAP::Constants::EF_CONTROL, UTAP::Constants::EF_R_Piotr, UTAP::Constants::EG, UTAP::expression_t::empty(), UTAP::Constants::EQ, UTAP::Constants::EXISTS, UTAP::Constants::EXIT, UTAP::Constants::EXP_F, UTAP::Constants::FABS_F, UTAP::Constants::FLOOR_F, UTAP::Constants::FORALL, UTAP::Constants::FORMULA, UTAP::Constants::FRACTION, UTAP::Constants::FUNCALL, UTAP::Constants::GE, UTAP::type_t::getArraySize(), UTAP::TimedAutomataSystem::getDynamicTemplate(), UTAP::expression_t::getKind(), UTAP::expression_t::getSize(), UTAP::frame_t::getSize(), UTAP::type_t::getSub(), UTAP::expression_t::getType(), UTAP::expression_t::getValue(), UTAP::Constants::GT, UTAP::Constants::GUARD, UTAP::Constants::IDENTIFIER, UTAP::Constants::IMPLEMENTATION, UTAP::Constants::INF_VAR, UTAP::Constants::INLINEIF, UTAP::Constants::INT, UTAP::Constants::INVARIANT, UTAP::Constants::INVARIANT_WR, UTAP::type_t::isArray(), isAssignable(), isBound(), isClock(), isConstantDouble(), isConstantInteger(), isConstraint(), isCost(), UTAP::template_t::isDefined, isDiff(), isDoubleValue(), isFormula(), isGuard(), isInteger(), UTAP::type_t::isInteger(), isIntegral(), UTAP::type_t::isIntegral(), isInvariant(), isInvariantWR(), isListOfFormulas(), isNumber(), isProcessID(), isSameScalarType(), UTAP::type_t::isScalar(), isVoid(), UTAP::Constants::LE, UTAP::Constants::LEADSTO, UTAP::Constants::LIST, UTAP::Constants::LN_F, UTAP::Constants::LOG_F, UTAP::Constants::LT, UTAP::Constants::MAX, UTAP::Constants::MIN, UTAP::Constants::MINUS, UTAP::Constants::MITLATOM, UTAP::Constants::MITLCONJ, UTAP::Constants::MITLDISJ, UTAP::Constants::MITLFORMULA, UTAP::Constants::MITLNEXT, UTAP::Constants::MITLRELEASE, UTAP::Constants::MITLUNTIL, UTAP::Constants::MOD, UTAP::Constants::MULT, UTAP::Constants::NEQ, UTAP::Constants::NOT, UTAP::Constants::NUMOF, UTAP::Constants::OR, UTAP::instance_t::parameters, UTAP::Constants::PLUS, UTAP::Constants::PMAX, UTAP::Constants::PO_CONTROL, UTAP::Constants::POSTDECREMENT, UTAP::Constants::POSTINCREMENT, UTAP::Constants::POW_F, UTAP::Constants::PREDECREMENT, UTAP::Constants::PREINCREMENT, UTAP::Constants::PROBABOX, UTAP::Constants::PROBACMP, UTAP::Constants::PROBADIAMOND, UTAP::Constants::PROBAEXP, UTAP::Constants::PROBAMINBOX, UTAP::Constants::PROBAMINDIAMOND, UTAP::Constants::PROCESS, UTAP::Constants::RANDOM_F, UTAP::Constants::RATE, UTAP::Constants::REFINEMENT_GE, UTAP::Constants::REFINEMENT_LE, UTAP::Constants::RESTRICT, UTAP::Constants::SCENARIO, UTAP::Constants::SCENARIO2, UTAP::expression_t::setType(), UTAP::Constants::SIMULATE, UTAP::Constants::SIMULATEREACH, UTAP::Constants::SIMULATION_GE, UTAP::Constants::SIMULATION_LE, UTAP::Constants::SIN_F, UTAP::type_t::size(), UTAP::Constants::SMC_CONTROL, UTAP::Constants::SPAWN, UTAP::Constants::SPECIFICATION, UTAP::Constants::SQRT_F, UTAP::Constants::SUM, UTAP::Constants::SUMDYNAMIC, UTAP::Constants::SUP_VAR, UTAP::Constants::SYNTAX_COMPOSITION, UTAP::Constants::TIOCOMPOSITION, UTAP::Constants::TIOCONJUNCTION, UTAP::Constants::TIOGRAPH, UTAP::Constants::TIOQUOTIENT, UTAP::Constants::UNARY_MINUS, UTAP::type_t::unknown(), and UTAP::Constants::XOR.

Referenced by parseExpression(), TypeChecker(), visitAssertStatement(), visitBlockStatement(), visitCondition(), visitDoWhileStatement(), visitEdge(), visitForStatement(), visitGanttChart(), visitHybridClock(), visitIfStatement(), visitInstance(), visitIODecl(), visitMessage(), visitProgressMeasure(), visitProperty(), visitReturnStatement(), visitState(), visitSystemAfter(), visitVariable(), and visitWhileStatement().

bool UTAP::TypeChecker::checkSpawnAndExit ( expression_t  )
bool TypeChecker::checkSpawnParameterCompatible ( type_t  param,
expression_t  arg 
)

Referenced by checkExpression().

int32_t TypeChecker::visitAssertStatement ( AssertStatement stat)
virtual
int32_t TypeChecker::visitBlockStatement ( BlockStatement stat)
virtual
void TypeChecker::visitCondition ( condition_t condition)
virtual
int32_t TypeChecker::visitDoWhileStatement ( DoWhileStatement stat)
virtual
void TypeChecker::visitEdge ( edge_t edge)
virtual
int32_t TypeChecker::visitEmptyStatement ( EmptyStatement stat)
virtual

Reimplemented from UTAP::AbstractStatementVisitor.

int32_t TypeChecker::visitExprStatement ( ExprStatement stat)
virtual
int32_t TypeChecker::visitForStatement ( ForStatement stat)
virtual
void TypeChecker::visitFunction ( function_t fun)
virtual
void TypeChecker::visitGanttChart ( gantt_t gc)
virtual
void TypeChecker::visitHybridClock ( expression_t  e)
virtual
int32_t TypeChecker::visitIfStatement ( IfStatement stat)
virtual
void TypeChecker::visitInstance ( instance_t instance)
virtual
void TypeChecker::visitInstanceLine ( instanceLine_t instance)
virtual
void TypeChecker::visitIODecl ( iodecl_t iodecl)
virtual
int32_t TypeChecker::visitIterationStatement ( IterationStatement stat)
virtual
void TypeChecker::visitMessage ( message_t message)
virtual
void TypeChecker::visitProcess ( instance_t process)
virtual
void TypeChecker::visitProgressMeasure ( progress_t progress)
virtual
void TypeChecker::visitProperty ( expression_t  expr)
virtual
int32_t TypeChecker::visitReturnStatement ( ReturnStatement stat)
virtual
void TypeChecker::visitState ( state_t state)
virtual
void TypeChecker::visitSystemAfter ( TimedAutomataSystem system)
virtual
void TypeChecker::visitTemplateAfter ( template_t t)
virtual

Reimplemented from UTAP::SystemVisitor.

bool TypeChecker::visitTemplateBefore ( template_t t)
virtual

Reimplemented from UTAP::SystemVisitor.

void TypeChecker::visitUpdate ( update_t update)
virtual
void TypeChecker::visitVariable ( variable_t variable)
virtual
int32_t TypeChecker::visitWhileStatement ( WhileStatement stat)
virtual

The documentation for this class was generated from the following files: