libutap
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
UTAP::ExpressionBuilder Class Reference

Partial implementation of the builder interface: The ExpressionBuilder implements all expression related methods. More...

#include <expressionbuilder.h>

Inheritance diagram for UTAP::ExpressionBuilder:
UTAP::AbstractBuilder UTAP::ParserBuilder UTAP::StatementBuilder UTAP::SystemBuilder

Classes

class  ExpressionFragments
 
class  TypeFragments
 

Public Member Functions

 ExpressionBuilder (TimedAutomataSystem *)
 
ExpressionFragmentsgetExpressions ()
 
virtual void addPosition (uint32_t position, uint32_t offset, uint32_t line, std::string path)
 Add mapping from an absolute position to a relative XML element. More...
 
virtual void handleError (std::string)
 
virtual void handleWarning (std::string)
 
virtual void typeDuplicate ()
 Duplicate type at the top of the type stack. More...
 
virtual void typePop ()
 Pop type at the topof the type stack. More...
 
virtual void typeBool (PREFIX)
 Called whenever a boolean type is parsed. More...
 
virtual void typeInt (PREFIX)
 Called whenever an integer type is parsed. More...
 
virtual void typeDouble (PREFIX)
 Called whenever a double type is parsed. More...
 
virtual void typeBoundedInt (PREFIX)
 Called whenever an integer type with a range is parsed. More...
 
virtual void typeChannel (PREFIX)
 Called whenever a channel type is parsed. More...
 
virtual void typeClock (PREFIX)
 Called whenever a clock type is parsed. More...
 
virtual void typeVoid ()
 Called whenever a void type is parsed. More...
 
virtual void typeScalar (PREFIX)
 Called whenever a scalar type is parsed. More...
 
virtual void typeName (PREFIX, const char *name)
 Called when a type name has been parsed. More...
 
virtual bool isType (const char *)
 Must return true if and only if name is registered in the symbol table as a named type, for instance, "int" or "bool" or a user defined type. More...
 
virtual void exprTrue ()
 
virtual void exprFalse ()
 
virtual void exprDouble (double)
 
virtual void exprId (const char *varName)
 
virtual void exprNat (int32_t)
 
virtual void exprCallBegin ()
 
virtual void exprCallEnd (uint32_t n)
 
virtual void exprArray ()
 
virtual void exprPostIncrement ()
 
virtual void exprPreIncrement ()
 
virtual void exprPostDecrement ()
 
virtual void exprPreDecrement ()
 
virtual void exprAssignment (Constants::kind_t op)
 
virtual void exprUnary (Constants::kind_t unaryop)
 
virtual void exprBinary (Constants::kind_t binaryop)
 
virtual void exprNary (Constants::kind_t op, uint32_t num)
 
virtual void exprScenario (const char *name)
 
virtual expression_t exprScenario ()
 
virtual void exprTernary (Constants::kind_t ternaryop, bool firstMissing)
 
virtual void exprInlineIf ()
 
virtual void exprComma ()
 
virtual void exprDot (const char *)
 
virtual void exprDeadlock ()
 
virtual void exprForAllBegin (const char *name)
 
virtual void exprForAllEnd (const char *name)
 
virtual void exprExistsBegin (const char *name)
 
virtual void exprExistsEnd (const char *name)
 
virtual void exprSumBegin (const char *name)
 
virtual void exprSumEnd (const char *name)
 
virtual void exprSMCControl (int)
 
virtual void exprProbaQualitative (int, Constants::kind_t, Constants::kind_t, double)
 
virtual void exprProbaQuantitative (int, Constants::kind_t, bool stopCondition=false)
 
virtual void exprProbaCompare (int, Constants::kind_t, int, Constants::kind_t)
 
virtual void exprProbaExpected (int, const char *)
 
virtual void exprBuiltinFunction1 (Constants::kind_t)
 
virtual void exprBuiltinFunction2 (Constants::kind_t)
 
virtual void exprSimulate (int, int, int, bool=false, int=0)
 
virtual void exprMitlFormula ()
 
virtual void exprMitlUntil (int, int)
 
