libutap
statementbuilder.h
Go to the documentation of this file.
1 // -*- mode: C++; c-file-style: "stroustrup"; c-basic-offset: 4; indent-tabs-mode: nil; -*-
2 
3 /* libutap - Uppaal Timed Automata Parser.
4  Copyright (C) 2002-2004 Uppsala University and Aalborg University.
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public License
8  as published by the Free Software Foundation; either version 2.1 of
9  the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful, but
12  WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public
17  License along with this library; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19  USA
20 */
21 
22 #ifndef UTAP_STATEMENTBUILDER_H
23 #define UTAP_STATEMENTBUILDER_H
24 
25 #include <cassert>
26 #include <vector>
27 #include <inttypes.h>
28 
29 #include "utap/expressionbuilder.h"
30 #include "utap/utap.h"
31 
32 namespace UTAP
33 {
39  {
40  protected:
46 
49 
51  std::vector<BlockStatement*> blocks;
52 
54  std::vector<type_t> fields;
55 
57  std::vector<std::string> labels;
58 
59  virtual variable_t *addVariable(type_t type, const char* name,
60  expression_t init) = 0;
61  virtual bool addFunction(type_t type, const char* name) = 0;
62 
63  static void collectDependencies(std::set<symbol_t> &, expression_t );
64  static void collectDependencies(std::set<symbol_t> &, type_t );
65 
66  public:
68 
69  virtual void typeArrayOfSize(size_t);
70  virtual void typeArrayOfType(size_t);
71  virtual void typeStruct(PREFIX, uint32_t fields);
72  virtual void structField(const char* name);
73  virtual void declTypeDef(const char* name);
74  virtual void declVar(const char* name, bool init);
75  virtual void declInitialiserList(uint32_t num);
76  virtual void declFieldInit(const char* name);
77  virtual void declParameter(const char* name, bool);
78  virtual void declFuncBegin(const char* name);
79  virtual void declFuncEnd();
80  virtual void blockBegin();
81  virtual void blockEnd();
82  virtual void emptyStatement();
83  virtual void forBegin();
84  virtual void forEnd();
85  virtual void iterationBegin(const char *name);
86  virtual void iterationEnd(const char *name);
87  virtual void whileBegin();
88  virtual void whileEnd();
89  virtual void doWhileBegin();
90  virtual void doWhileEnd();
91  virtual void ifBegin();
92  virtual void ifElse();
93  virtual void ifEnd(bool);
94  virtual void exprStatement();
95  virtual void returnStatement(bool);
96  virtual void assertStatement();
97  virtual void exprCallBegin();
98  };
99 }
100 #endif
virtual void ifElse()
Definition: statementbuilder.cpp:558
std::vector< type_t > fields
The types of a struct.
Definition: statementbuilder.h:54
virtual void blockEnd()
Definition: statementbuilder.cpp:456
virtual void structField(const char *name)
Used to declare the fields of a structure.
Definition: statementbuilder.cpp:154
virtual variable_t * addVariable(type_t type, const char *name, expression_t init)=0
virtual void declParameter(const char *name, bool)
Definition: statementbuilder.cpp:364
std::vector< BlockStatement * > blocks
Stack of nested statement blocks.
Definition: statementbuilder.h:51
virtual void exprStatement()
Definition: statementbuilder.cpp:573
virtual void typeArrayOfType(size_t)
Called to create an array type.
Definition: statementbuilder.cpp:110
static void collectDependencies(std::set< symbol_t > &, expression_t)
Definition: statementbuilder.cpp:52
PREFIX
Definition: builder.h:85
virtual bool addFunction(type_t type, const char *name)=0
std::vector< std::string > labels
The labels of a struct.
Definition: statementbuilder.h:57
virtual void iterationBegin(const char *name)
Definition: statementbuilder.cpp:487
virtual void whileBegin()
Definition: statementbuilder.cpp:530
Definition: lexer.cc:585
virtual void declFuncBegin(const char *name)
Definition: statementbuilder.cpp:377
virtual void ifBegin()
Definition: statementbuilder.cpp:554
virtual void whileEnd()
Definition: statementbuilder.cpp:534
A reference to a frame.
Definition: symbols.h:183
virtual void exprCallBegin()
Definition: statementbuilder.cpp:624
StatementBuilder(TimedAutomataSystem *)
Definition: statementbuilder.cpp:44
virtual void forEnd()
Definition: statementbuilder.cpp:477
virtual void declTypeDef(const char *name)
A type definition.
Definition: statementbuilder.cpp:185
Information about a function.
Definition: system.h:109
virtual void doWhileEnd()
Definition: statementbuilder.cpp:547
virtual void declInitialiserList(uint32_t num)
Definition: statementbuilder.cpp:334
A reference to an expression.
Definition: expression.h:68
virtual void declFuncEnd()
Definition: statementbuilder.cpp:410
virtual void emptyStatement()
Definition: statementbuilder.cpp:468
Base type for variables, clocks, etc.
Definition: system.h:42
frame_t params
The params frame is used temporarily during parameter parsing.
Definition: statementbuilder.h:45
virtual void declFieldInit(const char *name)
Definition: statementbuilder.cpp:328
virtual void ifEnd(bool)
Definition: statementbuilder.cpp:562
virtual void iterationEnd(const char *name)
Definition: statementbuilder.cpp:515
A reference to a type.
Definition: type.h:92
virtual void typeArrayOfSize(size_t)
Called to create an array type.
Definition: statementbuilder.cpp:93
virtual void assertStatement()
Definition: statementbuilder.cpp:614
virtual void returnStatement(bool)
Definition: statementbuilder.cpp:579
Partial implementation of the builder interface, useful for building something with statements that i...
Definition: statementbuilder.h:38
virtual void doWhileBegin()
Definition: statementbuilder.cpp:543
virtual void typeStruct(PREFIX, uint32_t fields)
Used to construct a new struct type, which is then pushed onto the type stack.
Definition: statementbuilder.cpp:138
Definition: system.h:472
function_t * currentFun
The function currently being parsed.
Definition: statementbuilder.h:48
virtual void forBegin()
Definition: statementbuilder.cpp:473
virtual void blockBegin()
Definition: statementbuilder.cpp:450
virtual void declVar(const char *name, bool init)
Declare a new variable of the given name.
Definition: statementbuilder.cpp:266
Partial implementation of the builder interface: The ExpressionBuilder implements all expression rela...
Definition: expressionbuilder.h:50