00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef UTAP_LIBPARSER_HH
00023
#define UTAP_LIBPARSER_HH
00024
00025
#include <functional>
00026
00027
#include "utap/builder.hh"
00028
00029 #define MAXLEN 64
00030
00031 enum syntax_t {
SYNTAX_OLD = 1,
00032
SYNTAX_NEW = 2,
00033
SYNTAX_PROPERTY = 4,
00034
SYNTAX_GUIDING = 8 };
00035
00036
00037 typedef enum {
00038
S_XTA,
00039
S_DECLARATION,
S_LOCAL_DECL,
S_INST,
S_SYSTEM,
S_PARAMETERS,
00040
S_INVARIANT,
S_GUARD,
S_SYNC,
S_ASSIGN
00041 }
xta_part_t;
00042
00043
00044
00045
00046
template <
typename ReturnType,
typename CalleeType,
typename ArgType>
00047 class other_mem_fun_t
00048 {
00049
typedef ReturnType (CalleeType::*function_t) (ArgType);
00050 CalleeType *m_callee;
00051 function_t m_pfn;
00052
00053
public:
00054 other_mem_fun_t(CalleeType *callee, function_t pfn)
00055 : m_callee(callee), m_pfn(pfn)
00056 {
00057 }
00058
00059 ReturnType operator() (ArgType arg)
const
00060
{
00061
return (m_callee->*m_pfn)(arg);
00062 }
00063 };
00064
00065
template <
typename ReturnType,
typename CalleeType,
typename ArgType>
00066
other_mem_fun_t<ReturnType, CalleeType, ArgType>
00067 other_mem_fun(CalleeType *callee, ReturnType (CalleeType::* pfn)(ArgType))
00068 {
00069
return other_mem_fun_t<ReturnType, CalleeType, ArgType>(callee, pfn);
00070 }
00071
00072
00073
00074
00075
00076
00077
00078
00079 int32_t
parseXTA(FILE *,
UTAP::ParserBuilder *,
00080
UTAP::ErrorHandler *,
00081
bool newxta, xta_part_t part);
00082 int32_t
parseXTA(
const char *,
UTAP::ParserBuilder *,
00083
UTAP::ErrorHandler *,
bool newxta,
00084 xta_part_t part);
00085
00086
00087
extern bool isKeyword(
const char *
id, uint32_t syntax);
00088
00089
#endif