virtual void exprMitlRelease (int, int)
 
virtual void exprMitlDisj ()
 
virtual void exprMitlConj ()
 
virtual void exprMitlNext ()
 
virtual void exprMitlAtom ()
 
virtual void exprMitlDiamond (int, int)
 
virtual void exprMitlBox (int, int)
 
virtual void exprSpawn (int params)
 
virtual void exprExit ()
 
virtual void exprNumOf ()
 
virtual void exprForAllDynamicBegin (const char *, const char *)
 
virtual void exprForAllDynamicEnd (const char *name)
 
virtual void exprExistsDynamicBegin (const char *, const char *)
 
virtual void exprExistsDynamicEnd (const char *)
 
virtual void exprSumDynamicBegin (const char *, const char *)
 
virtual void exprSumDynamicEnd (const char *name)
 
virtual void exprForeachDynamicBegin (const char *, const char *)
 
virtual void exprForeachDynamicEnd (const char *name)
 
virtual void pushDynamicFrameOf (template_t *t, std::string name)
 
virtual void popDynamicFrameOf (std::string name)
 
- Public Member Functions inherited from UTAP::AbstractBuilder
 AbstractBuilder ()
 
virtual void setPosition (uint32_t, uint32_t)
 Sets the current position. More...
 
virtual void typeStruct (PREFIX, uint32_t fields)
 Called when a struct-type has been parsed. More...
 
virtual void typeArrayOfSize (size_t)
 Called to create an array type. More...
 
virtual void typeArrayOfType (size_t)
 Called to create an array type. More...
 
virtual void structField (const char *name)
 Called to declare a field of a structure. More...
 
virtual void declTypeDef (const char *name)
 Used when a typedef declaration was parsed. More...
 
virtual void declVar (const char *name, bool init)
 Called to when a variable declaration has been parsed. More...
 
virtual void declInitialiserList (uint32_t num)
 
virtual void declFieldInit (const char *name)
 
virtual void ganttDeclStart (const char *name)
 
virtual void ganttDeclSelect (const char *id)
 
virtual void ganttDeclEnd ()
 
virtual void ganttEntryStart ()
 
virtual void ganttEntrySelect (const char *id)
 
virtual void ganttEntryEnd ()
 
virtual void declProgress (bool)
 Guard progress measure declaration. More...
 
virtual void declParameter (const char *name, bool)
 
virtual void declFuncBegin (const char *name)
 
virtual void declFuncEnd ()
 
virtual void procBegin (const char *name, const bool isTA=true, const std::string type="", const std::string mode="")
 
virtual void procEnd ()
 
virtual void procState (const char *name, bool hasInvariant, bool hasER)
 
virtual void procStateCommit (const char *name)
 
virtual void procStateUrgent (const char *name)
 
virtual void procStateInit (const char *name)
 
virtual void procBranchpoint (const char *name)
 
virtual void procEdgeBegin (const char *from, const char *to, const bool control, const char *actname)
 
virtual void procEdgeEnd (const char *from, const char *to)
 
virtual void procSelect (const char *id)
 
virtual void procGuard ()
 
virtual void procSync (Constants::synchronisation_t type)
 
virtual void procUpdate ()
 
virtual void procProb ()
 
virtual void procInstanceLine ()
 
virtual void instanceName (const char *name, bool templ=true)
 
virtual void instanceNameBegin (const char *name)
 
virtual void instanceNameEnd (const char *name, size_t arguments)
 
virtual void procMessage (const char *from, const char *to, const int loc, const bool pch)
 
virtual void procMessage (Constants::synchronisation_t type)
 
virtual void procCondition (const std::vector< char * > anchors, const int loc, const bool pch, const bool hot)
 
virtual void procCondition ()
 
virtual void procLscUpdate (const char *anchor, const int loc, const bool pch)
 
virtual void procLscUpdate ()
 
virtual void hasPrechart (const bool pch)
 
virtual void blockBegin ()
 
virtual void blockEnd ()
 
virtual void emptyStatement ()
 
virtual void forBegin ()
 
virtual void forEnd ()
 
virtual void iterationBegin (const char *name)
 
