Orocos Real-Time Toolkit  2.9.0
ConditionParser.hpp
Go to the documentation of this file.
1 /***************************************************************************
2  tag: Peter Soetens Mon Jan 19 14:11:25 CET 2004 ConditionParser.hpp
3 
4  ConditionParser.hpp - description
5  -------------------
6  begin : Mon January 19 2004
7  copyright : (C) 2004 Peter Soetens
8  email : peter.soetens@mech.kuleuven.ac.be
9 
10  ***************************************************************************
11  * This library is free software; you can redistribute it and/or *
12  * modify it under the terms of the GNU General Public *
13  * License as published by the Free Software Foundation; *
14  * version 2 of the License. *
15  * *
16  * As a special exception, you may use this file as part of a free *
17  * software library without restriction. Specifically, if other files *
18  * instantiate templates or use macros or inline functions from this *
19  * file, or you compile this file and link it with other files to *
20  * produce an executable, this file does not by itself cause the *
21  * resulting executable to be covered by the GNU General Public *
22  * License. This exception does not however invalidate any other *
23  * reasons why the executable file might be covered by the GNU General *
24  * Public License. *
25  * *
26  * This library is distributed in the hope that it will be useful, *
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
29  * Lesser General Public License for more details. *
30  * *
31  * You should have received a copy of the GNU General Public *
32  * License along with this library; if not, write to the Free Software *
33  * Foundation, Inc., 59 Temple Place, *
34  * Suite 330, Boston, MA 02111-1307 USA *
35  * *
36  ***************************************************************************/
37 
38 #ifndef CONDITIONPARSER_HPP
39 #define CONDITIONPARSER_HPP
40 
41 #include "parser-types.hpp"
42 #include "CommonParser.hpp"
43 #include "ExpressionParser.hpp"
44 #include "../internal/DataSource.hpp"
45 
46 #include <memory>
47 #include <stack>
48 #include <utility>
49 
50 #ifdef ORO_PRAGMA_INTERFACE
51 #pragma interface
52 #endif
53 
54 namespace RTT { namespace scripting
55 {
62  {
64 
65  void seendonecondition();
66  void seenexpression();
67 
68  rule_t condition;
69 
70  TaskContext* context;
71  CommonParser& commonparser;
72  ExpressionParser expressionparser;
73 
74  public:
75  ConditionParser( TaskContext* context, ExecutionEngine* caller, CommonParser& cp );
77 
79  {
80  return condition;
81  };
82 
89 
93  std::pair<base::ActionInterface*,ConditionInterface*> getParseResultAsCommand();
94 
95  void reset();
96  };
97 }}
98 
99 #endif
std::pair< base::ActionInterface *, ConditionInterface * > getParseResultAsCommand()
Retrieve the result as a command, condition pair.
ConditionInterface * getParseResult()
Call this to get the parsed condition.
ConditionParser(TaskContext *context, ExecutionEngine *caller, CommonParser &cp)
This interface represents the concept of a condition which can be evaluated and return true or false...
This class contains some very common parser definitions.
An execution engine serialises (executes one after the other) the execution of all commands...
How we parse: this parser works like a stack-based RPN calculator.
rule< scanner_t > rule_t
boost::intrusive_ptr< DataSource< T > > shared_ptr
Definition: DataSource.hpp:115
The TaskContext is the C++ representation of an Orocos component.
Definition: TaskContext.hpp:93
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
Definition: Activity.cpp:52
This is a class containing a parse function for conditions.