virtual void iterationEnd (const char *name)
 
virtual void whileBegin ()
 
virtual void whileEnd ()
 
virtual void doWhileBegin ()
 
virtual void doWhileEnd ()
 
virtual void ifBegin ()
 
virtual void ifElse ()
 
virtual void ifEnd (bool)
 
virtual void breakStatement ()
 
virtual void continueStatement ()
 
virtual void switchBegin ()
 
virtual void switchEnd ()
 
virtual void caseBegin ()
 
virtual void caseEnd ()
 
virtual void defaultBegin ()
 
virtual void defaultEnd ()
 
virtual void exprStatement ()
 
virtual void returnStatement (bool)
 
virtual void assertStatement ()
 
virtual void exprSync (Constants::synchronisation_t type)
 
virtual void declIO (const char *, int, int)
 
virtual void exprProbaQuantitative (int, Constants::kind_t)
 
virtual void exprSimulate (int, int, int)
 
virtual void instantiationBegin (const char *, size_t, const char *)
 
virtual void instantiationEnd (const char *, size_t, const char *, size_t)
 
virtual void process (const char *)
 
virtual void processListEnd ()
 
virtual void done ()
 
virtual void property ()
 
virtual void scenario (const char *)
 
virtual void parse (const char *)
 
virtual void beforeUpdate ()
 
virtual void afterUpdate ()
 
virtual void beginChanPriority ()
 
virtual void addChanPriority (char separator)
 
virtual void defaultChanPriority ()
 
virtual void incProcPriority ()
 
virtual void procPriority (const char *)
 
virtual void declDynamicTemplate (std::string)
 Dynamic. More...
 
virtual void exprDynamicProcessExpr (const char *)
 
virtual void exprMITLForAllDynamicBegin (const char *, const char *)
 
virtual void exprMITLForAllDynamicEnd (const char *name)
 
virtual void exprMITLExistsDynamicBegin (const char *, const char *)
 
virtual void exprMITLExistsDynamicEnd (const char *name)
 
virtual void queryBegin ()
 Verification queries. More...
 
virtual void queryFormula (const char *formula, const char *location)
 
virtual void queryComment (const char *comment)
 
virtual void queryEnd ()
 
- Public Member Functions inherited from UTAP::ParserBuilder
virtual ~ParserBuilder ()
 
void handleWarning (const char *msg,...)
 
void handleError (const char *msg,...)
 

Protected Member Functions

void pushFrame (frame_t)
 Push a new frame. More...
 
void popFrame ()
 Pop the topmost frame. More...
 
bool resolve (std::string, symbol_t &)
 
expression_t makeConstant (int value)
 
expression_t makeConstant (double value)
 
type_t applyPrefix (PREFIX, type_t type)
 Given a prefix and a type, this method creates a new type by applying the prefix. More...
 
virtual bool allowProcessReferences ()
 If this method returns true, it is allowed to access the private identifiers of a process by prefixing the identifier with the process name. More...
 

Protected Attributes

ExpressionFragments fragments
 Expression stack. More...
 
TypeFragments typeFragments
 Type stack. More...
 
std::stack< frame_tframes
 Frame stack. More...
 
TimedAutomataSystemsystem
 Pointer to the system under construction. More...
 
template_tcurrentTemplate
 The template currently being parsed. More...
 
int32_t scalar_count
 Counter for creating unique scalarset names. More...
 
std::map< std::string, frame_tdynamicFrames
 
- Protected Attributes inherited from UTAP::AbstractBuilder
position_t position
 

Additional Inherited Members

- Public Types inherited from UTAP::ParserBuilder
enum  PREFIX {
  PREFIX_NONE = 0, PREFIX_CONST = 1, PREFIX_URGENT = 2, PREFIX_BROADCAST = 4,
  PREFIX_URGENT_BROADCAST = 6, PREFIX_SYSTEM_META = 8, PREFIX_HYBRID = 16
}
 
- Public Attributes inherited from UTAP::ParserBuilder
std::vector< std::string > lscTemplateNames
 

Detailed Description

Partial implementation of the builder interface: The ExpressionBuilder implements all expression related methods.

In order to support quantifier expressions, this class also handles the type related methods.

This class does not implement any declaration related methods.

Internally, three stacks are maintained: One for expressions, one for types and for frames (scopes).

Constructor & Destructor Documentation

ExpressionBuilder::ExpressionBuilder ( TimedAutomataSystem system)

Member Function Documentation

void ExpressionBuilder::addPosition ( uint32_t  position,
uint32_t  offset,
uint32_t  line,
std::string  path 
)
virtual

Add mapping from an absolute position to a relative XML element.

Implements UTAP::ParserBuilder.

References UTAP::TimedAutomataSystem::addPosition(), and system.

virtual bool UTAP::ExpressionBuilder::allowProcessReferences ( )
inlineprotectedvirtual

If this method returns true, it is allowed to access the private identifiers of a process by prefixing the identifier with the process name.

This is only interesting when parsing properties. In this case the method should be overridden by a sub class.

type_t ExpressionBuilder::applyPrefix ( PREFIX  prefix,
type_t  type 
)
protected
void ExpressionBuilder::exprArray ( )
virtual
void ExpressionBuilder::exprAssignment ( Constants::kind_t  op)
virtual
void ExpressionBuilder::exprBinary ( Constants::kind_t  binaryop)
virtual
void ExpressionBuilder::exprBuiltinFunction1 ( Constants::kind_t  kind)
virtual
void ExpressionBuilder::exprBuiltinFunction2 ( Constants::kind_t  kind)
virtual
void ExpressionBuilder::exprCallBegin ( )
virtual

Reimplemented from UTAP::AbstractBuilder.

Reimplemented in UTAP::StatementBuilder.

Referenced by UTAP::StatementBuilder::exprCallBegin().

void ExpressionBuilder::exprCallEnd ( uint32_t  n)
virtual
void ExpressionBuilder::exprComma ( )
virtual
void ExpressionBuilder::exprDeadlock ( )
virtual
void ExpressionBuilder::exprDot ( const char *  id)
virtual
void ExpressionBuilder::exprDouble ( double  d)
virtual
void ExpressionBuilder::exprExistsBegin ( const char *  name)
virtual

Reimplemented from UTAP::AbstractBuilder.

References exprForAllBegin().

void ExpressionBuilder::exprExistsDynamicBegin ( const char *  name,
const char *  temp 
)
virtual
void ExpressionBuilder::exprExistsDynamicEnd ( const char *  name)
virtual
void ExpressionBuilder::exprExistsEnd ( const char *  name)
virtual
void ExpressionBuilder::exprExit ( )
virtual
void ExpressionBuilder::exprFalse ( )
virtual
void ExpressionBuilder::exprForAllBegin ( const char *  name)
virtual
void ExpressionBuilder::exprForAllDynamicBegin ( const char *  name,
const char *  temp 
)
virtual
void ExpressionBuilder::exprForAllDynamicEnd ( const char *  name)
virtual
void ExpressionBuilder::exprForAllEnd ( const char *  name)
virtual
void ExpressionBuilder::exprForeachDynamicBegin ( const char *  name,
const char *  temp 
)
virtual
void ExpressionBuilder::exprForeachDynamicEnd ( const char *  name)
virtual
void ExpressionBuilder::exprId ( const char *  varName)
virtual
void ExpressionBuilder::exprInlineIf ( )
virtual
void ExpressionBuilder::exprMitlAtom ( )
virtual
void ExpressionBuilder::exprMitlBox ( int  low,
int  high 
)
virtual
void ExpressionBuilder::exprMitlConj ( )
virtual
void ExpressionBuilder::exprMitlDiamond ( int  low,
int  high 
)
virtual
void ExpressionBuilder::exprMitlDisj ( )
virtual
void ExpressionBuilder::exprMitlFormula ( )
virtual
void ExpressionBuilder::exprMitlNext ( )
virtual
void ExpressionBuilder::exprMitlRelease ( int  low,
int  high 
)
virtual
void ExpressionBuilder::exprMitlUntil ( int  low,
int  high 
)
virtual
void ExpressionBuilder::exprNary ( Constants::kind_t  op,
uint32_t  num 
)
virtual
void ExpressionBuilder::exprNat ( int32_t  n)
virtual
void ExpressionBuilder::exprNumOf ( )
virtual
void ExpressionBuilder::exprPostDecrement ( )
virtual
void ExpressionBuilder::exprPostIncrement ( )
virtual
void ExpressionBuilder::exprPreDecrement ( )
virtual
void ExpressionBuilder::exprPreIncrement ( )
virtual
void ExpressionBuilder::exprProbaCompare ( int  boundType1,
Constants::kind_t  pathType1,
int  boundType2,
Constants::kind_t  pathType2 
)
virtual
void ExpressionBuilder::exprProbaExpected ( int  boundType,
const char *  expectedType 
)
virtual
void ExpressionBuilder::exprProbaQualitative ( int  boundType,
Constants::kind_t  pathType,
Constants::kind_t  comp,
double  proba 
)
virtual
void ExpressionBuilder::exprProbaQuantitative ( int  boundType,
Constants::kind_t  pathType,
bool  stopCondition = false 
)
virtual
void ExpressionBuilder::exprScenario ( const char *  name)
virtual
expression_t ExpressionBuilder::exprScenario ( )
virtual
void ExpressionBuilder::exprSimulate ( int  nbRuns,
int  boundType,
int  nbExpr,
bool  hasReach = false,
int  numberOfAcceptingRuns = 0 
)
virtual
void ExpressionBuilder::exprSMCControl ( int  boundType)
virtual
void ExpressionBuilder::exprSpawn ( int  params)
virtual
void ExpressionBuilder::exprSumBegin ( const char *  name)
virtual

Reimplemented from UTAP::AbstractBuilder.

References exprForAllBegin().

void ExpressionBuilder::exprSumDynamicBegin ( const char *  name,
const char *  temp 
)
virtual
void ExpressionBuilder::exprSumDynamicEnd ( const char *  name)
virtual
void ExpressionBuilder::exprSumEnd ( const char *  name)
virtual
void ExpressionBuilder::exprTernary ( Constants::kind_t  ternaryop,
bool  firstMissing 
)
virtual
void ExpressionBuilder::exprTrue ( )
virtual
void ExpressionBuilder::exprUnary ( Constants::kind_t  unaryop)
virtual
ExpressionBuilder::ExpressionFragments & ExpressionBuilder::getExpressions ( )

References fragments.

Referenced by parseExpression().

void ExpressionBuilder::handleError ( std::string  )
virtual
void ExpressionBuilder::handleWarning ( std::string  )
virtual
bool ExpressionBuilder::isType ( const char *  )
virtual

Must return true if and only if name is registered in the symbol table as a named type, for instance, "int" or "bool" or a user defined type.

Reimplemented from UTAP::AbstractBuilder.

References UTAP::type_t::getKind(), UTAP::symbol_t::getType(), resolve(), and UTAP::Constants::TYPEDEF.

expression_t ExpressionBuilder::makeConstant ( int  value)
protected
expression_t ExpressionBuilder::makeConstant ( double  value)
protected
void ExpressionBuilder::popDynamicFrameOf ( std::string  name)
virtual
void ExpressionBuilder::popFrame ( )
protected
void ExpressionBuilder::pushDynamicFrameOf ( template_t t,
std::string  name 
)
virtual
void ExpressionBuilder::pushFrame ( frame_t  frame)
protected
bool ExpressionBuilder::resolve ( std::string  name,
symbol_t uid 
)
protected
void ExpressionBuilder::typeBool ( PREFIX  )
virtual
void ExpressionBuilder::typeBoundedInt ( PREFIX  )
virtual
void ExpressionBuilder::typeChannel ( PREFIX  )
virtual
void ExpressionBuilder::typeClock ( PREFIX  )
virtual
void ExpressionBuilder::typeDouble ( PREFIX  )
virtual
void ExpressionBuilder::typeDuplicate ( )
virtual

Duplicate type at the top of the type stack.

Reimplemented from UTAP::AbstractBuilder.

References UTAP::ExpressionBuilder::TypeFragments::duplicate(), and typeFragments.

void ExpressionBuilder::typeInt ( PREFIX  )
virtual
void ExpressionBuilder::typeName ( PREFIX  ,
const char *  name 
)
virtual
void ExpressionBuilder::typePop ( )
virtual

Pop type at the topof the type stack.

Reimplemented from UTAP::AbstractBuilder.

References UTAP::ExpressionBuilder::TypeFragments::pop(), and typeFragments.

void ExpressionBuilder::typeScalar ( PREFIX  )
virtual
void ExpressionBuilder::typeVoid ( )
virtual

Member Data Documentation

template_t* UTAP::ExpressionBuilder::currentTemplate
protected
std::map<std::string,frame_t> UTAP::ExpressionBuilder::dynamicFrames
protected
ExpressionFragments UTAP::ExpressionBuilder::fragments
protected

Expression stack.

Referenced by UTAP::SystemBuilder::addChanPriority(), UTAP::SystemBuilder::afterUpdate(), UTAP::StatementBuilder::assertStatement(), UTAP::SystemBuilder::beforeUpdate(), UTAP::SystemBuilder::beginChanPriority(), UTAP::StatementBuilder::declFieldInit(), UTAP::StatementBuilder::declInitialiserList(), UTAP::SystemBuilder::declIO(), UTAP::SystemBuilder::declProgress(), UTAP::StatementBuilder::declVar(), UTAP::SystemBuilder::defaultChanPriority(), UTAP::StatementBuilder::doWhileEnd(), exprArray(), exprAssignment(), exprBinary(), exprBuiltinFunction1(), exprBuiltinFunction2(), UTAP::StatementBuilder::exprCallBegin(), exprCallEnd(), exprComma(), exprDeadlock(), exprDot(), exprDouble(), exprExistsDynamicEnd(), exprExistsEnd(), exprExit(), exprFalse(), exprForAllDynamicEnd(), exprForAllEnd(), exprForeachDynamicEnd(), exprId(), exprInlineIf(), exprMitlAtom(), exprMitlBox(), exprMitlConj(), exprMitlDiamond(), exprMitlDisj(), exprMitlFormula(), exprMitlNext(), exprMitlRelease(), exprMitlUntil(), exprNary(), exprNat(), exprNumOf(), exprPostDecrement(), exprPostIncrement(), exprPreDecrement(), exprPreIncrement(), exprProbaCompare(), exprProbaExpected(), exprProbaQualitative(), exprProbaQuantitative(), exprScenario(), exprSimulate(), exprSMCControl(), exprSpawn(), UTAP::StatementBuilder::exprStatement(), exprSumDynamicEnd(), exprSumEnd(), UTAP::SystemBuilder::exprSync(), exprTernary(), exprTrue(), exprUnary(), UTAP::StatementBuilder::forEnd(), UTAP::SystemBuilder::ganttEntryEnd(), getExpressions(), UTAP::StatementBuilder::ifEnd(), UTAP::SystemBuilder::instanceNameEnd(), UTAP::SystemBuilder::instantiationEnd(), UTAP::SystemBuilder::procCondition(), UTAP::SystemBuilder::procGuard(), UTAP::SystemBuilder::procLscUpdate(), UTAP::SystemBuilder::procMessage(), UTAP::SystemBuilder::procProb(), UTAP::SystemBuilder::procState(), UTAP::SystemBuilder::procSync(), UTAP::SystemBuilder::procUpdate(), UTAP::StatementBuilder::returnStatement(), UTAP::StatementBuilder::typeArrayOfSize(), typeBoundedInt(), typeScalar(), and UTAP::StatementBuilder::whileEnd().

std::stack<frame_t> UTAP::ExpressionBuilder::frames
protected
int32_t UTAP::ExpressionBuilder::scalar_count
protected

Counter for creating unique scalarset names.

Referenced by ExpressionBuilder(), and typeScalar().

TimedAutomataSystem* UTAP::ExpressionBuilder::system
protected
TypeFragments UTAP::ExpressionBuilder::typeFragments
protected

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