From 758bda908ded461c9d34d274a18454ffba4b7450 Mon Sep 17 00:00:00 2001 From: Stefan Radomski Date: Tue, 24 Jun 2014 15:03:20 +0200 Subject: - Prolog DM compiles with recent SWI release again - Bugfixes for stress test - Beautified code --- CMakeLists.txt | 25 +- apps/uscxml-browser.cpp | 2 +- apps/uscxml-transform.cpp | 2 +- contrib/csharp/embedding/embedding.userprefs | 12 + .../csharp/embedding/embedding/embedding.csproj | 8 +- contrib/src/swi-pl/SWI-cpp.h | 1093 ++++++++ src/bindings/swig/wrapped/WrappedDataModel.h | 6 +- src/uscxml/Convenience.h | 10 +- src/uscxml/Factory.cpp | 14 +- src/uscxml/Factory.h | 4 +- src/uscxml/Interpreter.cpp | 154 +- src/uscxml/Interpreter.h | 64 +- src/uscxml/Message.h | 16 +- .../concurrency/eventqueue/DelayedEventQueue.h | 6 +- src/uscxml/concurrency/tinythread.h | 4 +- src/uscxml/debug/Breakpoint.h | 6 +- src/uscxml/interpreter/InterpreterDraft6.cpp | 126 +- src/uscxml/interpreter/InterpreterDraft6.h | 9 +- src/uscxml/interpreter/InterpreterRC.cpp | 6 +- src/uscxml/plugins/Pluma/uce-dirent.h | 610 ++--- .../ecmascript/JavaScriptCore/JSCDataModel.cpp | 2 +- .../plugins/datamodel/prolog/swi/SWIDataModel.cpp | 2 +- .../plugins/datamodel/promela/PromelaParser.h | 6 +- .../datamodel/promela/parser/promela.lex.yy.cpp | 1776 ++++++------- .../datamodel/promela/parser/promela.tab.cpp | 2797 ++++++++++---------- src/uscxml/plugins/element/file/FileElement.h | 14 +- .../invoker/filesystem/dirmon/DirMonInvoker.h | 8 +- src/uscxml/plugins/invoker/im/IMInvoker.h | 22 +- src/uscxml/plugins/invoker/imap/IMAPInvoker.h | 44 +- .../plugins/invoker/miles/MilesSessionInvoker.cpp | 6 +- src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp | 5 + .../ioprocessor/basichttp/BasicHTTPIOProcessor.cpp | 4 +- .../plugins/ioprocessor/comet/CometIOProcessor.cpp | 1 + .../plugins/ioprocessor/modality/MMIMessages.h | 46 +- .../plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp | 1 + src/uscxml/server/HTTPServer.cpp | 42 +- src/uscxml/server/HTTPServer.h | 6 +- src/uscxml/server/InterpreterServlet.cpp | 8 +- src/uscxml/server/InterpreterServlet.h | 4 +- src/uscxml/transform/FSMToPromela.h | 20 +- src/uscxml/util/Base64.h | 47 +- src/uscxml/util/MD5.h | 58 +- src/uscxml/util/SHA1.h | 42 +- test/src/test-datamodel.cpp | 2 +- test/src/test-lifecycle.cpp | 341 +-- test/src/test-stress.cpp | 3 +- 46 files changed, 4349 insertions(+), 3135 deletions(-) create mode 100644 contrib/csharp/embedding/embedding.userprefs create mode 100644 contrib/src/swi-pl/SWI-cpp.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e4ac449..6b03821 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,16 @@ cmake_minimum_required(VERSION 2.8.4) +cmake_policy(PUSH) +if(POLICY CMP0042) + cmake_policy(SET CMP0042 OLD) +endif() +if(POLICY CMP0045) + cmake_policy(SET CMP0045 OLD) +endif() +if(POLICY CMP0046) + cmake_policy(SET CMP0046 OLD) +endif() + # specify USCXML version SET(USCXML_VERSION_MAJOR "0") SET(USCXML_VERSION_MINOR "1") @@ -117,6 +128,8 @@ if (CMAKE_CROSSCOMPILING) else() if (WIN32 AND 64BIT_HOST) SET(USCXML_PLATFORM_ID "${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}_64") + elseif (APPLE) + SET(USCXML_PLATFORM_ID "${CMAKE_SYSTEM_NAME_LC}-i386") else() SET(USCXML_PLATFORM_ID "${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}") endif() @@ -418,11 +431,14 @@ endif() set(CMAKE_COMPILER_STRING "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") +if (APPLE) +# set(CMAKE_OSX_ARCHITECTURES "i386;x86_64") +endif() + # see http://www.mail-archive.com/cmake@cmake.org/msg23240.html if (APPLE AND MACOSX_VERSION VERSION_LESS "10.9") # figure out what to do with Mavericks (10.9) later # add_definitions("-D_DARWIN_UNLIMITED_SELECT") -# set(CMAKE_OSX_ARCHITECTURES "x86_64;i386") # support leopard and above set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6) foreach(FLAGS CMAKE_C_FLAGS CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS) @@ -681,6 +697,11 @@ endif() set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SHARED}) find_package(SWI) if (SWI_FOUND) + if (SWI_CPP_INCLUDE_DIR) + include_directories(${SWI_CPP_INCLUDE_DIR}) + else() + include_directories(${PROJECT_SOURCE_DIR}/contrib/src/swi-pl) + endif() include_directories(${SWI_INCLUDE_DIR}) if (BUILD_PREFER_STATIC_LIBRARIES) find_package(GMP) @@ -1141,5 +1162,7 @@ message(STATUS " Binaries will end up in ........ : " ${REL_CMAKE_RUNTIME_OUTPU # see contrib/cmake/CPackUSCXML.cmake include(contrib/cmake/CPackUSCXML.cmake) +cmake_policy(POP) + # This must always be last! include(CPack) diff --git a/apps/uscxml-browser.cpp b/apps/uscxml-browser.cpp index 5d3b389..a3ba8c8 100644 --- a/apps/uscxml-browser.cpp +++ b/apps/uscxml-browser.cpp @@ -153,7 +153,7 @@ int main(int argc, char** argv) { } HTTPServer::getInstance(options.httpPort, options.wsPort, sslConf); - + DebuggerServlet* debugger; if (options.withDebugger) { debugger = new DebuggerServlet(); diff --git a/apps/uscxml-transform.cpp b/apps/uscxml-transform.cpp index 13fc255..1d03b98 100644 --- a/apps/uscxml-transform.cpp +++ b/apps/uscxml-transform.cpp @@ -183,7 +183,7 @@ int main(int argc, char** argv) { break; } switch(option) { - // cases without short option + // cases without short option case 0: { break; } diff --git a/contrib/csharp/embedding/embedding.userprefs b/contrib/csharp/embedding/embedding.userprefs new file mode 100644 index 0000000..05e379d --- /dev/null +++ b/contrib/csharp/embedding/embedding.userprefs @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/contrib/csharp/embedding/embedding/embedding.csproj b/contrib/csharp/embedding/embedding/embedding.csproj index 9c22f6c..53e1eed 100644 --- a/contrib/csharp/embedding/embedding/embedding.csproj +++ b/contrib/csharp/embedding/embedding/embedding.csproj @@ -23,6 +23,12 @@ DEBUG;TRACE prompt 4 + + + + + + x86 @@ -42,7 +48,7 @@ - C:\Users\sradomski\Desktop\build\lib\uscxmlCSharp.dll + ..\..\..\..\build\cli\lib\uscxmlCSharp.dll diff --git a/contrib/src/swi-pl/SWI-cpp.h b/contrib/src/swi-pl/SWI-cpp.h new file mode 100644 index 0000000..d32a052 --- /dev/null +++ b/contrib/src/swi-pl/SWI-cpp.h @@ -0,0 +1,1093 @@ +/* $Id$ + + Part of SWI-Prolog + + Author: Jan Wielemaker + E-mail: J.Wielemaker@cs.vu.nl + WWW: http://www.swi-prolog.org + Copyright (C): 1985-2009, University of Amsterdam + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _SWI_CPP_H +#define _SWI_CPP_H + +#include +#include +#ifndef __APPLE__ +#include +#endif + +#ifdef __BORLANDC__ +#define __inline inline +#endif + +#ifdef _MSC_VER /* MSVC doesn't know throw doesn't return */ +#define PL_THROWN(value) return value; +#else +#define PL_THROWN(v) (void)0 +#endif + +class PlTerm; +class PlTermv; + + /******************************* + * PROLOG CONSTANTS * + *******************************/ + +class PlFunctor +{ +public: + functor_t functor; + + PlFunctor(const char *name, int arity) + { functor = PL_new_functor(PL_new_atom(name), arity); + } +}; + + +class PlAtom +{ +public: + atom_t handle; + + PlAtom(atom_t h) + { handle = h; + } + PlAtom(const char *text) + { handle = PL_new_atom(text); + } + PlAtom(const PlTerm &t); + + operator const char *(void) + { return PL_atom_chars(handle); + } + + int operator ==(const char *s) + { return strcmp(s, PL_atom_chars(handle)) == 0; + } + int operator ==(const PlAtom &a) + { return handle == a.handle; + } +}; + + /******************************* + * GENERIC PROLOG TERM * + *******************************/ + + +class PlTerm +{ +public: + term_t ref; + + PlTerm(); + PlTerm(term_t t) + { ref = t; + } + + /* C --> PlTerm */ + PlTerm(const char *text); + PlTerm(long val); + PlTerm(double val); + PlTerm(const PlAtom &a); + PlTerm(void *ptr); + + /* PlTerm --> C */ + operator term_t(void) const + { return ref; + } + operator char *(void) const; + operator long(void) const; + operator int(void) const; + operator double(void) const; + operator PlAtom(void) const; + operator void *(void) const; + + int type() + { return PL_term_type(ref); + } + + /* Compounds */ + PlTerm operator [](int index) const; + int arity(); + const char *name(); + + /* UNIFY */ + int operator =(const PlTerm &t2); /* term */ + int operator =(const PlAtom &a); /* atom */ + int operator =(const char *v); /* atom (from char *) */ + int operator =(long v); /* integer */ + int operator =(int v); /* integer */ + int operator =(double v); /* float */ + int operator =(const PlFunctor &f); /* functor */ + + /* Comparison standard order terms */ + int operator ==(const PlTerm &t2) + { return PL_compare(ref, t2.ref) == 0; + } + int operator !=(const PlTerm &t2) + { return PL_compare(ref, t2.ref) != 0; + } + int operator <(const PlTerm &t2) + { return PL_compare(ref, t2.ref) < 0; + } + int operator >(const PlTerm &t2) + { return PL_compare(ref, t2.ref) > 0; + } + int operator <=(const PlTerm &t2) + { return PL_compare(ref, t2.ref) <= 0; + } + int operator >=(const PlTerm &t2) + { return PL_compare(ref, t2.ref) >= 0; + } + /* comparison (long) */ + int operator ==(long v); + int operator !=(long v); + int operator <(long v); + int operator >(long v); + int operator <=(long v); + int operator >=(long v); + + /* comparison (string) */ + int operator ==(const char *s); + int operator ==(const PlAtom &a); +}; + + + /******************************* + * TERM VECTOR * + *******************************/ + +class PlTermv +{ +public: + term_t a0; + int size; + + PlTermv(int n) + { a0 = PL_new_term_refs(n); + size = n; + } + PlTermv(int n, term_t t0) + { a0 = t0; + size = n; + } + + /* create from args */ + PlTermv(PlTerm m0); + PlTermv(PlTerm m0, PlTerm m1); + PlTermv(PlTerm m0, PlTerm m1, PlTerm m2); + PlTermv(PlTerm m0, PlTerm m1, PlTerm m2, PlTerm m3); + PlTermv(PlTerm m0, PlTerm m1, PlTerm m2, PlTerm m3, PlTerm m4); + + PlTerm operator [](int n) const; +}; + + /******************************* + * SPECIALISED TERMS * + *******************************/ + +class PlCompound : public PlTerm +{ +public: + + PlCompound(const char *text); + PlCompound(const char *functor, const PlTermv &args); +}; + + +class PlString : public PlTerm +{ +public: + + PlString(const char *text); + PlString(const char *text, int len); +}; + + +class PlCodeList : public PlTerm +{ +public: + + PlCodeList(const char *text); +}; + + +class PlCharList : public PlTerm +{ +public: + + PlCharList(const char *text); +}; + + + /******************************* + * EXCEPTIONS * + *******************************/ + +class PlException : public PlTerm +{ +public: + PlException() + { term_t ex = PL_exception(0); + if ( ex ) + ref = ex; + else + PL_fatal_error("No exception"); + } + + PlException(const PlTerm &t) + { ref = t.ref; + } + + operator const char *(void); + + int plThrow() + { return PL_raise_exception(ref); + } + + void cppThrow(); +}; + + +class PlTypeError : public PlException +{ +public: + + PlTypeError(const PlTerm &t) : PlException(t) {} + + PlTypeError(const char *expected, PlTerm actual) : + PlException(PlCompound("error", + PlTermv(PlCompound("type_error", + PlTermv(expected, actual)), + PlTerm()))) + { + } +}; + + +class PlDomainError : public PlException +{ +public: + + PlDomainError(const PlTerm &t) : PlException(t) {} + + PlDomainError(const char *expected, PlTerm actual) : + PlException(PlCompound("error", + PlTermv(PlCompound("domain_error", + PlTermv(expected, actual)), + PlTerm()))) + { + } +}; + + +class PlResourceError : public PlException +{ +public: + PlResourceError() : PlException() {} + + PlResourceError(const PlTerm &t) : PlException(t) {} + + PlResourceError(const char *resource) : + PlException(PlCompound("error", + PlTermv(PlCompound("resource_error", + PlTermv(PlTerm(resource))), + PlTerm()))) + { + } +}; + + +class PlTermvDomainError : public PlException +{ +public: + + PlTermvDomainError(int size, int n) : + PlException(PlCompound("error", + PlTermv(PlCompound("domain_error", + PlTermv(PlCompound("argv", + size), + PlTerm((long)n))), + PlTerm()))) + { + } +}; + + + /******************************* + * PLTERM IMPLEMENTATION * + *******************************/ + +__inline +PlTerm::PlTerm() +{ if ( !(ref = PL_new_term_ref()) ) + throw PlResourceError(); +} + +__inline +PlTerm::PlTerm(const char *text) +{ if ( !(ref = PL_new_term_ref()) || + !PL_put_atom_chars(ref, text) ) + throw PlResourceError(); +} + +__inline +PlTerm::PlTerm(long val) +{ if ( !(ref = PL_new_term_ref()) || + !PL_put_integer(ref, val) ) + throw PlResourceError(); +} + +__inline +PlTerm::PlTerm(double val) +{ ref = PL_new_term_ref(); + + if ( !PL_put_float(ref, val) ) + throw PlResourceError(); +} + +__inline +PlTerm::PlTerm(const PlAtom &a) +{ if ( !(ref = PL_new_term_ref()) ) + throw PlResourceError(); + + PL_put_atom(ref, a.handle); +} + +__inline +PlTerm::PlTerm(void *ptr) +{ if ( !(ref = PL_new_term_ref()) || + !PL_put_pointer(ref, ptr) ) + throw PlResourceError(); +} + + /******************************* + * SPECIALISED IMPLEMENTATIONS * + *******************************/ + +__inline +PlString::PlString(const char *text) : PlTerm() +{ if ( !PL_put_string_chars(ref, text) ) + throw PlResourceError(); +} + +__inline +PlString::PlString(const char *text, int len) : PlTerm() +{ if ( !PL_put_string_nchars(ref, len, text) ) + throw PlResourceError(); +} + +__inline +PlCodeList::PlCodeList(const char *text) : PlTerm() +{ if ( !PL_put_list_codes(ref, text) ) + throw PlResourceError(); +} + +__inline +PlCharList::PlCharList(const char *text) : PlTerm() +{ if ( !PL_put_list_chars(ref, text) ) + throw PlResourceError(); +} + + + /******************************* + * LISTS * + *******************************/ + +class PlTail : public PlTerm +{ +public: + + PlTail(const PlTerm &l) + { if ( PL_is_variable(l.ref) || PL_is_list(l.ref) ) + { if ( !(ref = PL_copy_term_ref(l.ref)) ) + throw PlResourceError(); + } else + throw PlTypeError("list", l.ref); + } + + /* building */ + int append(const PlTerm &e) + { term_t tmp, ex; + + if ( (tmp = PL_new_term_ref()) && + PL_unify_list(ref, tmp, ref) && + PL_unify(tmp, e.ref) ) + { PL_reset_term_refs(tmp); + return TRUE; + } + + if ( (ex = PL_exception(0)) ) + throw PlResourceError(ex); + + return FALSE; + } + int close() + { return PL_unify_nil(ref); + } + + /* enumerating */ + int next(PlTerm &t) + { if ( PL_get_list(ref, t, ref) ) + return TRUE; + + if ( PL_get_nil(ref) ) + return FALSE; + + throw PlTypeError("list", ref); + PL_THROWN(FALSE); + } +}; + + + /******************************* + * REGISTER * + *******************************/ + + +class PlRegister +{ +public: + + PlRegister(const char *module, const char *name, int arity, + foreign_t (f)(term_t t0, int a, control_t ctx)) + { PL_register_foreign_in_module(module, name, arity, (void *)f, PL_FA_VARARGS); + } + + PlRegister(const char *module, const char *name, foreign_t (*f)(PlTerm a0)) + { PL_register_foreign_in_module(module, name, 1, (void *)f, 0); + } + PlRegister(const char *module, const char *name, foreign_t (*f)(PlTerm a0, PlTerm a1)) + { PL_register_foreign_in_module(module, name, 2, (void *)f, 0); + } + PlRegister(const char *module, const char *name, foreign_t (*f)(PlTerm a0, PlTerm a1, PlTerm a2)) + { PL_register_foreign_in_module(module, name, 3, (void *)f, 0); + } + + // for non-deterministic calls + PlRegister(const char *module, const char *name, int arity, + foreign_t (f)(term_t t0, int a, control_t ctx), short flags) + { PL_register_foreign_in_module(module, name, arity, (void *)f, flags); + } + +}; + + + /******************************* + * CALLING PROLOG * + *******************************/ + +class PlFrame +{ +public: + fid_t fid; + + PlFrame() + { fid = PL_open_foreign_frame(); + } + + ~PlFrame() + { PL_close_foreign_frame(fid); + } + + void rewind() + { PL_rewind_foreign_frame(fid); + } +}; + + +class PlQuery +{ +public: + qid_t qid; + + PlQuery(const char *name, const PlTermv &av) + { predicate_t p = PL_predicate(name, av.size, "user"); + + qid = PL_open_query((module_t)0, PL_Q_CATCH_EXCEPTION, p, av.a0); + if ( !qid ) + throw PlResourceError(); + } + PlQuery(const char *module, const char *name, const PlTermv &av) + { atom_t ma = PL_new_atom(module); + atom_t na = PL_new_atom(name); + module_t m = PL_new_module(ma); + predicate_t p = PL_pred(PL_new_functor(na, av.size), m); + + PL_unregister_atom(ma); + PL_unregister_atom(na); + + qid = PL_open_query(m, PL_Q_CATCH_EXCEPTION, p, av.a0); + if ( !qid ) + throw PlResourceError(); + } + + ~PlQuery() + { PL_cut_query(qid); + } + + int next_solution(); +}; + + +__inline int +PlCall(const char *predicate, const PlTermv &args) +{ PlQuery q(predicate, args); + return q.next_solution(); +} + +__inline int +PlCall(const char *module, const char *predicate, const PlTermv &args) +{ PlQuery q(module, predicate, args); + return q.next_solution(); +} + +__inline int +PlCall(const char *goal) +{ PlQuery q("call", PlTermv(PlCompound(goal))); + return q.next_solution(); +} + + + + /******************************* + * ATOM (BODY) * + *******************************/ + +__inline +PlAtom::PlAtom(const PlTerm &t) +{ atom_t a; + + if ( PL_get_atom(t.ref, &a) ) + handle = a; + else + throw PlTypeError("atom", t); +} + + + /******************************* + * TERM (BODY) * + *******************************/ + + /* PlTerm --> C */ + +__inline PlTerm::operator char *(void) const +{ char *s; + + if ( PL_get_chars(ref, &s, CVT_ALL|CVT_WRITE|BUF_RING) ) + return s; + + throw PlTypeError("text", ref); + PL_THROWN(NULL); +} + +__inline PlTerm::operator long(void) const +{ long v; + + if ( PL_get_long(ref, &v) ) + return v; + + throw PlTypeError("integer", ref); + PL_THROWN(0L); +} + +__inline PlTerm::operator int(void) const +{ int v; + + if ( PL_get_integer(ref, &v) ) + return v; + + throw PlTypeError("integer", ref); + PL_THROWN(0); +} + +__inline PlTerm::operator double(void) const +{ double v; + + if ( PL_get_float(ref, &v) ) + return v; + + throw PlTypeError("float", ref); + PL_THROWN(0.0); +} + +__inline PlTerm::operator PlAtom(void) const +{ atom_t v; + + if ( PL_get_atom(ref, &v) ) + return PlAtom(v); + + throw PlTypeError("atom", ref); + PL_THROWN((atom_t)0); +} + +__inline PlTerm::operator void *(void) const +{ void *ptr; + + if ( PL_get_pointer(ref, &ptr) ) + return ptr; + + throw PlTypeError("pointer", ref); + PL_THROWN(NULL); +} + + /* compounds */ + +__inline PlTerm +PlTerm::operator [](int index) const +{ PlTerm t; + + if ( PL_get_arg(index, ref, t.ref) ) + return t; + + if ( !PL_is_compound(ref) ) + throw PlTypeError("compound", ref); + else + { if ( !PL_put_integer(t.ref, index) ) + throw PlResourceError(); + + if ( index < 1 ) + throw PlDomainError("not_less_than_zero", t.ref); + else + throw PlDomainError("arity", t.ref); /* TBD: proper exception */ + } + PL_THROWN((term_t)0); +} + + +__inline int +PlTerm::arity() +{ atom_t name; + int arity; + + if ( PL_get_name_arity(ref, &name, &arity) ) + return arity; + + throw PlTypeError("compound", ref); + PL_THROWN(0); +} + + +__inline const char * +PlTerm::name() +{ atom_t name; + int arity; + + if ( PL_get_name_arity(ref, &name, &arity) ) + return PL_atom_chars(name); + + throw PlTypeError("compound", ref); + PL_THROWN(NULL); +} + + + /* Unification */ + +__inline int PlTerm::operator =(const PlTerm &t2) /* term = term */ +{ int rc = PL_unify(ref, t2.ref); + term_t ex; + + if ( !rc && (ex=PL_exception(0)) ) + throw PlResourceError(ex); + return rc; +} + +__inline int PlTerm::operator =(const PlAtom &a) /* term = atom */ +{ int rc = PL_unify_atom(ref, a.handle); + term_t ex; + + if ( !rc && (ex=PL_exception(0)) ) + throw PlResourceError(ex); + return rc; +} + +__inline int PlTerm::operator =(const char *v) /* term = atom */ +{ int rc = PL_unify_atom_chars(ref, v); + term_t ex; + + if ( !rc && (ex=PL_exception(0)) ) + throw PlResourceError(ex); + return rc; +} + +__inline int PlTerm::operator =(long v) +{ int rc = PL_unify_integer(ref, v); + term_t ex; + + if ( !rc && (ex=PL_exception(0)) ) + throw PlResourceError(ex); + return rc; +} + +__inline int PlTerm::operator =(int v) +{ int rc = PL_unify_integer(ref, v); + term_t ex; + + if ( !rc && (ex=PL_exception(0)) ) + throw PlResourceError(ex); + return rc; +} + +__inline int PlTerm::operator =(double v) +{ int rc = PL_unify_float(ref, v); + term_t ex; + + if ( !rc && (ex=PL_exception(0)) ) + throw PlResourceError(ex); + return rc; +} + +__inline int PlTerm::operator =(const PlFunctor &f) +{ int rc = PL_unify_functor(ref, f.functor); + term_t ex; + + if ( !rc && (ex=PL_exception(0)) ) + throw PlResourceError(ex); + return rc; +} + + /* comparison */ + + +__inline int PlTerm::operator ==(long v) +{ long v0; + + if ( PL_get_long(ref, &v0) ) + return v0 == v; + + throw PlTypeError("integer", ref); + PL_THROWN(0); +} + +__inline int PlTerm::operator !=(long v) +{ long v0; + + if ( PL_get_long(ref, &v0) ) + return v0 != v; + + throw PlTypeError("integer", ref); + PL_THROWN(0); +} + +__inline int PlTerm::operator <(long v) +{ long v0; + + if ( PL_get_long(ref, &v0) ) + return v0 < v; + + throw PlTypeError("integer", ref); + PL_THROWN(0); +} + +__inline int PlTerm::operator >(long v) +{ long v0; + + if ( PL_get_long(ref, &v0) ) + return v0 > v; + + throw PlTypeError("integer", ref); + PL_THROWN(0); +} + +__inline int PlTerm::operator <=(long v) +{ long v0; + + if ( PL_get_long(ref, &v0) ) + return v0 <= v; + + throw PlTypeError("integer", ref); + PL_THROWN(0); +} + +__inline int PlTerm::operator >=(long v) +{ long v0; + + if ( PL_get_long(ref, &v0) ) + return v0 >= v; + + throw PlTypeError("integer", ref); + PL_THROWN(0); +} + + /* comparison (string) */ + +__inline int PlTerm::operator ==(const char *s) +{ char *s0; + + if ( PL_get_chars(ref, &s0, CVT_ALL) ) + return strcmp(s0, s) == 0; + + throw PlTypeError("text", ref); + PL_THROWN(0); +} + + +__inline int PlTerm::operator ==(const PlAtom &a) +{ atom_t v; + + if ( PL_get_atom(ref, &v) ) + return v == a.handle; + + throw PlTypeError("atom", ref); + PL_THROWN(0); +} + + + /******************************* + * COMPPOUND (BODY) * + *******************************/ + + +__inline +PlCompound::PlCompound(const char *text) : PlTerm() +{ term_t t = PL_new_term_ref(); + + if ( !PL_chars_to_term(text, t) ) + throw PlException(t); + + PL_put_term(ref, t); +} + +__inline +PlCompound::PlCompound(const char *functor, const PlTermv &args) : PlTerm() +{ if ( !PL_cons_functor_v(ref, + PL_new_functor(PL_new_atom(functor), args.size), + args.a0) ) + throw PlResourceError(); +} + + /******************************* + * TERMV (BODY) * + *******************************/ + + +__inline PlTermv::PlTermv(PlTerm m0) +{ size = 1; + a0 = m0.ref; +} + +__inline PlTermv::PlTermv(PlTerm m0, PlTerm m1) +{ size = 2; + if ( !(a0 = PL_new_term_refs(2)) ) + throw PlResourceError(); + PL_put_term(a0+0, m0); + PL_put_term(a0+1, m1); +} + +__inline PlTermv::PlTermv(PlTerm m0, PlTerm m1, PlTerm m2) +{ size = 3; + if ( !(a0 = PL_new_term_refs(3)) ) + throw PlResourceError(); + PL_put_term(a0+0, m0); + PL_put_term(a0+1, m1); + PL_put_term(a0+2, m2); +} + +__inline PlTermv::PlTermv(PlTerm m0, PlTerm m1, PlTerm m2, PlTerm m3) +{ size = 4; + if ( !(a0 = PL_new_term_refs(4)) ) + throw PlResourceError(); + PL_put_term(a0+0, m0); + PL_put_term(a0+1, m1); + PL_put_term(a0+2, m2); + + PL_put_term(a0+3, m3); +} + +__inline PlTermv::PlTermv(PlTerm m0, PlTerm m1, PlTerm m2, + PlTerm m3, PlTerm m4) +{ size = 5; + if ( !(a0 = PL_new_term_refs(5)) ) + throw PlResourceError(); + PL_put_term(a0+0, m0); + PL_put_term(a0+1, m1); + PL_put_term(a0+2, m2); + PL_put_term(a0+3, m3); + PL_put_term(a0+4, m4); +} + + +__inline PlTerm +PlTermv::operator [](int n) const +{ if ( n < 0 || n >= size ) + throw PlTermvDomainError(size, n); + + return PlTerm(a0+n); +} + + + /******************************* + * EXCEPTIONS (BODY) * + *******************************/ + +__inline PlException::operator const char *(void) +{ PlFrame fr; +#ifdef USE_PRINT_MESSAGE + PlTermv av(2); + + av[0] = PlCompound("print_message", + PlTermv("error", ref)); + PlQuery q("$write_on_string", av); + if ( q.next_solution() ) + return (char *)av[1]; +#else + PlTermv av(2); + av[0] = PlTerm(ref); + PlQuery q("$messages", "message_to_string", av); + if ( q.next_solution() ) + return (char *)av[1]; +#endif + return "[ERROR: Failed to generate message. Internal error]\n"; +} + + +__inline void +PlException::cppThrow() +{ term_t a = PL_new_term_ref(); + atom_t name; + int arity; + + if ( PL_get_arg(1, ref, a) && + PL_get_name_arity(a, &name, &arity) ) + { const char *s = PL_atom_chars(name); + + if ( strcmp(s, "type_error") == 0 ) + throw PlTypeError(ref); + if ( strcmp(s, "domain_error") == 0 ) + throw PlDomainError(ref); + if ( strcmp(s, "resource_error") == 0 ) + throw PlResourceError(ref); + } + + throw *this; +} + + + /******************************* + * QUERY (BODY) * + *******************************/ + +__inline int +PlQuery::next_solution() +{ int rval; + + if ( !(rval = PL_next_solution(qid)) ) + { term_t ex; + + if ( (ex = PL_exception(qid)) ) + PlException(ex).cppThrow(); + } + return rval; +} + + + /******************************* + * ENGINE * + *******************************/ + +class PlError +{ +public: + char *message; + + PlError(const char *msg) + { message = new char[strlen(msg+1)]; + strcpy(message, msg); + } +}; + + +class PlEngine +{ +public: + + PlEngine(int argc, char **argv) + { if ( !PL_initialise(argc, argv) ) + throw PlError("failed to initialise"); + } + + PlEngine(char *av0) + { int ac = 0; + char **av = (char **)malloc(sizeof(char *) * 2); + + av[ac++] = av0; + + if ( !PL_initialise(1, av) ) + throw PlError("failed to initialise"); + } + + ~PlEngine() + { PL_cleanup(0); + } +}; + + + /******************************* + * REGISTER PREDICATES * + *******************************/ + +#ifndef PROLOG_MODULE +#define PROLOG_MODULE (const char*)NULL +#endif + +#define PREDICATE(name, arity) \ + static foreign_t \ + pl_ ## name ## __ ## arity(PlTermv _av); \ + static foreign_t \ + _pl_ ## name ## __ ## arity(term_t t0, int a, control_t c) \ + { try \ + { \ + return pl_ ## name ## __ ## arity(PlTermv(arity, t0)); \ + } catch ( PlException &ex ) \ + { return ex.plThrow(); \ + } \ + } \ + static PlRegister _x ## name ## __ ## arity(PROLOG_MODULE, #name, arity, \ + _pl_ ## name ## __ ## arity); \ + static foreign_t pl_ ## name ## __ ## arity(PlTermv _av) + + +#define PREDICATE_NONDET(name, arity) \ + static foreign_t \ + pl_ ## name ## __ ## arity(PlTermv _av, foreign_t handle); \ + static foreign_t \ + _pl_ ## name ## __ ## arity(term_t t0, int a, control_t c) \ + { try \ + { \ + return pl_ ## name ## __ ## arity(PlTermv(arity, t0), (foreign_t)c); \ + } catch ( PlException &ex ) \ + { return ex.plThrow(); \ + } \ + } \ + static PlRegister _x ## name ## __ ## arity(PROLOG_MODULE, #name, arity, \ + _pl_ ## name ## __ ## arity, \ + PL_FA_NONDETERMINISTIC | PL_FA_VARARGS); \ + static foreign_t pl_ ## name ## __ ## arity(PlTermv _av, foreign_t handle) + +#define A1 _av[0] +#define A2 _av[1] +#define A3 _av[2] +#define A4 _av[3] +#define A5 _av[4] +#define A6 _av[5] +#define A7 _av[6] +#define A8 _av[7] +#define A9 _av[8] +#define A10 _av[9] + +#endif /*_SWI_CPP_H*/ diff --git a/src/bindings/swig/wrapped/WrappedDataModel.h b/src/bindings/swig/wrapped/WrappedDataModel.h index 285b40a..2b1ad48 100644 --- a/src/bindings/swig/wrapped/WrappedDataModel.h +++ b/src/bindings/swig/wrapped/WrappedDataModel.h @@ -76,7 +76,7 @@ public: if (assignElem.hasAttribute("location")) { location = assignElem.getAttribute("location"); } - + std::ostringstream ssAssign; ssAssign << assignElem; std::string tmp; @@ -124,7 +124,9 @@ public: init("", location, Data::toJSON(data)); } - virtual bool evalAsBool(const std::string& elem, const std::string& content) { return false; } + virtual bool evalAsBool(const std::string& elem, const std::string& content) { + return false; + } virtual void init(const std::string& dataElem, const std::string& location, const std::string& content) {} virtual void assign(const std::string& assignElem, const std::string& location, const std::string& content) {} virtual void eval(const std::string& scriptElem, const std::string& expr) {} diff --git a/src/uscxml/Convenience.h b/src/uscxml/Convenience.h index 43458b8..fcc696c 100644 --- a/src/uscxml/Convenience.h +++ b/src/uscxml/Convenience.h @@ -143,14 +143,14 @@ x.ull = 0x0123456789abcdef; // may need special suffix for ULL. */ enum endianness { - little_endian, - big_endian, - network_endian = big_endian, + little_endian, + big_endian, + network_endian = big_endian, #if defined(BOOST_LITTLE_ENDIAN) - host_endian = little_endian + host_endian = little_endian #elif defined(BOOST_BIG_ENDIAN) - host_endian = big_endian + host_endian = big_endian #else #error "unable to determine system endianness" #endif diff --git a/src/uscxml/Factory.cpp b/src/uscxml/Factory.cpp index 5b7426f..8edaf07 100644 --- a/src/uscxml/Factory.cpp +++ b/src/uscxml/Factory.cpp @@ -130,7 +130,7 @@ Factory::Factory(Factory* parentFactory) : _parentFactory(parentFactory) { Factory::Factory(const std::string& pluginPath, Factory* parentFactory) : _parentFactory(parentFactory), _pluginPath(pluginPath) { registerPlugins(); } - + Factory::Factory(const std::string& pluginPath) : _parentFactory(NULL), _pluginPath(pluginPath) { registerPlugins(); } @@ -365,14 +365,6 @@ void Factory::registerPlugins() { registerIOProcessor(ioProcessor); } { - InterpreterHTTPServlet* ioProcessor = new InterpreterHTTPServlet(); - registerIOProcessor(ioProcessor); - } - { - InterpreterWebSocketServlet* ioProcessor = new InterpreterWebSocketServlet(); - registerIOProcessor(ioProcessor); - } - { FetchElement* element = new FetchElement(); registerExecutableContent(element); } @@ -422,7 +414,7 @@ while(iter != name.end()) { \ iter++; \ } - + void Factory::listComponents() { { std::cout << "Available Datamodels:" << std::endl; @@ -445,7 +437,7 @@ void Factory::listComponents() { } } } - + void Factory::registerIOProcessor(IOProcessorImpl* ioProcessor) { std::list names = ioProcessor->getNames(); std::list::iterator nameIter = names.begin(); diff --git a/src/uscxml/Factory.h b/src/uscxml/Factory.h index 83b8433..a0569bb 100644 --- a/src/uscxml/Factory.h +++ b/src/uscxml/Factory.h @@ -454,7 +454,7 @@ public: std::map getIOProcessors(); void listComponents(); - + static Factory* getInstance(); static void setDefaultPluginPath(const std::string& path); @@ -474,7 +474,7 @@ protected: #endif void registerPlugins(); - + Factory(const std::string&); ~Factory(); Factory* _parentFactory; diff --git a/src/uscxml/Interpreter.cpp b/src/uscxml/Interpreter.cpp index f3d30de..4ffa92c 100644 --- a/src/uscxml/Interpreter.cpp +++ b/src/uscxml/Interpreter.cpp @@ -310,7 +310,7 @@ void NameSpaceInfo::init(const std::map& namespaceInfo nsIter++; } } - + std::map > Interpreter::_instances; tthread::recursive_mutex Interpreter::_instanceMutex; @@ -558,15 +558,15 @@ void InterpreterImpl::run(void* instance) { InterpreterState state; while(interpreter->_state.thread & InterpreterState::USCXML_THREAD_STARTED) { state = interpreter->step(-1); - + switch (state & InterpreterState::USCXML_INTERPRETER_MASK) { - case uscxml::InterpreterState::USCXML_FAULTED: - case uscxml::InterpreterState::USCXML_FINISHED: - case uscxml::InterpreterState::USCXML_DESTROYED: - // return as we finished - goto DONE_THREAD; - default: - break; + case uscxml::InterpreterState::USCXML_FAULTED: + case uscxml::InterpreterState::USCXML_FINISHED: + case uscxml::InterpreterState::USCXML_DESTROYED: + // return as we finished + goto DONE_THREAD; + default: + break; } } } catch (Event e) { @@ -595,51 +595,51 @@ void InterpreterImpl::setInterpreterState(InterpreterState::State newState, cons e.data.compound["cause"] = Data(error, Data::VERBATIM); setInterpreterState(newState, e); } - + void InterpreterImpl::setInterpreterState(InterpreterState::State newState, const Event& error) { switch (_state) { - case InterpreterState::USCXML_INSTANTIATED: - if (VALID_FROM_INSTANTIATED(newState)) - break; - assert(false); - break; - case InterpreterState::USCXML_FAULTED: - if (VALID_FROM_FAULTED(newState)) - break; - assert(false); + case InterpreterState::USCXML_INSTANTIATED: + if (VALID_FROM_INSTANTIATED(newState)) break; - case InterpreterState::USCXML_MICROSTEPPED: - if (VALID_FROM_MICROSTEPPED(newState)) - break; - assert(false); - break; - case InterpreterState::USCXML_MACROSTEPPED: - if (VALID_FROM_MACROSTEPPED(newState)) - break; - assert(false); + assert(false); + break; + case InterpreterState::USCXML_FAULTED: + if (VALID_FROM_FAULTED(newState)) break; - case InterpreterState::USCXML_IDLE: - if (VALID_FROM_IDLE(newState)) - break; - assert(false); + assert(false); + break; + case InterpreterState::USCXML_MICROSTEPPED: + if (VALID_FROM_MICROSTEPPED(newState)) break; - case InterpreterState::USCXML_FINISHED: - if (VALID_FROM_FINISHED(newState)) - break; - assert(false); + assert(false); + break; + case InterpreterState::USCXML_MACROSTEPPED: + if (VALID_FROM_MACROSTEPPED(newState)) break; - case InterpreterState::USCXML_DESTROYED: - assert(false); + assert(false); + break; + case InterpreterState::USCXML_IDLE: + if (VALID_FROM_IDLE(newState)) break; - - default: + assert(false); + break; + case InterpreterState::USCXML_FINISHED: + if (VALID_FROM_FINISHED(newState)) break; + assert(false); + break; + case InterpreterState::USCXML_DESTROYED: + assert(false); + break; + + default: + break; } - + _state.state = newState; _state.msg = error; } - + bool InterpreterImpl::runOnMainThread(int fps, bool blocking) { tthread::lock_guard lock(_mutex); if (_state == InterpreterState::USCXML_FINISHED || _state == InterpreterState::USCXML_FAULTED || _state == InterpreterState::USCXML_DESTROYED) @@ -676,7 +676,7 @@ bool InterpreterImpl::runOnMainThread(int fps, bool blocking) { void InterpreterImpl::reset() { tthread::lock_guard lock(_mutex); - + _externalQueue.clear(); _internalQueue.clear(); _historyValue.clear(); @@ -685,14 +685,14 @@ void InterpreterImpl::reset() { _configuration = NodeSet(); _topLevelFinalReached = false; _isInitialized = false; - + setInterpreterState(InterpreterState::USCXML_INSTANTIATED); } void InterpreterImpl::setupAndNormalizeDOM() { if (_domIsSetup) return; - + if (!_document) { Event error("error.platform"); error.data.compound["cause"] = Data("Interpreter has no DOM", Data::VERBATIM); @@ -720,7 +720,7 @@ void InterpreterImpl::setupAndNormalizeDOM() { // normalize document // TODO: Resolve XML includes - + // make sure every state has an id Arabica::XPath::NodeSet states; states.push_back(_xpath.evaluate("//" + _nsInfo.xpathPrefix + "state", _scxml).asNodeSet()); @@ -732,7 +732,7 @@ void InterpreterImpl::setupAndNormalizeDOM() { stateElem.setAttribute("id", UUID::getUUID()); } } - + // make sure every invoke has an idlocation or id Arabica::XPath::NodeSet invokes = _xpath.evaluate("//" + _nsInfo.xpathPrefix + "invoke", _scxml).asNodeSet(); for (int i = 0; i < invokes.size(); i++) { @@ -741,7 +741,7 @@ void InterpreterImpl::setupAndNormalizeDOM() { invokeElem.setAttribute("id", UUID::getUUID()); } } - + // add an id to the scxml element if (!_scxml.hasAttribute("id")) { _scxml.setAttribute("id", UUID::getUUID()); @@ -754,7 +754,7 @@ void InterpreterImpl::setupAndNormalizeDOM() { eventTarget.addEventListener("DOMSubtreeModified", _domEventListener, true); } - + void InterpreterImpl::init() { // make sure we have a factory if none was set before if (_factory == NULL) @@ -762,7 +762,7 @@ void InterpreterImpl::init() { // setup and normalize DOM setupAndNormalizeDOM(); - + // get our name or generate as UUID if (_name.length() == 0) _name = (HAS_ATTR(_scxml, "name") ? ATTR(_scxml, "name") : UUID::getUUID()); @@ -775,7 +775,7 @@ void InterpreterImpl::init() { // start io processoes setupIOProcessors(); - + // instantiate datamodel if (HAS_ATTR(_scxml, "datamodel")) { _dataModel = _factory->createDataModel(ATTR(_scxml, "datamodel"), this); @@ -787,18 +787,18 @@ void InterpreterImpl::init() { } else { _dataModel = _factory->createDataModel("null", this); } - + _dataModel.assign("_x.args", _cmdLineOptions); - + // _running = true; #if VERBOSE std::cout << "running " << this << std::endl; #endif - + _binding = (HAS_ATTR(_scxml, "binding") && iequals(ATTR(_scxml, "binding"), "late") ? LATE : EARLY); - + // @TODO: Reread http://www.w3.org/TR/scxml/#DataBinding - + if (_binding == EARLY) { // initialize all data elements NodeSet dataElems = _xpath.evaluate("//" + _nsInfo.xpathPrefix + "data", _scxml).asNodeSet(); @@ -817,7 +817,7 @@ void InterpreterImpl::init() { initializeData(Element(topDataElems[i])); } } - + // executeGlobalScriptElements NodeSet globalScriptElems = filterChildElements(_nsInfo.xmlNSPrefix + "script", _scxml); for (unsigned int i = 0; i < globalScriptElems.size(); i++) { @@ -1722,7 +1722,7 @@ void InterpreterImpl::executeContent(const Arabica::DOM::Node& cont LOG(ERROR) << "Failed to convert relative script URI " << ATTR(content, "src") << " to absolute with base URI " << _baseURI.asString(); return; } - + std::stringstream srcContent; try { if (_cachedURLs.find(scriptUrl.asString()) != _cachedURLs.end() && false) { @@ -1819,8 +1819,8 @@ void InterpreterImpl::executeContent(const Arabica::DOM::Node& cont void InterpreterImpl::finalizeAndAutoForwardCurrentEvent() { for (std::map::iterator invokeIter = _invokers.begin(); - invokeIter != _invokers.end(); - invokeIter++) { + invokeIter != _invokers.end(); + invokeIter++) { if (iequals(invokeIter->first, _currEvent.invokeid)) { Arabica::XPath::NodeSet finalizes = filterChildElements(_nsInfo.xmlNSPrefix + "finalize", invokeIter->second.getElement()); for (int k = 0; k < finalizes.size(); k++) { @@ -2626,14 +2626,30 @@ std::string InterpreterState::stateToString(int32_t state) { std::stringstream ss; switch(state & USCXML_INTERPRETER_MASK) { - case USCXML_INSTANTIATED: ss << "INSTANTIATED"; break; - case USCXML_FAULTED: ss << "FAULTED"; break; - case USCXML_MICROSTEPPED: ss << "MICROSTEPPED"; break; - case USCXML_MACROSTEPPED: ss << "MACROSTEPPED"; break; - case USCXML_IDLE: ss << "IDLE"; break; - case USCXML_FINISHED: ss << "FINISHED"; break; - case USCXML_DESTROYED: ss << "DESTROYED"; break; - default: ss << "INVALID"; break; + case USCXML_INSTANTIATED: + ss << "INSTANTIATED"; + break; + case USCXML_FAULTED: + ss << "FAULTED"; + break; + case USCXML_MICROSTEPPED: + ss << "MICROSTEPPED"; + break; + case USCXML_MACROSTEPPED: + ss << "MACROSTEPPED"; + break; + case USCXML_IDLE: + ss << "IDLE"; + break; + case USCXML_FINISHED: + ss << "FINISHED"; + break; + case USCXML_DESTROYED: + ss << "DESTROYED"; + break; + default: + ss << "INVALID"; + break; } if (state & USCXML_THREAD_STARTED) { @@ -2646,7 +2662,7 @@ std::string InterpreterState::stateToString(int32_t state) { } else { ss << ", " << "JOINED"; } - + return ss.str(); } diff --git a/src/uscxml/Interpreter.h b/src/uscxml/Interpreter.h index 81ccdb9..d9aeac3 100644 --- a/src/uscxml/Interpreter.h +++ b/src/uscxml/Interpreter.h @@ -59,7 +59,7 @@ catch (Event e) { \ if (_state == InterpreterState::USCXML_DESTROYED) { \ throw boost::bad_weak_ptr(); \ } \ - + #define USCXML_MONITOR_CALLBACK(callback)\ for(monIter_t monIter = _monitors.begin(); monIter != _monitors.end(); monIter++) { \ @@ -116,9 +116,9 @@ public: }; enum Capabilities { - CAN_NOTHING = 0, - CAN_BASIC_HTTP = 1, - CAN_GENERIC_HTTP = 2, + CAN_NOTHING = 0, + CAN_BASIC_HTTP = 1, + CAN_GENERIC_HTTP = 2, }; class USCXML_API InterpreterOptions { @@ -132,9 +132,9 @@ public: logLevel(0), httpPort(0), httpsPort(0), - wsPort(0) - {} - + wsPort(0) { + } + bool withDebugger; bool verbose; bool withHTTP; @@ -206,7 +206,7 @@ public: const Arabica::XPath::StandardNamespaceContext* getNSContext() { return nsContext; } - + std::string nsURL; // ough to be "http://www.w3.org/2005/07/scxml" but maybe empty std::string xpathPrefix; // prefix mapped for xpath, "scxml" is _xmlNSPrefix is empty but _nsURL set std::string xmlNSPrefix; // the actual prefix for elements in the xml file @@ -235,12 +235,12 @@ struct USCXML_API InterpreterState { USCXML_THREAD_RUNNING = 0x0100, // USCXML_THREAD_STARTED = 0x0200, // }; - + enum BitMask { USCXML_THREAD_MASK = 0xff00, USCXML_INTERPRETER_MASK = 0x00ff, }; - + bool operator==(const InterpreterState& other) const { return state == other.state && msg == other.msg; } @@ -251,16 +251,16 @@ struct USCXML_API InterpreterState { operator int() { return (int)(state | thread); } - + Event getMessage() { return msg; } - + static std::string stateToString(int32_t state); - + friend USCXML_API std::ostream& operator<< (std::ostream& os, const InterpreterState& interpreterState); friend USCXML_API class InterpreterImpl; - + protected: int32_t thread; State state; @@ -275,8 +275,8 @@ public: typedef std::set::iterator monIter_t; enum Binding { - EARLY = 0, - LATE = 1 + EARLY = 0, + LATE = 1 }; virtual ~InterpreterImpl(); @@ -284,9 +284,13 @@ public: void copyTo(InterpreterImpl* other); void copyTo(boost::shared_ptr other); - // TODO: Look into that pure virtual issue and make these abstract! - virtual InterpreterState interpret() { return _state; } ///< Start interpreter blockingly - virtual InterpreterState step(int waitForMS = 0) { return _state; }; ///< Perform a single step + // TODO: We need to move the destructor to the implementations to make these pure virtual + virtual InterpreterState interpret() { + return _state; ///< Start interpreter blockingly + } + virtual InterpreterState step(int waitForMS = 0) { + return _state; + }; ///< Perform a single step void start(); ///< Start interpretation in a thread void stop(); ///< Stop interpreter thread @@ -295,7 +299,7 @@ public: bool isRunning(); InterpreterState getInterpreterState(); - + void addMonitor(InterpreterMonitor* monitor) { _monitors.insert(monitor); } @@ -330,11 +334,11 @@ public: DataModel getDataModel() { return _dataModel; } - + void setParentQueue(uscxml::concurrency::BlockingQueue* parentQueue) { _parentQueue = parentQueue; } - + void setFactory(Factory* factory) { _factory = factory; } @@ -438,7 +442,7 @@ public: Arabica::DOM::Node getState(const std::string& stateId); Arabica::XPath::NodeSet getStates(const std::list& stateIds); Arabica::XPath::NodeSet getAllStates(); - + Arabica::XPath::NodeSet getInitialStates(Arabica::DOM::Node state = Arabica::DOM::Node()); static Arabica::XPath::NodeSet getChildStates(const Arabica::DOM::Node& state); static Arabica::XPath::NodeSet getChildStates(const Arabica::XPath::NodeSet& state); @@ -480,7 +484,7 @@ protected: void setInterpreterState(InterpreterState::State newState, const std::string& error); void setInterpreterState(InterpreterState::State newState, const Event& error); void setInterpreterState(InterpreterState::State newState); - + bool _stable; tthread::thread* _thread; tthread::recursive_mutex _mutex; @@ -526,7 +530,7 @@ protected: std::string _name; std::string _sessionId; unsigned int _capabilities; - + Data _cmdLineOptions; virtual void executeContent(const Arabica::DOM::Node& content, bool rethrow = false); @@ -585,8 +589,8 @@ public: operator bool() const { return (_impl && - _impl->_state != InterpreterState::USCXML_FAULTED && - _impl->_state != InterpreterState::USCXML_DESTROYED); + _impl->_state != InterpreterState::USCXML_FAULTED && + _impl->_state != InterpreterState::USCXML_DESTROYED); } bool operator< (const Interpreter& other) const { return _impl < other._impl; @@ -605,7 +609,7 @@ public: void reset() { return _impl->reset(); } - + void start() { return _impl->start(); } @@ -636,7 +640,7 @@ public: InterpreterState getState() { return _impl->getInterpreterState(); } - + void addMonitor(InterpreterMonitor* monitor) { return _impl->addMonitor(monitor); } @@ -779,7 +783,7 @@ public: static std::map > getInstances(); protected: - + void setInvokeRequest(const InvokeRequest& req) { return _impl->setInvokeRequest(req); } diff --git a/src/uscxml/Message.h b/src/uscxml/Message.h index 44d9207..05dc758 100644 --- a/src/uscxml/Message.h +++ b/src/uscxml/Message.h @@ -66,8 +66,8 @@ public: class USCXML_API Data { public: enum Type { - VERBATIM, - INTERPRETED, + VERBATIM, + INTERPRETED, }; Data() : type(INTERPRETED) {} @@ -267,9 +267,9 @@ protected: class USCXML_API Event { public: enum Type { - INTERNAL = 1, - EXTERNAL = 2, - PLATFORM = 3 + INTERNAL = 1, + EXTERNAL = 2, + PLATFORM = 3 }; Event() : eventType(INTERNAL), hideSendId(false) {} @@ -281,9 +281,9 @@ public: bool operator==(const Event& other) const { return (this->name == other.name && - this->sendid == other.sendid && - this->invokeid == other.invokeid && - this->data == other.data); + this->sendid == other.sendid && + this->invokeid == other.invokeid && + this->data == other.data); } bool operator!=(const Event& other) const { return !(*this == other); diff --git a/src/uscxml/concurrency/eventqueue/DelayedEventQueue.h b/src/uscxml/concurrency/eventqueue/DelayedEventQueue.h index 90ff819..0059bb5 100644 --- a/src/uscxml/concurrency/eventqueue/DelayedEventQueue.h +++ b/src/uscxml/concurrency/eventqueue/DelayedEventQueue.h @@ -38,9 +38,9 @@ class USCXML_API DelayedEventQueue { public: enum OpMask { - DEQ_READ = EV_READ, - DEQ_WRITE = EV_WRITE, - DEQ_SIGNAL = EV_SIGNAL + DEQ_READ = EV_READ, + DEQ_WRITE = EV_WRITE, + DEQ_SIGNAL = EV_SIGNAL }; struct callbackData { diff --git a/src/uscxml/concurrency/tinythread.h b/src/uscxml/concurrency/tinythread.h index a47b46a..9d211f4 100644 --- a/src/uscxml/concurrency/tinythread.h +++ b/src/uscxml/concurrency/tinythread.h @@ -435,7 +435,7 @@ public: EnterCriticalSection(&mWaitersCountLock); ++ mWaitersCount; LeaveCriticalSection(&mWaitersCountLock); - + // Release the mutex while waiting for the condition (will decrease // the number of waiters when done)... aMutex.unlock(); @@ -444,7 +444,7 @@ public: #else struct timeval tv; gettimeofday(&tv, NULL); - + struct timespec ts; ts.tv_sec = tv.tv_sec + (ms / 1000); ts.tv_nsec = (tv.tv_usec * 1000); // convert tv microseconds to nanoseconds diff --git a/src/uscxml/debug/Breakpoint.h b/src/uscxml/debug/Breakpoint.h index c48b841..5cf92a1 100644 --- a/src/uscxml/debug/Breakpoint.h +++ b/src/uscxml/debug/Breakpoint.h @@ -29,15 +29,15 @@ class USCXML_API Breakpoint { public: enum When { - UNDEF_WHEN, AFTER, BEFORE, ON + UNDEF_WHEN, AFTER, BEFORE, ON }; enum Subject { - UNDEF_SUBJECT, STATE, TRANSITION, STABLE, MICROSTEP, EVENT, INVOKER, EXECUTABLE + UNDEF_SUBJECT, STATE, TRANSITION, STABLE, MICROSTEP, EVENT, INVOKER, EXECUTABLE }; enum Action { - UNDEF_ACTION, ENTER, EXIT, INVOKE, UNINVOKE + UNDEF_ACTION, ENTER, EXIT, INVOKE, UNINVOKE }; Breakpoint() { diff --git a/src/uscxml/interpreter/InterpreterDraft6.cpp b/src/uscxml/interpreter/InterpreterDraft6.cpp index 5e64e66..e2ab620 100644 --- a/src/uscxml/interpreter/InterpreterDraft6.cpp +++ b/src/uscxml/interpreter/InterpreterDraft6.cpp @@ -31,27 +31,27 @@ using namespace Arabica::XPath; using namespace Arabica::DOM; // see: http://www.w3.org/TR/scxml/#AlgorithmforSCXMLInterpretation - + InterpreterState InterpreterDraft6::interpret() { InterpreterState state; while(true) { state = step(-1); - + switch (state & InterpreterState::USCXML_INTERPRETER_MASK) { - case uscxml::InterpreterState::USCXML_FAULTED: - case uscxml::InterpreterState::USCXML_FINISHED: - case uscxml::InterpreterState::USCXML_DESTROYED: - // return as we finished - return state; - default: - - // process invokers on main thread - if(_thread == NULL) { - runOnMainThread(200); - } + case uscxml::InterpreterState::USCXML_FAULTED: + case uscxml::InterpreterState::USCXML_FINISHED: + case uscxml::InterpreterState::USCXML_DESTROYED: + // return as we finished + return state; + default: + + // process invokers on main thread + if(_thread == NULL) { + runOnMainThread(200); + } - // process next step - break; + // process next step + break; } } return state; @@ -60,35 +60,35 @@ InterpreterState InterpreterDraft6::interpret() { // setup / fetch the documents initial transitions NodeSet InterpreterDraft6::getDocumentInitialTransitions() { NodeSet initialTransitions; - + if (_userDefinedStartConfiguration.size() > 0) { // we emulate entering a given configuration by creating a pseudo deep history Element initHistory = _document.createElementNS(_nsInfo.nsURL, "history"); _nsInfo.setPrefix(initHistory); - + initHistory.setAttribute("id", UUID::getUUID()); initHistory.setAttribute("type", "deep"); _scxml.insertBefore(initHistory, _scxml.getFirstChild()); - + std::string histId = ATTR(initHistory, "id"); NodeSet histStates; for (int i = 0; i < _userDefinedStartConfiguration.size(); i++) { histStates.push_back(getState(_userDefinedStartConfiguration[i])); } _historyValue[histId] = histStates; - + Element initialElem = _document.createElementNS(_nsInfo.nsURL, "initial"); _nsInfo.setPrefix(initialElem); - + initialElem.setAttribute("generated", "true"); Element transitionElem = _document.createElementNS(_nsInfo.nsURL, "transition"); _nsInfo.setPrefix(transitionElem); - + transitionElem.setAttribute("target", histId); initialElem.appendChild(transitionElem); _scxml.appendChild(initialElem); initialTransitions.push_back(transitionElem); - + } else { // try to get initial transition from initial element initialTransitions = _xpath.evaluate("/" + _nsInfo.xpathPrefix + "initial/" + _nsInfo.xpathPrefix + "transition", _scxml).asNodeSet(); @@ -100,11 +100,11 @@ NodeSet InterpreterDraft6::getDocumentInitialTransitions() { for (int i = 0; i < initialStates.size(); i++) { Element initialElem = _document.createElementNS(_nsInfo.nsURL, "initial"); _nsInfo.setPrefix(initialElem); - + initialElem.setAttribute("generated", "true"); Element transitionElem = _document.createElementNS(_nsInfo.nsURL, "transition"); _nsInfo.setPrefix(transitionElem); - + transitionElem.setAttribute("target", ATTR(initialStates[i], "id")); initialElem.appendChild(transitionElem); _scxml.appendChild(initialElem); @@ -118,20 +118,20 @@ NodeSet InterpreterDraft6::getDocumentInitialTransitions() { InterpreterState InterpreterDraft6::step(int waitForMS = 0) { try { tthread::lock_guard lock(_mutex); - + if (_state & InterpreterState::USCXML_FINISHED || - _state & InterpreterState::USCXML_FAULTED || - _state & InterpreterState::USCXML_DESTROYED) { + _state & InterpreterState::USCXML_FAULTED || + _state & InterpreterState::USCXML_DESTROYED) { return _state; } - + NodeSet enabledTransitions; - + // setup document and interpreter if (!_isInitialized) { init(); // will throw } - + if (_configuration.size() == 0) { // goto initial configuration NodeSet initialTransitions = getDocumentInitialTransitions(); @@ -140,14 +140,14 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { } _stable = false; - + // are there spontaneous transitions? enabledTransitions = selectEventlessTransitions(); if (!enabledTransitions.empty()) { // test 403b enabledTransitions.to_document_order(); microstep(enabledTransitions); - + setInterpreterState(InterpreterState::USCXML_MICROSTEPPED); return _state; } @@ -160,9 +160,9 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { if (!_internalQueue.empty()) { _currEvent = _internalQueue.front(); _internalQueue.pop_front(); - + USCXML_MONITOR_CALLBACK2(beforeProcessingEvent, _currEvent) - + if (_dataModel) _dataModel.setEvent(_currEvent); enabledTransitions = selectTransitions(_currEvent.name); @@ -172,7 +172,7 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { enabledTransitions.to_document_order(); microstep(enabledTransitions); } - + // test 319 - even if we do not enable transitions, consider it a microstep setInterpreterState(InterpreterState::USCXML_MICROSTEPPED); return _state; @@ -209,7 +209,7 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { _condVar.wait(_mutex); } } - + if (waitForMS > 0) { // wait given number of milliseconds max uint64_t now = tthread::chrono::system_clock::now(); @@ -219,14 +219,14 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { now = tthread::chrono::system_clock::now(); } } - + if (_externalQueue.isEmpty()) { return _state; } - + setInterpreterState(InterpreterState::USCXML_MACROSTEPPED); } - + _currEvent = _externalQueue.pop(); _currEvent.eventType = Event::EXTERNAL; // make sure it is set to external @@ -234,11 +234,11 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { goto EXIT_INTERPRETER; USCXML_MONITOR_CALLBACK2(beforeProcessingEvent, _currEvent) - + if (iequals(_currEvent.name, "cancel.invoke." + _sessionId)) { goto EXIT_INTERPRETER; } - + try { _dataModel.setEvent(_currEvent); } catch (Event e) { @@ -246,7 +246,7 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { } finalizeAndAutoForwardCurrentEvent(); - + // run internal processing until we reach a stable configuration again enabledTransitions = selectTransitions(_currEvent.name); if (!enabledTransitions.empty()) { @@ -257,12 +257,12 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { if (_topLevelFinalReached) goto EXIT_INTERPRETER; - + return _state; - EXIT_INTERPRETER: +EXIT_INTERPRETER: USCXML_MONITOR_CALLBACK(beforeCompletion) - + exitInterpreter(); if (_sendQueue) { std::map >::iterator sendIter = _sendIds.begin(); @@ -271,9 +271,9 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { sendIter++; } } - + USCXML_MONITOR_CALLBACK(afterCompletion) - + // assert(hasLegalConfiguration()); _mutex.unlock(); @@ -286,13 +286,13 @@ InterpreterState InterpreterDraft6::step(int waitForMS = 0) { } catch (Event e) { setInterpreterState(InterpreterState::USCXML_FAULTED, e); return _state; - + } catch (boost::bad_weak_ptr e) { LOG(ERROR) << "Unclean shutdown " << std::endl << std::endl; setInterpreterState(InterpreterState::USCXML_DESTROYED); return _state; } - + // set datamodel to null from this thread if(_dataModel) _dataModel = DataModel(); @@ -304,18 +304,18 @@ void InterpreterDraft6::stabilize() { NodeSet enabledTransitions; _stable = false; - + if (_configuration.size() == 0) { // goto initial configuration NodeSet initialTransitions = getDocumentInitialTransitions(); assert(initialTransitions.size() > 0); enterStates(initialTransitions); } - + do { // process microsteps for enabled transitions until there are no more left enabledTransitions = selectEventlessTransitions(); - + if (enabledTransitions.size() == 0) { if (_internalQueue.size() == 0) { _stable = true; @@ -325,22 +325,22 @@ void InterpreterDraft6::stabilize() { #if VERBOSE std::cout << "Received internal event " << _currEvent.name << std::endl; #endif - + USCXML_MONITOR_CALLBACK2(beforeProcessingEvent, _currEvent) - + if (_dataModel) _dataModel.setEvent(_currEvent); enabledTransitions = selectTransitions(_currEvent.name); } } - + if (!enabledTransitions.empty()) { // test 403b enabledTransitions.to_document_order(); microstep(enabledTransitions); } } while(!_internalQueue.empty() || !_stable); - + USCXML_MONITOR_CALLBACK(onStableConfiguration) // when we reach a stable configuration, invoke @@ -418,7 +418,7 @@ void InterpreterDraft6::mainEventLoop() { USCXML_MONITOR_CALLBACK(onStableConfiguration) _mutex.unlock(); - + // whenever we have a stable configuration, run the mainThread hooks with 200fps while(_externalQueue.isEmpty() && _thread == NULL) { runOnMainThread(200); @@ -498,7 +498,7 @@ EXIT_INTERPRETER: } #endif - + Arabica::XPath::NodeSet InterpreterDraft6::selectTransitions(const std::string& event) { Arabica::XPath::NodeSet enabledTransitions; @@ -814,7 +814,7 @@ void InterpreterDraft6::exitStates(const Arabica::XPath::NodeSet& e NodeSet tmpStates; tmpStates.push_back(source); tmpStates.insert(tmpStates.end(), tStates.begin(), tStates.end()); -#if 1 +#if 0 std::cout << _name << ": tmpStates: "; for (int i = 0; i < tmpStates.size(); i++) { std::cout << ATTR(tmpStates[i], "id") << ", "; @@ -823,7 +823,7 @@ void InterpreterDraft6::exitStates(const Arabica::XPath::NodeSet& e #endif ancestor = findLCCA(tmpStates); } -#if 1 +#if 0 std::cout << _name << ": Ancestor: " << ATTR(ancestor, "id") << std::endl;; #endif for (int j = 0; j < _configuration.size(); j++) { @@ -1117,9 +1117,9 @@ void InterpreterDraft6::enterStates(const Arabica::XPath::NodeSet& } void InterpreterDraft6::addStatesToEnter(const Node& state, - Arabica::XPath::NodeSet& statesToEnter, - Arabica::XPath::NodeSet& statesForDefaultEntry, - Arabica::XPath::NodeSet& defaultHistoryContent) { + Arabica::XPath::NodeSet& statesToEnter, + Arabica::XPath::NodeSet& statesForDefaultEntry, + Arabica::XPath::NodeSet& defaultHistoryContent) { std::string stateId = ((Element)state).getAttribute("id"); #if VERBOSE diff --git a/src/uscxml/interpreter/InterpreterDraft6.h b/src/uscxml/interpreter/InterpreterDraft6.h index 25b096d..cf73d4b 100644 --- a/src/uscxml/interpreter/InterpreterDraft6.h +++ b/src/uscxml/interpreter/InterpreterDraft6.h @@ -25,9 +25,12 @@ namespace uscxml { class USCXML_API InterpreterDraft6 : public InterpreterImpl { +public: + virtual ~InterpreterDraft6() {}; + protected: - InterpreterState interpret(); - InterpreterState step(int blocking); + virtual InterpreterState interpret(); + virtual InterpreterState step(int blocking); void stabilize(); void microstep(const Arabica::XPath::NodeSet& enabledTransitions); @@ -35,7 +38,7 @@ protected: void addStatesToEnter(const Arabica::DOM::Node& state, Arabica::XPath::NodeSet& statesToEnter, Arabica::XPath::NodeSet& statesForDefaultEntry, - Arabica::XPath::NodeSet& defaultHistoryContent); + Arabica::XPath::NodeSet& defaultHistoryContent); void exitStates(const Arabica::XPath::NodeSet& enabledTransitions); void exitInterpreter(); diff --git a/src/uscxml/interpreter/InterpreterRC.cpp b/src/uscxml/interpreter/InterpreterRC.cpp index d651389..7f8c91c 100644 --- a/src/uscxml/interpreter/InterpreterRC.cpp +++ b/src/uscxml/interpreter/InterpreterRC.cpp @@ -927,7 +927,7 @@ void InterpreterRC::computeEntrySet(const Arabica::XPath::NodeSet& } } -#if 1 +#if 0 std::cout << "before addDescendantStatesToEnter: "; for (int i = 0; i < statesToEnter.size(); i++) { std::cout << ATTR(statesToEnter[i], "id") << " "; @@ -941,7 +941,7 @@ void InterpreterRC::computeEntrySet(const Arabica::XPath::NodeSet& addDescendantStatesToEnter(tmp[i],statesToEnter,statesForDefaultEntry, defaultHistoryContent); } -#if 1 +#if 0 std::cout << "after addDescendantStatesToEnter: "; for (int i = 0; i < statesToEnter.size(); i++) { std::cout << ATTR(statesToEnter[i], "id") << " "; @@ -959,7 +959,7 @@ void InterpreterRC::computeEntrySet(const Arabica::XPath::NodeSet& } } -#if 1 +#if 0 std::cout << "after addAncestorStatesToEnter: "; for (int i = 0; i < statesToEnter.size(); i++) { std::cout << ATTR(statesToEnter[i], "id") << " "; diff --git a/src/uscxml/plugins/Pluma/uce-dirent.h b/src/uscxml/plugins/Pluma/uce-dirent.h index 8cbd0e5..bafd4e4 100644 --- a/src/uscxml/plugins/Pluma/uce-dirent.h +++ b/src/uscxml/plugins/Pluma/uce-dirent.h @@ -278,25 +278,25 @@ typedef struct DIR { extern "C" { # endif - /* supply prototypes for dirent functions */ - static DIR *opendir (const char *dirname); - static struct dirent *readdir (DIR *dirp); - static int closedir (DIR *dirp); - static void rewinddir (DIR *dirp); - - /* - * Implement dirent interface as static functions so that the user does not - * need to change his project in any way to use dirent function. With this - * it is sufficient to include this very header from source modules using - * dirent functions and the functions will be pulled in automatically. - */ +/* supply prototypes for dirent functions */ +static DIR *opendir (const char *dirname); +static struct dirent *readdir (DIR *dirp); +static int closedir (DIR *dirp); +static void rewinddir (DIR *dirp); + +/* + * Implement dirent interface as static functions so that the user does not + * need to change his project in any way to use dirent function. With this + * it is sufficient to include this very header from source modules using + * dirent functions and the functions will be pulled in automatically. + */ #include #include #include #include #include - /* use ffblk instead of _find_t if requested */ +/* use ffblk instead of _find_t if requested */ #if defined(DIRENT_USE_FFBLK) # define _A_ARCH (FA_ARCH) # define _A_HIDDEN (FA_HIDDEN) @@ -309,353 +309,353 @@ extern "C" { # define _dos_findfirst(name,flags,dest) findfirst(name,dest,flags) #endif - static int _initdir (DIR *p); - static const char *_getdirname (const struct dirent *dp); - static void _setdirname (struct DIR *dirp); - - /* - * - * open directory stream for reading - * DIR *opendir (const char *dirname); - * - * Open named directory stream for read and return pointer to the - * internal working area that is used for retrieving individual directory - * entries. The internal working area has no fields of your interest. - * - * Returns a pointer to the internal working area or NULL in case the - * directory stream could not be opened. Global `errno' variable will set - * in case of error as follows: - * - * - * [EACESS |Permission denied. - * [EMFILE |Too many open files used by the process. - * [ENFILE |Too many open files in system. - * [ENOENT |Directory does not exist. - * [ENOMEM |Insufficient memory. - * [ENOTDIR |dirname does not refer to directory. This value is not - * reliable on MS-DOS and MS-Windows platforms. Many - * implementations return ENOENT even when the name refers to a - * file.] - *
- *
- */ - static DIR * - opendir( - const char *dirname) { - DIR *dirp; - assert (dirname != NULL); - - dirp = (DIR*)malloc (sizeof (struct DIR)); - if (dirp != NULL) { - char *p; - - /* allocate room for directory name */ - dirp->dirname = (char*) malloc (strlen (dirname) + 1 + strlen ("\\*.*")); - if (dirp->dirname == NULL) { - /* failed to duplicate directory name. errno set by malloc() */ - free (dirp); - return NULL; - } - /* Copy directory name while appending directory separator and "*.*". - * Directory separator is not appended if the name already ends with - * drive or directory separator. Directory separator is assumed to be - * '/' or '\' and drive separator is assumed to be ':'. */ - strcpy (dirp->dirname, dirname); - p = strchr (dirp->dirname, '\0'); - if (dirp->dirname < p && - *(p - 1) != '\\' && *(p - 1) != '/' && *(p - 1) != ':') { - strcpy (p++, "/"); - } +static int _initdir (DIR *p); +static const char *_getdirname (const struct dirent *dp); +static void _setdirname (struct DIR *dirp); + +/* + * + * open directory stream for reading + * DIR *opendir (const char *dirname); + * + * Open named directory stream for read and return pointer to the + * internal working area that is used for retrieving individual directory + * entries. The internal working area has no fields of your interest. + * + * Returns a pointer to the internal working area or NULL in case the + * directory stream could not be opened. Global `errno' variable will set + * in case of error as follows: + * + * + * [EACESS |Permission denied. + * [EMFILE |Too many open files used by the process. + * [ENFILE |Too many open files in system. + * [ENOENT |Directory does not exist. + * [ENOMEM |Insufficient memory. + * [ENOTDIR |dirname does not refer to directory. This value is not + * reliable on MS-DOS and MS-Windows platforms. Many + * implementations return ENOENT even when the name refers to a + * file.] + *
+ *
+ */ +static DIR * +opendir( + const char *dirname) { + DIR *dirp; + assert (dirname != NULL); + + dirp = (DIR*)malloc (sizeof (struct DIR)); + if (dirp != NULL) { + char *p; + + /* allocate room for directory name */ + dirp->dirname = (char*) malloc (strlen (dirname) + 1 + strlen ("\\*.*")); + if (dirp->dirname == NULL) { + /* failed to duplicate directory name. errno set by malloc() */ + free (dirp); + return NULL; + } + /* Copy directory name while appending directory separator and "*.*". + * Directory separator is not appended if the name already ends with + * drive or directory separator. Directory separator is assumed to be + * '/' or '\' and drive separator is assumed to be ':'. */ + strcpy (dirp->dirname, dirname); + p = strchr (dirp->dirname, '\0'); + if (dirp->dirname < p && + *(p - 1) != '\\' && *(p - 1) != '/' && *(p - 1) != ':') { + strcpy (p++, "/"); + } # ifdef DIRENT_WIN32_INTERFACE - strcpy (p, "*"); /*scan files with and without extension in win32*/ + strcpy (p, "*"); /*scan files with and without extension in win32*/ # else - strcpy (p, "*.*"); /*scan files with and without extension in DOS*/ + strcpy (p, "*.*"); /*scan files with and without extension in DOS*/ # endif - /* open stream */ - if (_initdir (dirp) == 0) { - /* initialization failed */ - free (dirp->dirname); - free (dirp); - return NULL; - } + /* open stream */ + if (_initdir (dirp) == 0) { + /* initialization failed */ + free (dirp->dirname); + free (dirp); + return NULL; } - return dirp; } + return dirp; +} - /* - * - * read a directory entry - * struct dirent *readdir (DIR *dirp); - * - * Read individual directory entry and return pointer to a structure - * containing the name of the entry. Individual directory entries returned - * include normal files, sub-directories, pseudo-directories "." and ".." - * and also volume labels, hidden files and system files in MS-DOS and - * MS-Windows. You might want to use stat(2) function to determinate which - * one are you dealing with. Many dirent implementations already contain - * equivalent information in dirent structure but you cannot depend on - * this. - * - * The dirent structure contains several system dependent fields that - * generally have no interest to you. The only interesting one is char - * d_name[] that is also portable across different systems. The d_name - * field contains the name of the directory entry without leading path. - * While d_name is portable across different systems the actual storage - * capacity of d_name varies from system to system and there is no portable - * way to find out it at compile time as different systems define the - * capacity of d_name with different macros and some systems do not define - * capacity at all (besides actual declaration of the field). If you really - * need to find out storage capacity of d_name then you might want to try - * NAME_MAX macro. The NAME_MAX is defined in POSIX standard althought - * there are many MS-DOS and MS-Windows implementations those do not define - * it. There are also systems that declare d_name as "char d_name[1]" and - * then allocate suitable amount of memory at run-time. Thanks to Alain - * Decamps (Alain.Decamps@advalvas.be) for pointing it out to me. - * - * This all leads to the fact that it is difficult to allocate space - * for the directory names when the very same program is being compiled on - * number of operating systems. Therefore I suggest that you always - * allocate space for directory names dynamically. - * - * - * Returns a pointer to a structure containing name of the directory entry - * in `d_name' field or NULL if there was an error. In case of an error the - * global `errno' variable will set as follows: - * - * - * [EBADF |dir parameter refers to an invalid directory stream. This value - * is not set reliably on all implementations.] - *
- *
- */ - static struct dirent * - readdir (DIR *dirp) { - assert (dirp != NULL); - if (dirp == NULL) { - errno = EBADF; - return NULL; - } +/* + * + * read a directory entry + * struct dirent *readdir (DIR *dirp); + * + * Read individual directory entry and return pointer to a structure + * containing the name of the entry. Individual directory entries returned + * include normal files, sub-directories, pseudo-directories "." and ".." + * and also volume labels, hidden files and system files in MS-DOS and + * MS-Windows. You might want to use stat(2) function to determinate which + * one are you dealing with. Many dirent implementations already contain + * equivalent information in dirent structure but you cannot depend on + * this. + * + * The dirent structure contains several system dependent fields that + * generally have no interest to you. The only interesting one is char + * d_name[] that is also portable across different systems. The d_name + * field contains the name of the directory entry without leading path. + * While d_name is portable across different systems the actual storage + * capacity of d_name varies from system to system and there is no portable + * way to find out it at compile time as different systems define the + * capacity of d_name with different macros and some systems do not define + * capacity at all (besides actual declaration of the field). If you really + * need to find out storage capacity of d_name then you might want to try + * NAME_MAX macro. The NAME_MAX is defined in POSIX standard althought + * there are many MS-DOS and MS-Windows implementations those do not define + * it. There are also systems that declare d_name as "char d_name[1]" and + * then allocate suitable amount of memory at run-time. Thanks to Alain + * Decamps (Alain.Decamps@advalvas.be) for pointing it out to me. + * + * This all leads to the fact that it is difficult to allocate space + * for the directory names when the very same program is being compiled on + * number of operating systems. Therefore I suggest that you always + * allocate space for directory names dynamically. + * + * + * Returns a pointer to a structure containing name of the directory entry + * in `d_name' field or NULL if there was an error. In case of an error the + * global `errno' variable will set as follows: + * + * + * [EBADF |dir parameter refers to an invalid directory stream. This value + * is not set reliably on all implementations.] + *
+ *
+ */ +static struct dirent * +readdir (DIR *dirp) { + assert (dirp != NULL); + if (dirp == NULL) { + errno = EBADF; + return NULL; + } #if defined(DIRENT_WIN32_INTERFACE) - if (dirp->search_handle == INVALID_HANDLE_VALUE) { - /* directory stream was opened/rewound incorrectly or it ended normally */ - errno = EBADF; - return NULL; - } + if (dirp->search_handle == INVALID_HANDLE_VALUE) { + /* directory stream was opened/rewound incorrectly or it ended normally */ + errno = EBADF; + return NULL; + } #endif - if (dirp->dirent_filled != 0) { - /* - * Directory entry has already been retrieved and there is no need to - * retrieve a new one. Directory entry will be retrieved in advance - * when the user calls readdir function for the first time. This is so - * because real dirent has separate functions for opening and reading - * the stream whereas Win32 and DOS dirents open the stream - * automatically when we retrieve the first file. Therefore, we have to - * save the first file when opening the stream and later we have to - * return the saved entry when the user tries to read the first entry. - */ - dirp->dirent_filled = 0; - } else { - /* fill in entry and return that */ + if (dirp->dirent_filled != 0) { + /* + * Directory entry has already been retrieved and there is no need to + * retrieve a new one. Directory entry will be retrieved in advance + * when the user calls readdir function for the first time. This is so + * because real dirent has separate functions for opening and reading + * the stream whereas Win32 and DOS dirents open the stream + * automatically when we retrieve the first file. Therefore, we have to + * save the first file when opening the stream and later we have to + * return the saved entry when the user tries to read the first entry. + */ + dirp->dirent_filled = 0; + } else { + /* fill in entry and return that */ #if defined(DIRENT_WIN32_INTERFACE) - if (FindNextFile (dirp->search_handle, &dirp->current.data) == FALSE) { - /* Last file has been processed or an error occured */ - FindClose (dirp->search_handle); - dirp->search_handle = INVALID_HANDLE_VALUE; - errno = ENOENT; - return NULL; - } + if (FindNextFile (dirp->search_handle, &dirp->current.data) == FALSE) { + /* Last file has been processed or an error occured */ + FindClose (dirp->search_handle); + dirp->search_handle = INVALID_HANDLE_VALUE; + errno = ENOENT; + return NULL; + } # elif defined(DIRENT_MSDOS_INTERFACE) - if (_dos_findnext (&dirp->current.data) != 0) { - /* _dos_findnext and findnext will set errno to ENOENT when no - * more entries could be retrieved. */ - return NULL; - } + if (_dos_findnext (&dirp->current.data) != 0) { + /* _dos_findnext and findnext will set errno to ENOENT when no + * more entries could be retrieved. */ + return NULL; + } # endif - _setdirname (dirp); - assert (dirp->dirent_filled == 0); - } - return &dirp->current; + _setdirname (dirp); + assert (dirp->dirent_filled == 0); } + return &dirp->current; +} - /* - * - * close directory stream. - * int closedir (DIR *dirp); - * - * Close directory stream opened by the `opendir' function. Close of - * directory stream invalidates the DIR structure as well as previously read - * dirent entry. - * - * The function typically returns 0 on success and -1 on failure but - * the function may be declared to return void on same systems. At least - * Borland C/C++ and some UNIX implementations use void as a return type. - * The dirent wrapper tries to define VOID_CLOSEDIR whenever closedir is - * known to return nothing. The very same definition is made by the GNU - * autoconf if you happen to use it. - * - * The global `errno' variable will set to EBADF in case of error. - * - */ - static int - closedir (DIR *dirp) { - int retcode = 0; - - /* make sure that dirp points to legal structure */ - assert (dirp != NULL); - if (dirp == NULL) { - errno = EBADF; - return -1; - } +/* + * + * close directory stream. + * int closedir (DIR *dirp); + * + * Close directory stream opened by the `opendir' function. Close of + * directory stream invalidates the DIR structure as well as previously read + * dirent entry. + * + * The function typically returns 0 on success and -1 on failure but + * the function may be declared to return void on same systems. At least + * Borland C/C++ and some UNIX implementations use void as a return type. + * The dirent wrapper tries to define VOID_CLOSEDIR whenever closedir is + * known to return nothing. The very same definition is made by the GNU + * autoconf if you happen to use it. + * + * The global `errno' variable will set to EBADF in case of error. + * + */ +static int +closedir (DIR *dirp) { + int retcode = 0; + + /* make sure that dirp points to legal structure */ + assert (dirp != NULL); + if (dirp == NULL) { + errno = EBADF; + return -1; + } - /* free directory name and search handles */ - if (dirp->dirname != NULL) free (dirp->dirname); + /* free directory name and search handles */ + if (dirp->dirname != NULL) free (dirp->dirname); #if defined(DIRENT_WIN32_INTERFACE) - if (dirp->search_handle != INVALID_HANDLE_VALUE) { - if (FindClose (dirp->search_handle) == FALSE) { - /* Unknown error */ - retcode = -1; - errno = EBADF; - } + if (dirp->search_handle != INVALID_HANDLE_VALUE) { + if (FindClose (dirp->search_handle) == FALSE) { + /* Unknown error */ + retcode = -1; + errno = EBADF; } + } #endif - /* clear dirp structure to make sure that it cannot be used anymore*/ - memset (dirp, 0, sizeof (*dirp)); + /* clear dirp structure to make sure that it cannot be used anymore*/ + memset (dirp, 0, sizeof (*dirp)); # if defined(DIRENT_WIN32_INTERFACE) - dirp->search_handle = INVALID_HANDLE_VALUE; + dirp->search_handle = INVALID_HANDLE_VALUE; # endif - free (dirp); - return retcode; - } + free (dirp); + return retcode; +} - /* - * - * rewind directory stream to the beginning - * void rewinddir (DIR *dirp); - * - * Rewind directory stream to the beginning so that the next call of - * readdir() returns the very first directory entry again. However, note - * that next call of readdir() may not return the same directory entry as it - * did in first time. The directory stream may have been affected by newly - * created files. - * - * Almost every dirent implementation ensure that rewinddir will update - * the directory stream to reflect any changes made to the directory entries - * since the previous ``opendir'' or ``rewinddir'' call. Keep an eye on - * this if your program depends on the feature. I know at least one dirent - * implementation where you are required to close and re-open the stream to - * see the changes. - * - * Returns nothing. If something went wrong while rewinding, you will - * notice it later when you try to retrieve the first directory entry. - */ - static void - rewinddir (DIR *dirp) { - /* make sure that dirp is legal */ - assert (dirp != NULL); - if (dirp == NULL) { - errno = EBADF; - return; - } - assert (dirp->dirname != NULL); +/* + * + * rewind directory stream to the beginning + * void rewinddir (DIR *dirp); + * + * Rewind directory stream to the beginning so that the next call of + * readdir() returns the very first directory entry again. However, note + * that next call of readdir() may not return the same directory entry as it + * did in first time. The directory stream may have been affected by newly + * created files. + * + * Almost every dirent implementation ensure that rewinddir will update + * the directory stream to reflect any changes made to the directory entries + * since the previous ``opendir'' or ``rewinddir'' call. Keep an eye on + * this if your program depends on the feature. I know at least one dirent + * implementation where you are required to close and re-open the stream to + * see the changes. + * + * Returns nothing. If something went wrong while rewinding, you will + * notice it later when you try to retrieve the first directory entry. + */ +static void +rewinddir (DIR *dirp) { + /* make sure that dirp is legal */ + assert (dirp != NULL); + if (dirp == NULL) { + errno = EBADF; + return; + } + assert (dirp->dirname != NULL); - /* close previous stream */ + /* close previous stream */ #if defined(DIRENT_WIN32_INTERFACE) - if (dirp->search_handle != INVALID_HANDLE_VALUE) { - if (FindClose (dirp->search_handle) == FALSE) { - /* Unknown error */ - errno = EBADF; - } + if (dirp->search_handle != INVALID_HANDLE_VALUE) { + if (FindClose (dirp->search_handle) == FALSE) { + /* Unknown error */ + errno = EBADF; } + } #endif - /* re-open previous stream */ - if (_initdir (dirp) == 0) { - /* initialization failed but we cannot deal with error. User will notice - * error later when she tries to retrieve first directory enty. */ - /*EMPTY*/; - } + /* re-open previous stream */ + if (_initdir (dirp) == 0) { + /* initialization failed but we cannot deal with error. User will notice + * error later when she tries to retrieve first directory enty. */ + /*EMPTY*/; } +} - /* - * Open native directory stream object and retrieve first file. - * Be sure to close previous stream before opening new one. - */ - static int - _initdir (DIR *dirp) { - assert (dirp != NULL); - assert (dirp->dirname != NULL); - dirp->dirent_filled = 0; +/* + * Open native directory stream object and retrieve first file. + * Be sure to close previous stream before opening new one. + */ +static int +_initdir (DIR *dirp) { + assert (dirp != NULL); + assert (dirp->dirname != NULL); + dirp->dirent_filled = 0; # if defined(DIRENT_WIN32_INTERFACE) - /* Open stream and retrieve first file */ - dirp->search_handle = FindFirstFile (dirp->dirname, &dirp->current.data); - if (dirp->search_handle == INVALID_HANDLE_VALUE) { - /* something went wrong but we don't know what. GetLastError() could - * give us more information about the error, but then we should map - * the error code into errno. */ - errno = ENOENT; - return 0; - } + /* Open stream and retrieve first file */ + dirp->search_handle = FindFirstFile (dirp->dirname, &dirp->current.data); + if (dirp->search_handle == INVALID_HANDLE_VALUE) { + /* something went wrong but we don't know what. GetLastError() could + * give us more information about the error, but then we should map + * the error code into errno. */ + errno = ENOENT; + return 0; + } # elif defined(DIRENT_MSDOS_INTERFACE) - if (_dos_findfirst (dirp->dirname, - _A_SUBDIR | _A_RDONLY | _A_ARCH | _A_SYSTEM | _A_HIDDEN, - &dirp->current.data) != 0) { - /* _dos_findfirst and findfirst will set errno to ENOENT when no - * more entries could be retrieved. */ - return 0; - } + if (_dos_findfirst (dirp->dirname, + _A_SUBDIR | _A_RDONLY | _A_ARCH | _A_SYSTEM | _A_HIDDEN, + &dirp->current.data) != 0) { + /* _dos_findfirst and findfirst will set errno to ENOENT when no + * more entries could be retrieved. */ + return 0; + } # endif - /* initialize DIR and it's first entry */ - _setdirname (dirp); - dirp->dirent_filled = 1; - return 1; - } + /* initialize DIR and it's first entry */ + _setdirname (dirp); + dirp->dirent_filled = 1; + return 1; +} - /* - * Return implementation dependent name of the current directory entry. - */ - static const char * - _getdirname (const struct dirent *dp) { +/* + * Return implementation dependent name of the current directory entry. + */ +static const char * +_getdirname (const struct dirent *dp) { #if defined(DIRENT_WIN32_INTERFACE) - return dp->data.cFileName; + return dp->data.cFileName; #elif defined(DIRENT_USE_FFBLK) - return dp->data.ff_name; + return dp->data.ff_name; #else - return dp->data.name; + return dp->data.name; #endif - } - +} - /* - * Copy name of implementation dependent directory entry to the d_name field. - */ - static void - _setdirname (struct DIR *dirp) { - /* make sure that d_name is long enough */ - assert (strlen (_getdirname (&dirp->current)) <= NAME_MAX); - strncpy (dirp->current.d_name, - _getdirname (&dirp->current), - NAME_MAX); - dirp->current.d_name[NAME_MAX] = '\0'; /*char d_name[NAME_MAX+1]*/ - } +/* + * Copy name of implementation dependent directory entry to the d_name field. + */ +static void +_setdirname (struct DIR *dirp) { + /* make sure that d_name is long enough */ + assert (strlen (_getdirname (&dirp->current)) <= NAME_MAX); + + strncpy (dirp->current.d_name, + _getdirname (&dirp->current), + NAME_MAX); + dirp->current.d_name[NAME_MAX] = '\0'; /*char d_name[NAME_MAX+1]*/ +} # ifdef __cplusplus } diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp index 72252e4..b2fce62 100644 --- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp +++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp @@ -217,7 +217,7 @@ void JSCDataModel::setEvent(const Event& event) { ssRaw << event; privData->nativeObj->raw = ssRaw.str(); } - + if (event.dom) { JSStringRef propName = JSStringCreateWithUTF8CString("data"); JSObjectSetProperty(_ctx, eventObj, propName, getNodeAsValue(event.dom), 0, &exception); diff --git a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp index 76c4373..ad0c42b 100644 --- a/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp +++ b/src/uscxml/plugins/datamodel/prolog/swi/SWIDataModel.cpp @@ -143,7 +143,7 @@ boost::shared_ptr SWIDataModel::create(InterpreterImpl* interpret // assert(engine); // _swiEngines[dm.get()] = engine; -// _dmPtr = dm.get(); + _dmPtr = dm.get(); // int rc = PL_set_engine(engine, NULL); // assert(rc == PL_ENGINE_SET); diff --git a/src/uscxml/plugins/datamodel/promela/PromelaParser.h b/src/uscxml/plugins/datamodel/promela/PromelaParser.h index ca3f93e..5cf4483 100644 --- a/src/uscxml/plugins/datamodel/promela/PromelaParser.h +++ b/src/uscxml/plugins/datamodel/promela/PromelaParser.h @@ -51,9 +51,9 @@ struct PromelaParserNode { class PromelaParser { public: enum Type { - PROMELA_EXPR, - PROMELA_DECL, - PROMELA_STMNT + PROMELA_EXPR, + PROMELA_DECL, + PROMELA_STMNT }; static std::string typeToDesc(int type); diff --git a/src/uscxml/plugins/datamodel/promela/parser/promela.lex.yy.cpp b/src/uscxml/plugins/datamodel/promela/parser/promela.lex.yy.cpp index 0f931fa..5073be3 100644 --- a/src/uscxml/plugins/datamodel/promela/parser/promela.lex.yy.cpp +++ b/src/uscxml/plugins/datamodel/promela/parser/promela.lex.yy.cpp @@ -26,7 +26,7 @@ /* %endif */ /* %if-c-only */ - + /* %endif */ /* %if-c-only */ @@ -58,7 +58,7 @@ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. + * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 @@ -76,7 +76,7 @@ typedef uint64_t flex_uint64_t; typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; +typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ @@ -230,8 +230,8 @@ typedef size_t yy_size_t; #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - #define YY_LESS_LINENO(n) - +#define YY_LESS_LINENO(n) + /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ @@ -250,14 +250,13 @@ typedef size_t yy_size_t; #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { -/* %if-c-only */ +struct yy_buffer_state { + /* %if-c-only */ FILE *yy_input_file; -/* %endif */ + /* %endif */ -/* %if-c++-only */ -/* %endif */ + /* %if-c++-only */ + /* %endif */ char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ @@ -291,9 +290,9 @@ struct yy_buffer_state */ int yy_at_bol; - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -315,7 +314,7 @@ struct yy_buffer_state */ #define YY_BUFFER_EOF_PENDING 2 - }; +}; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* %if-c-only Standard (non-C++) definition */ @@ -438,160 +437,159 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); #define YY_END_OF_BUFFER 45 /* This struct is not used in this scanner, but its presence is necessary. */ -struct yy_trans_info - { +struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[102] = - { 0, - 0, 0, 45, 43, 42, 42, 6, 43, 12, 23, - 43, 31, 32, 10, 13, 29, 14, 28, 11, 39, - 30, 19, 37, 20, 40, 40, 33, 34, 24, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 35, 25, - 36, 7, 42, 21, 0, 38, 0, 26, 0, 41, - 0, 8, 9, 39, 15, 17, 22, 18, 16, 40, - 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 27, 0, 41, 0, 1, 40, 40, - 40, 2, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 3, 40, 40, 40, 4, 5, 40, 40, - - 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 1, 1, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 1, 18, 19, - 20, 21, 1, 1, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 24, 25, 26, 27, 22, 1, 28, 29, 22, 30, - - 31, 32, 33, 34, 35, 22, 36, 37, 38, 39, - 40, 41, 22, 42, 43, 44, 45, 22, 22, 22, - 46, 22, 47, 48, 49, 50, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[51] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 1, 1, 1 - } ; - -static yyconst flex_int16_t yy_base[106] = - { 0, - 0, 0, 141, 142, 49, 51, 120, 50, 142, 132, - 48, 142, 142, 142, 126, 142, 123, 142, 142, 119, - 142, 38, 115, 39, 0, 129, 142, 142, 142, 26, - 105, 93, 100, 86, 87, 28, 86, 88, 142, 78, - 142, 142, 65, 142, 58, 142, 122, 142, 57, 142, - 66, 142, 142, 107, 142, 142, 142, 142, 142, 0, - 65, 79, 82, 77, 83, 75, 79, 71, 81, 75, - 79, 68, 69, 142, 63, 68, 76, 0, 74, 79, - 66, 0, 67, 61, 57, 57, 66, 61, 64, 63, - 48, 45, 0, 54, 48, 46, 0, 0, 50, 48, - - 142, 101, 103, 75, 105 - } ; - -static yyconst flex_int16_t yy_def[106] = - { 0, - 101, 1, 101, 101, 101, 101, 101, 102, 101, 101, - 103, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 104, 104, 101, 101, 101, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 101, 101, - 101, 101, 101, 101, 102, 101, 102, 101, 103, 101, - 105, 101, 101, 101, 101, 101, 101, 101, 101, 104, - 102, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 101, 103, 103, 105, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - - 0, 101, 101, 101, 101 - } ; - -static yyconst flex_int16_t yy_nxt[193] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 4, 28, 29, 25, 30, 25, - 25, 31, 25, 25, 32, 25, 33, 34, 25, 25, - 35, 25, 36, 37, 38, 25, 39, 40, 41, 42, - 43, 43, 43, 43, 46, 50, 55, 56, 58, 59, - 62, 70, 46, 71, 50, 63, 43, 43, 49, 46, - 50, 64, 51, 76, 47, 50, 60, 78, 49, 97, - 100, 51, 47, 76, 99, 98, 96, 51, 78, 47, - 77, 95, 51, 78, 93, 94, 93, 93, 92, 91, - - 77, 45, 45, 49, 49, 75, 75, 90, 89, 78, - 78, 88, 87, 86, 85, 84, 83, 82, 78, 81, - 80, 79, 78, 54, 101, 74, 73, 72, 69, 68, - 67, 66, 65, 61, 57, 54, 53, 52, 48, 44, - 101, 3, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101 - - } ; - -static yyconst flex_int16_t yy_chk[193] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 5, 5, 6, 6, 8, 11, 22, 22, 24, 24, - 30, 36, 45, 36, 49, 30, 43, 43, 51, 61, - 75, 30, 11, 51, 8, 76, 104, 100, 77, 95, - 99, 49, 45, 77, 96, 95, 94, 75, 92, 61, - 51, 91, 76, 90, 89, 88, 87, 86, 85, 84, - - 77, 102, 102, 103, 103, 105, 105, 83, 81, 80, - 79, 73, 72, 71, 70, 69, 68, 67, 66, 65, - 64, 63, 62, 54, 47, 40, 38, 37, 35, 34, - 33, 32, 31, 26, 23, 20, 17, 15, 10, 7, - 3, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101 - - } ; - -static yyconst flex_int16_t yy_rule_linenum[44] = - { 0, - 27, 32, 33, 34, 35, 37, 38, 39, 40, 42, - 43, 44, 46, 47, 49, 50, 52, 53, 54, 55, - 57, 58, 60, 61, 62, 65, 66, 68, 69, 70, - 72, 73, 75, 76, 78, 79, 81, 83, 85, 86, - 88, 90, 92 - } ; +}; +static yyconst flex_int16_t yy_accept[102] = { + 0, + 0, 0, 45, 43, 42, 42, 6, 43, 12, 23, + 43, 31, 32, 10, 13, 29, 14, 28, 11, 39, + 30, 19, 37, 20, 40, 40, 33, 34, 24, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 35, 25, + 36, 7, 42, 21, 0, 38, 0, 26, 0, 41, + 0, 8, 9, 39, 15, 17, 22, 18, 16, 40, + 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 27, 0, 41, 0, 1, 40, 40, + 40, 2, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 3, 40, 40, 40, 4, 5, 40, 40, + + 0 +} ; + +static yyconst flex_int32_t yy_ec[256] = { + 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 1, 1, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 1, 18, 19, + 20, 21, 1, 1, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 24, 25, 26, 27, 22, 1, 28, 29, 22, 30, + + 31, 32, 33, 34, 35, 22, 36, 37, 38, 39, + 40, 41, 22, 42, 43, 44, 45, 22, 22, 22, + 46, 22, 47, 48, 49, 50, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 +} ; + +static yyconst flex_int32_t yy_meta[51] = { + 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 1, 1, 1 +} ; + +static yyconst flex_int16_t yy_base[106] = { + 0, + 0, 0, 141, 142, 49, 51, 120, 50, 142, 132, + 48, 142, 142, 142, 126, 142, 123, 142, 142, 119, + 142, 38, 115, 39, 0, 129, 142, 142, 142, 26, + 105, 93, 100, 86, 87, 28, 86, 88, 142, 78, + 142, 142, 65, 142, 58, 142, 122, 142, 57, 142, + 66, 142, 142, 107, 142, 142, 142, 142, 142, 0, + 65, 79, 82, 77, 83, 75, 79, 71, 81, 75, + 79, 68, 69, 142, 63, 68, 76, 0, 74, 79, + 66, 0, 67, 61, 57, 57, 66, 61, 64, 63, + 48, 45, 0, 54, 48, 46, 0, 0, 50, 48, + + 142, 101, 103, 75, 105 +} ; + +static yyconst flex_int16_t yy_def[106] = { + 0, + 101, 1, 101, 101, 101, 101, 101, 102, 101, 101, + 103, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 104, 104, 101, 101, 101, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 101, 101, + 101, 101, 101, 101, 102, 101, 102, 101, 103, 101, + 105, 101, 101, 101, 101, 101, 101, 101, 101, 104, + 102, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 101, 103, 103, 105, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + + 0, 101, 101, 101, 101 +} ; + +static yyconst flex_int16_t yy_nxt[193] = { + 0, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 4, 28, 29, 25, 30, 25, + 25, 31, 25, 25, 32, 25, 33, 34, 25, 25, + 35, 25, 36, 37, 38, 25, 39, 40, 41, 42, + 43, 43, 43, 43, 46, 50, 55, 56, 58, 59, + 62, 70, 46, 71, 50, 63, 43, 43, 49, 46, + 50, 64, 51, 76, 47, 50, 60, 78, 49, 97, + 100, 51, 47, 76, 99, 98, 96, 51, 78, 47, + 77, 95, 51, 78, 93, 94, 93, 93, 92, 91, + + 77, 45, 45, 49, 49, 75, 75, 90, 89, 78, + 78, 88, 87, 86, 85, 84, 83, 82, 78, 81, + 80, 79, 78, 54, 101, 74, 73, 72, 69, 68, + 67, 66, 65, 61, 57, 54, 53, 52, 48, 44, + 101, 3, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101 + +} ; + +static yyconst flex_int16_t yy_chk[193] = { + 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 6, 6, 8, 11, 22, 22, 24, 24, + 30, 36, 45, 36, 49, 30, 43, 43, 51, 61, + 75, 30, 11, 51, 8, 76, 104, 100, 77, 95, + 99, 49, 45, 77, 96, 95, 94, 75, 92, 61, + 51, 91, 76, 90, 89, 88, 87, 86, 85, 84, + + 77, 102, 102, 103, 103, 105, 105, 83, 81, 80, + 79, 73, 72, 71, 70, 69, 68, 67, 66, 65, + 64, 63, 62, 54, 47, 40, 38, 37, 35, 34, + 33, 32, 31, 26, 23, 20, 17, 15, 10, 7, + 3, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101 + +} ; + +static yyconst flex_int16_t yy_rule_linenum[44] = { + 0, + 27, 32, 33, 34, 35, 37, 38, 39, 40, 42, + 43, 44, 46, 47, 49, 50, 52, 53, 54, 55, + 57, 58, 60, 61, 62, 65, 66, 68, 69, 70, + 72, 73, 75, 76, 78, 79, 81, 83, 85, 86, + 88, 90, 92 +} ; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. @@ -605,7 +603,7 @@ static yyconst flex_int16_t yy_rule_linenum[44] = /* see: http://spinroot.com/spin/Man/operators.html */ #define YY_NO_UNISTD_H 1 #line 14 "promela.l" - + #include "../PromelaParser.h" #include "promela.tab.hpp" #define YYSTYPE PROMELA_STYPE @@ -634,40 +632,39 @@ static yyconst flex_int16_t yy_rule_linenum[44] = /* %if-reentrant */ /* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - yy_size_t yy_n_chars; - yy_size_t yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - YYSTYPE * yylval_r; - - }; /* end struct yyguts_t */ +struct yyguts_t { + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + + YYSTYPE * yylval_r; + +}; /* end struct yyguts_t */ /* %if-c-only */ @@ -677,10 +674,10 @@ static int yy_init_globals (yyscan_t yyscanner ); /* %if-reentrant */ - /* This must go here because YYSTYPE and YYLTYPE are included - * from bison output in section 1.*/ - # define yylval yyg->yylval_r - +/* This must go here because YYSTYPE and YYLTYPE are included + * from bison output in section 1.*/ +# define yylval yyg->yylval_r + int promela_lex_init (yyscan_t* scanner); int promela_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); @@ -740,8 +737,8 @@ extern int promela_wrap (yyscan_t yyscanner ); /* %not-for-header */ - static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner); - +static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner); + /* %ok-for-header */ /* %endif */ @@ -871,7 +868,7 @@ static int input (yyscan_t yyscanner ); /* %if-c-only Standard (non-C++) definition */ extern int promela_lex \ - (YYSTYPE * yylval_param ,yyscan_t yyscanner); +(YYSTYPE * yylval_param ,yyscan_t yyscanner); #define YY_DECL int promela_lex \ (YYSTYPE * yylval_param , yyscan_t yyscanner) @@ -900,23 +897,21 @@ extern int promela_lex \ /** The main scanner function which does all the work. */ -YY_DECL -{ +YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -/* %% [7.0] user's declarations go here */ + /* %% [7.0] user's declarations go here */ #line 25 "promela.l" #line 915 "promela.lex.yy.cpp" - yylval = yylval_param; + yylval = yylval_param; - if ( !yyg->yy_init ) - { + if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT @@ -927,31 +922,30 @@ YY_DECL yyg->yy_start = 1; /* first start state */ if ( ! yyin ) -/* %if-c-only */ + /* %if-c-only */ yyin = stdin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + /* %endif */ + /* %if-c++-only */ + /* %endif */ if ( ! yyout ) -/* %if-c-only */ + /* %if-c-only */ yyout = stdout; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + /* %endif */ + /* %if-c++-only */ + /* %endif */ if ( ! YY_CURRENT_BUFFER ) { promela_ensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = - promela__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + promela__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } promela__load_buffer_state(yyscanner ); - } + } - while ( 1 ) /* loops until end-of-file is reached */ - { -/* %% [8.0] yymore()-related code goes here */ + while ( 1 ) { /* loops until end-of-file is reached */ + /* %% [8.0] yymore()-related code goes here */ yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ @@ -962,43 +956,38 @@ YY_DECL */ yy_bp = yy_cp; -/* %% [9.0] code to set up and find next match goes here */ + /* %% [9.0] code to set up and find next match goes here */ yy_current_state = yyg->yy_start; yy_match: - do - { + do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { + if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 102 ) yy_c = yy_meta[(unsigned int) yy_c]; - } + } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; - } - while ( yy_current_state != 101 ); + } while ( yy_current_state != 101 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; yy_find_action: -/* %% [10.0] code to find the action number goes here */ + /* %% [10.0] code to find the action number goes here */ yy_act = yy_accept[yy_current_state]; YY_DO_BEFORE_ACTION; -/* %% [11.0] code for yylineno update goes here */ + /* %% [11.0] code for yylineno update goes here */ do_action: /* This label is used only to access EOF actions. */ -/* %% [12.0] debug code goes here */ - if ( yy_flex_debug ) - { + /* %% [12.0] debug code goes here */ + if ( yy_flex_debug ) { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); else if ( yy_act < 44 ) @@ -1011,377 +1000,369 @@ do_action: /* This label is used only to access EOF actions. */ fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); - } + } - switch ( yy_act ) - { /* beginning of action switch */ -/* %% [13.0] actions go here */ - case 0: /* must back up */ + switch ( yy_act ) { + /* beginning of action switch */ + /* %% [13.0] actions go here */ + case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = yyg->yy_hold_char; yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; goto yy_find_action; -case 1: -YY_RULE_SETUP + case 1: + YY_RULE_SETUP #line 27 "promela.l" -{ - yylval->value = strdup(yytext); - return PML_TYPE; -} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 32 "promela.l" -{ return PML_LEN; } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 33 "promela.l" -{ yylval->value = strdup(yytext); return PML_CONST; } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 34 "promela.l" -{ return PML_PRINT; } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 35 "promela.l" -{ return PML_PRINTM; } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 37 "promela.l" -{ return PML_NEG; } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 38 "promela.l" -{ return PML_COMPL; } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 39 "promela.l" -{ return PML_INCR; } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 40 "promela.l" -{ return PML_DECR; } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 42 "promela.l" -{ return PML_TIMES; } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 43 "promela.l" -{ return PML_DIVIDE; } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 44 "promela.l" -{ return PML_MODULO; } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 46 "promela.l" -{ return PML_PLUS; } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 47 "promela.l" -{ return PML_MINUS; } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 49 "promela.l" -{ return PML_LSHIFT; } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 50 "promela.l" -{ return PML_RSHIFT; } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 52 "promela.l" -{ return PML_LE; } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 53 "promela.l" -{ return PML_GE; } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 54 "promela.l" -{ return PML_LT; } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 55 "promela.l" -{ return PML_GT; } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 57 "promela.l" -{ return PML_NE; } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 58 "promela.l" -{ return PML_EQ; } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 60 "promela.l" -{ return PML_BITAND; } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 61 "promela.l" -{ return PML_BITXOR; } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 62 "promela.l" -{ return PML_BITOR; } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 65 "promela.l" -{ return PML_AND; } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 66 "promela.l" -{ return PML_OR; } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 68 "promela.l" -{ return PML_DOT; } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 69 "promela.l" -{ return PML_COMMA; } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 70 "promela.l" -{ return PML_SEMI; } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 72 "promela.l" -{ return '('; } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 73 "promela.l" -{ return ')'; } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 75 "promela.l" -{ return '['; } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 76 "promela.l" -{ return ']'; } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 78 "promela.l" -{ return '{'; } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 79 "promela.l" -{ return '}'; } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 81 "promela.l" -{ return PML_ASGN; } - YY_BREAK -case 38: -/* rule 38 can match eol */ -YY_RULE_SETUP -#line 83 "promela.l" -{ yylval->value = strdup(yytext); return(PML_STRING); } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 85 "promela.l" -{ yylval->value = strdup(yytext); return PML_CONST; } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 86 "promela.l" -{ yylval->value = strdup(yytext); return PML_NAME; } - YY_BREAK -case 41: -/* rule 41 can match eol */ -YY_RULE_SETUP -#line 88 "promela.l" -{ } - YY_BREAK -case 42: -/* rule 42 can match eol */ -YY_RULE_SETUP + { + yylval->value = strdup(yytext); + return PML_TYPE; + } + YY_BREAK + case 2: + YY_RULE_SETUP +#line 32 "promela.l" + { return PML_LEN; } + YY_BREAK + case 3: + YY_RULE_SETUP +#line 33 "promela.l" + { yylval->value = strdup(yytext); return PML_CONST; } + YY_BREAK + case 4: + YY_RULE_SETUP +#line 34 "promela.l" + { return PML_PRINT; } + YY_BREAK + case 5: + YY_RULE_SETUP +#line 35 "promela.l" + { return PML_PRINTM; } + YY_BREAK + case 6: + YY_RULE_SETUP +#line 37 "promela.l" + { return PML_NEG; } + YY_BREAK + case 7: + YY_RULE_SETUP +#line 38 "promela.l" + { return PML_COMPL; } + YY_BREAK + case 8: + YY_RULE_SETUP +#line 39 "promela.l" + { return PML_INCR; } + YY_BREAK + case 9: + YY_RULE_SETUP +#line 40 "promela.l" + { return PML_DECR; } + YY_BREAK + case 10: + YY_RULE_SETUP +#line 42 "promela.l" + { return PML_TIMES; } + YY_BREAK + case 11: + YY_RULE_SETUP +#line 43 "promela.l" + { return PML_DIVIDE; } + YY_BREAK + case 12: + YY_RULE_SETUP +#line 44 "promela.l" + { return PML_MODULO; } + YY_BREAK + case 13: + YY_RULE_SETUP +#line 46 "promela.l" + { return PML_PLUS; } + YY_BREAK + case 14: + YY_RULE_SETUP +#line 47 "promela.l" + { return PML_MINUS; } + YY_BREAK + case 15: + YY_RULE_SETUP +#line 49 "promela.l" + { return PML_LSHIFT; } + YY_BREAK + case 16: + YY_RULE_SETUP +#line 50 "promela.l" + { return PML_RSHIFT; } + YY_BREAK + case 17: + YY_RULE_SETUP +#line 52 "promela.l" + { return PML_LE; } + YY_BREAK + case 18: + YY_RULE_SETUP +#line 53 "promela.l" + { return PML_GE; } + YY_BREAK + case 19: + YY_RULE_SETUP +#line 54 "promela.l" + { return PML_LT; } + YY_BREAK + case 20: + YY_RULE_SETUP +#line 55 "promela.l" + { return PML_GT; } + YY_BREAK + case 21: + YY_RULE_SETUP +#line 57 "promela.l" + { return PML_NE; } + YY_BREAK + case 22: + YY_RULE_SETUP +#line 58 "promela.l" + { return PML_EQ; } + YY_BREAK + case 23: + YY_RULE_SETUP +#line 60 "promela.l" + { return PML_BITAND; } + YY_BREAK + case 24: + YY_RULE_SETUP +#line 61 "promela.l" + { return PML_BITXOR; } + YY_BREAK + case 25: + YY_RULE_SETUP +#line 62 "promela.l" + { return PML_BITOR; } + YY_BREAK + case 26: + YY_RULE_SETUP +#line 65 "promela.l" + { return PML_AND; } + YY_BREAK + case 27: + YY_RULE_SETUP +#line 66 "promela.l" + { return PML_OR; } + YY_BREAK + case 28: + YY_RULE_SETUP +#line 68 "promela.l" + { return PML_DOT; } + YY_BREAK + case 29: + YY_RULE_SETUP +#line 69 "promela.l" + { return PML_COMMA; } + YY_BREAK + case 30: + YY_RULE_SETUP +#line 70 "promela.l" + { return PML_SEMI; } + YY_BREAK + case 31: + YY_RULE_SETUP +#line 72 "promela.l" + { return '('; } + YY_BREAK + case 32: + YY_RULE_SETUP +#line 73 "promela.l" + { return ')'; } + YY_BREAK + case 33: + YY_RULE_SETUP +#line 75 "promela.l" + { return '['; } + YY_BREAK + case 34: + YY_RULE_SETUP +#line 76 "promela.l" + { return ']'; } + YY_BREAK + case 35: + YY_RULE_SETUP +#line 78 "promela.l" + { return '{'; } + YY_BREAK + case 36: + YY_RULE_SETUP +#line 79 "promela.l" + { return '}'; } + YY_BREAK + case 37: + YY_RULE_SETUP +#line 81 "promela.l" + { return PML_ASGN; } + YY_BREAK + case 38: + /* rule 38 can match eol */ + YY_RULE_SETUP +#line 83 "promela.l" + { yylval->value = strdup(yytext); return(PML_STRING); } + YY_BREAK + case 39: + YY_RULE_SETUP +#line 85 "promela.l" + { yylval->value = strdup(yytext); return PML_CONST; } + YY_BREAK + case 40: + YY_RULE_SETUP +#line 86 "promela.l" + { yylval->value = strdup(yytext); return PML_NAME; } + YY_BREAK + case 41: + /* rule 41 can match eol */ + YY_RULE_SETUP +#line 88 "promela.l" + { } + YY_BREAK + case 42: + /* rule 42 can match eol */ + YY_RULE_SETUP #line 90 "promela.l" -/* eat up whitespace */ - YY_BREAK -case 43: -YY_RULE_SETUP -#line 92 "promela.l" -{ /*printf( "Unrecognized character: %s\n", yytext ); */ } - YY_BREAK -case 44: -YY_RULE_SETUP + /* eat up whitespace */ + YY_BREAK + case 43: + YY_RULE_SETUP +#line 92 "promela.l" + { /*printf( "Unrecognized character: %s\n", yytext ); */ } + YY_BREAK + case 44: + YY_RULE_SETUP #line 93 "promela.l" -ECHO; - YY_BREAK + ECHO; + YY_BREAK #line 1253 "promela.lex.yy.cpp" -case YY_STATE_EOF(INITIAL): - yyterminate(); + case YY_STATE_EOF(INITIAL): + yyterminate(); - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; + case YY_END_OF_BUFFER: { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * promela_lex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * promela_lex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { + /* This was really a NUL. */ + yy_state_type yy_next_state; - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state( yyscanner ); + yy_current_state = yy_get_previous_state( yyscanner ); - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); + yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; + if ( yy_next_state ) { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; } - else - { -/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */ - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; + else { + /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */ + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; } } - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( promela_wrap(yyscanner ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; + else switch ( yy_get_next_buffer( yyscanner ) ) { + case EOB_ACT_END_OF_FILE: { + yyg->yy_did_buffer_switch_on_eof = 0; + + if ( promela_wrap(yyscanner ) ) { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; } - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; + else { + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; } - break; + break; } - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state( yyscanner ); + yy_current_state = yy_get_previous_state( yyscanner ); - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - yy_current_state = yy_get_previous_state( yyscanner ); + yy_current_state = yy_get_previous_state( yyscanner ); - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; } - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ } /* end of promela_lex */ /* %ok-for-header */ @@ -1405,7 +1386,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = yyg->yytext_ptr; register int number_to_move, i; @@ -1413,26 +1394,24 @@ static int yy_get_next_buffer (yyscan_t yyscanner) if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); + "fatal flex scanner internal error--end of buffer missed" ); - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { + /* Don't try to fill the buffer, so this is an EOF. */ + if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; - } + } - else - { + else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; - } } + } /* Try to read more data. */ @@ -1448,22 +1427,20 @@ static int yy_get_next_buffer (yyscan_t yyscanner) */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - else - { - yy_size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + else { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ + while ( num_to_read <= 0 ) { + /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - if ( b->yy_is_our_buffer ) - { + if ( b->yy_is_our_buffer ) { yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) @@ -1472,49 +1449,45 @@ static int yy_get_next_buffer (yyscan_t yyscanner) b->yy_buf_size *= 2; b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - promela_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); - } - else + /* Include room in for 2 EOB chars. */ + promela_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); + } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); + "fatal error - scanner input buffer overflow" ); yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; + number_to_move - 1; - } + } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, num_to_read ); + yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } + } - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { + if ( yyg->yy_n_chars == 0 ) { + if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; promela_restart(yyin ,yyscanner); - } + } - else - { + else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } + YY_BUFFER_EOF_PENDING; } + } else ret_val = EOB_ACT_CONTINUE_SCAN; @@ -1541,35 +1514,32 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* %if-c-only */ /* %not-for-header */ - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) +static yy_state_type yy_get_previous_state (yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { register yy_state_type yy_current_state; register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -/* %% [15.0] code to get the start state into yy_current_state goes here */ + /* %% [15.0] code to get the start state into yy_current_state goes here */ yy_current_state = yyg->yy_start; - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { -/* %% [16.0] code to find the next state goes here */ + for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { + /* %% [16.0] code to find the next state goes here */ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { + if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 102 ) yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } return yy_current_state; } @@ -1580,28 +1550,26 @@ static int yy_get_next_buffer (yyscan_t yyscanner) * next_state = yy_try_NUL_trans( current_state ); */ /* %if-c-only */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) +static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { register int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ -/* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ + /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ register char *yy_cp = yyg->yy_c_buf_p; register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { + if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 102 ) yy_c = yy_meta[(unsigned int) yy_c]; - } + } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 101); @@ -1610,27 +1578,27 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* %if-c-only */ - static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner) +static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_cp = yyg->yy_c_buf_p; + yy_cp = yyg->yy_c_buf_p; /* undo effects of setting up yytext */ *yy_cp = yyg->yy_hold_char; - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { + /* need to shift things up to make room */ /* +2 for EOB chars. */ register yy_size_t number_to_move = yyg->yy_n_chars + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; @@ -1638,15 +1606,15 @@ static int yy_get_next_buffer (yyscan_t yyscanner) yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } + } *--yy_cp = (char) c; -/* %% [18.0] update yylineno here */ + /* %% [18.0] update yylineno here */ yyg->yytext_ptr = yy_bp; yyg->yy_hold_char = *yy_cp; @@ -1659,9 +1627,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* %if-c-only */ #ifndef YY_NO_INPUT #ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) +static int yyinput (yyscan_t yyscanner) #else - static int input (yyscan_t yyscanner) +static int input (yyscan_t yyscanner) #endif /* %endif */ @@ -1669,12 +1637,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* %endif */ { int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { + if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. @@ -1683,55 +1650,53 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; - else - { /* need more input */ + else { + /* need more input */ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - promela_restart(yyin ,yyscanner); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( promela_wrap(yyscanner ) ) - return 0; - - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; + switch ( yy_get_next_buffer( yyscanner ) ) { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + promela_restart(yyin ,yyscanner); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: { + if ( promela_wrap(yyscanner ) ) + return 0; + + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; #ifdef __cplusplus - return yyinput(yyscanner); + return yyinput(yyscanner); #else - return input(yyscanner); + return input(yyscanner); #endif - } + } - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; } } + } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; -/* %% [19.0] update BOL and yylineno */ + /* %% [19.0] update BOL and yylineno */ return c; } @@ -1745,17 +1710,17 @@ static int yy_get_next_buffer (yyscan_t yyscanner) * @note This function does not reset the start condition to @c INITIAL . */ /* %if-c-only */ - void promela_restart (FILE * input_file , yyscan_t yyscanner) +void promela_restart (FILE * input_file , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! YY_CURRENT_BUFFER ){ - promela_ensure_buffer_stack (yyscanner); + if ( ! YY_CURRENT_BUFFER ) { + promela_ensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = - promela__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + promela__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } promela__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); @@ -1767,29 +1732,28 @@ static int yy_get_next_buffer (yyscan_t yyscanner) * @param yyscanner The scanner object. */ /* %if-c-only */ - void promela__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +void promela__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * promela_pop_buffer_state(); * promela_push_buffer_state(new_buffer); - */ + */ promela_ensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; - if ( YY_CURRENT_BUFFER ) - { + if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } + } YY_CURRENT_BUFFER_LVALUE = new_buffer; promela__load_buffer_state(yyscanner ); @@ -1808,7 +1772,7 @@ static void promela__load_buffer_state (yyscan_t yyscanner) /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; @@ -1822,13 +1786,13 @@ static void promela__load_buffer_state (yyscan_t yyscanner) * @return the allocated buffer state. */ /* %if-c-only */ - YY_BUFFER_STATE promela__create_buffer (FILE * file, int size , yyscan_t yyscanner) +YY_BUFFER_STATE promela__create_buffer (FILE * file, int size , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { YY_BUFFER_STATE b; - + b = (YY_BUFFER_STATE) promela_alloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in promela__create_buffer()" ); @@ -1854,12 +1818,12 @@ static void promela__load_buffer_state (yyscan_t yyscanner) * @param yyscanner The scanner object. */ /* %if-c-only */ - void promela__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +void promela__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; @@ -1885,36 +1849,36 @@ static void promela__load_buffer_state (yyscan_t yyscanner) * such as during a promela_restart() or at EOF. */ /* %if-c-only */ - static void promela__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) +static void promela__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; promela__flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; - /* If b is the current buffer, then promela__init_buffer was _probably_ - * called from promela_restart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } + /* If b is the current buffer, then promela__init_buffer was _probably_ + * called from promela_restart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER) { + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } -/* %if-c-only */ + /* %if-c-only */ - b->yy_is_interactive = 0; - -/* %endif */ -/* %if-c++-only */ -/* %endif */ + b->yy_is_interactive = 0; + + /* %endif */ + /* %if-c++-only */ + /* %endif */ errno = oerrno; } @@ -1923,12 +1887,12 @@ static void promela__load_buffer_state (yyscan_t yyscanner) * @param yyscanner The scanner object. */ /* %if-c-only */ - void promela__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +void promela__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) /* %endif */ /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; @@ -1963,20 +1927,19 @@ void promela_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; promela_ensure_buffer_stack(yyscanner); /* This block is copied from promela__switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { + if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } + } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) @@ -2000,7 +1963,7 @@ void promela_pop_buffer_state (yyscan_t yyscanner) /* %if-c++-only */ /* %endif */ { - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; @@ -2027,38 +1990,38 @@ static void promela_ensure_buffer_stack (yyscan_t yyscanner) /* %endif */ { yy_size_t num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. - */ + */ num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)promela_alloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); + (num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in promela_ensure_buffer_stack()" ); - + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) { /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)promela_realloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); + (yyg->yy_buffer_stack, + num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in promela_ensure_buffer_stack()" ); @@ -2074,15 +2037,14 @@ static void promela_ensure_buffer_stack (yyscan_t yyscanner) * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE promela__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ +YY_BUFFER_STATE promela__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; - + if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; @@ -2115,9 +2077,8 @@ YY_BUFFER_STATE promela__scan_buffer (char * base, yy_size_t size , yyscan_t y * @note If you want to scan bytes that may contain NUL values, then use * promela__scan_bytes() instead. */ -YY_BUFFER_STATE promela__scan_string (yyconst char * yystr , yyscan_t yyscanner) -{ - +YY_BUFFER_STATE promela__scan_string (yyconst char * yystr , yyscan_t yyscanner) { + return promela__scan_bytes(yystr,strlen(yystr) ,yyscanner); } /* %endif */ @@ -2130,12 +2091,11 @@ YY_BUFFER_STATE promela__scan_string (yyconst char * yystr , yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE promela__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) -{ +YY_BUFFER_STATE promela__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n, i; - + /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) promela_alloc(n ,yyscanner ); @@ -2165,9 +2125,8 @@ YY_BUFFER_STATE promela__scan_bytes (yyconst char * yybytes, yy_size_t _yybyte #endif /* %if-c-only */ -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) -{ - (void) fprintf( stderr, "%s\n", msg ); +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* %endif */ @@ -2199,10 +2158,9 @@ static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ -YY_EXTRA_TYPE promela_get_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; +YY_EXTRA_TYPE promela_get_extra (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyextra; } /* %endif */ @@ -2210,64 +2168,58 @@ YY_EXTRA_TYPE promela_get_extra (yyscan_t yyscanner) /** Get the current line number. * @param yyscanner The scanner object. */ -int promela_get_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; +int promela_get_lineno (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ -int promela_get_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; +int promela_get_column (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ -FILE *promela_get_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; +FILE *promela_get_in (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ -FILE *promela_get_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; +FILE *promela_get_out (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ -yy_size_t promela_get_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; +yy_size_t promela_get_leng (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ -char *promela_get_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; +char *promela_get_text (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yytext; } /* %if-reentrant */ @@ -2276,10 +2228,9 @@ char *promela_get_text (yyscan_t yyscanner) * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ -void promela_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; +void promela_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyextra = user_defined ; } /* %endif */ @@ -2288,30 +2239,28 @@ void promela_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) * @param line_number * @param yyscanner The scanner object. */ -void promela_set_lineno (int line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +void promela_set_lineno (int line_number , yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "promela_set_lineno called with no buffer" , yyscanner); - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "promela_set_lineno called with no buffer" , yyscanner); - - yylineno = line_number; + yylineno = line_number; } /** Set the current column. * @param line_number * @param yyscanner The scanner object. */ -void promela_set_column (int column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +void promela_set_column (int column_no , yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "promela_set_column called with no buffer" , yyscanner); - - yycolumn = column_no; + /* column is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "promela_set_column called with no buffer" , yyscanner); + + yycolumn = column_no; } /** Set the input stream. This does not discard the current @@ -2320,28 +2269,24 @@ void promela_set_column (int column_no , yyscan_t yyscanner) * @param yyscanner The scanner object. * @see promela__switch_to_buffer */ -void promela_set_in (FILE * in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; +void promela_set_in (FILE * in_str , yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyin = in_str ; } -void promela_set_out (FILE * out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; +void promela_set_out (FILE * out_str , yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyout = out_str ; } -int promela_get_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; +int promela_get_debug (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yy_flex_debug; } -void promela_set_debug (int bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; +void promela_set_debug (int bdebug , yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yy_flex_debug = bdebug ; } /* %endif */ @@ -2351,16 +2296,14 @@ void promela_set_debug (int bdebug , yyscan_t yyscanner) /* %if-bison-bridge */ -YYSTYPE * promela_get_lval (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yylval; +YYSTYPE * promela_get_lval (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylval; } -void promela_set_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yylval = yylval_param; +void promela_set_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylval = yylval_param; } /* %endif */ @@ -2375,22 +2318,22 @@ void promela_set_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) int promela_lex_init(yyscan_t* ptr_yy_globals) { - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } + if (ptr_yy_globals == NULL) { + errno = EINVAL; + return 1; + } - *ptr_yy_globals = (yyscan_t) promela_alloc ( sizeof( struct yyguts_t ), NULL ); + *ptr_yy_globals = (yyscan_t) promela_alloc ( sizeof( struct yyguts_t ), NULL ); - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } + if (*ptr_yy_globals == NULL) { + errno = ENOMEM; + return 1; + } - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - return yy_init_globals ( *ptr_yy_globals ); + return yy_init_globals ( *ptr_yy_globals ); } /* promela_lex_init_extra has the same functionality as promela_lex_init, but follows the @@ -2404,76 +2347,74 @@ int promela_lex_init(yyscan_t* ptr_yy_globals) int promela_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { - struct yyguts_t dummy_yyguts; - - promela_set_extra (yy_user_defined, &dummy_yyguts); - - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) promela_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in - yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - promela_set_extra (yy_user_defined, *ptr_yy_globals); - - return yy_init_globals ( *ptr_yy_globals ); + struct yyguts_t dummy_yyguts; + + promela_set_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL) { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) promela_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); + + if (*ptr_yy_globals == NULL) { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + promela_set_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals ( *ptr_yy_globals ); } /* %endif if-c-only */ /* %if-c-only */ -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from promela_lex_destroy(), so don't allocate here. - */ - - yyg->yy_buffer_stack = 0; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; - yyg->yy_init = 0; - yyg->yy_start = 0; - - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; - -/* Defined in main.c */ +static int yy_init_globals (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from promela_lex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + + /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + yyin = stdin; + yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = (FILE *) 0; + yyout = (FILE *) 0; #endif - /* For future reference: Set errno on error, since we are called by - * promela_lex_init() - */ - return 0; + /* For future reference: Set errno on error, since we are called by + * promela_lex_init() + */ + return 0; } /* %endif */ /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ /* promela_lex_destroy is for both reentrant and non-reentrant scanners. */ -int promela_lex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +int promela_lex_destroy (yyscan_t yyscanner) { + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER) { promela__delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; promela_pop_buffer_state(yyscanner); @@ -2483,20 +2424,20 @@ int promela_lex_destroy (yyscan_t yyscanner) promela_free(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; - /* Destroy the start condition stack. */ - promela_free(yyg->yy_start_stack ,yyscanner ); - yyg->yy_start_stack = NULL; + /* Destroy the start condition stack. */ + promela_free(yyg->yy_start_stack ,yyscanner ); + yyg->yy_start_stack = NULL; - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * promela_lex() is called, initialization will occur. */ - yy_init_globals( yyscanner); + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * promela_lex() is called, initialization will occur. */ + yy_init_globals( yyscanner); -/* %if-reentrant */ - /* Destroy the main struct (reentrant only). */ - promela_free ( yyscanner , yyscanner ); - yyscanner = NULL; -/* %endif */ - return 0; + /* %if-reentrant */ + /* Destroy the main struct (reentrant only). */ + promela_free ( yyscanner , yyscanner ); + yyscanner = NULL; + /* %endif */ + return 0; } /* %endif */ @@ -2505,8 +2446,7 @@ int promela_lex_destroy (yyscan_t yyscanner) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) -{ +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; @@ -2514,8 +2454,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yysca #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) -{ +static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { register int n; for ( n = 0; s[n]; ++n ) ; @@ -2524,13 +2463,11 @@ static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) } #endif -void *promela_alloc (yy_size_t size , yyscan_t yyscanner) -{ +void *promela_alloc (yy_size_t size , yyscan_t yyscanner) { return (void *) malloc( size ); } -void *promela_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ +void *promela_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -2541,8 +2478,7 @@ void *promela_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner) return (void *) realloc( (char *) ptr, size ); } -void promela_free (void * ptr , yyscan_t yyscanner) -{ +void promela_free (void * ptr , yyscan_t yyscanner) { free( (char *) ptr ); /* see promela_realloc() for (char *) cast */ } diff --git a/src/uscxml/plugins/datamodel/promela/parser/promela.tab.cpp b/src/uscxml/plugins/datamodel/promela/parser/promela.tab.cpp index 27fdf6c..ad4581f 100644 --- a/src/uscxml/plugins/datamodel/promela/parser/promela.tab.cpp +++ b/src/uscxml/plugins/datamodel/promela/parser/promela.tab.cpp @@ -1,19 +1,19 @@ /* A Bison parser, made by GNU Bison 2.7.12-4996. */ /* Bison implementation for Yacc-like parsers in C - + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -128,96 +128,95 @@ extern int promela_debug; /* Tokens. */ #ifndef PROMELA_TOKENTYPE # define PROMELA_TOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum promela_tokentype { - PML_VAR_ARRAY = 258, - PML_VARLIST = 259, - PML_DECL = 260, - PML_DECLLIST = 261, - PML_STMNT = 262, - PML_COLON = 263, - PML_EXPR = 264, - PML_NAMELIST = 265, - PML_ASSERT = 266, - PML_PRINT = 267, - PML_PRINTM = 268, - PML_LEN = 269, - PML_STRING = 270, - PML_TYPEDEF = 271, - PML_MTYPE = 272, - PML_INLINE = 273, - PML_RETURN = 274, - PML_LABEL = 275, - PML_OF = 276, - PML_GOTO = 277, - PML_BREAK = 278, - PML_ELSE = 279, - PML_SEMI = 280, - PML_ARROW = 281, - PML_IF = 282, - PML_FI = 283, - PML_DO = 284, - PML_OD = 285, - PML_FOR = 286, - PML_SELECT = 287, - PML_IN = 288, - PML_SEP = 289, - PML_DOTDOT = 290, - PML_HIDDEN = 291, - PML_SHOW = 292, - PML_ISLOCAL = 293, - PML_CONST = 294, - PML_TYPE = 295, - PML_XU = 296, - PML_NAME = 297, - PML_UNAME = 298, - PML_PNAME = 299, - PML_INAME = 300, - PML_CLAIM = 301, - PML_TRACE = 302, - PML_INIT = 303, - PML_LTL = 304, - PML_COMMA = 305, - PML_ASGN = 306, - PML_AND = 307, - PML_OR = 308, - PML_BITAND = 309, - PML_BITXOR = 310, - PML_BITOR = 311, - PML_NE = 312, - PML_EQ = 313, - PML_LE = 314, - PML_GE = 315, - PML_LT = 316, - PML_GT = 317, - PML_RSHIFT = 318, - PML_LSHIFT = 319, - PML_MINUS = 320, - PML_PLUS = 321, - PML_MODULO = 322, - PML_DIVIDE = 323, - PML_TIMES = 324, - PML_DECR = 325, - PML_INCR = 326, - PML_COMPL = 327, - PML_NEG = 328, - PML_DOT = 329 - }; +/* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ +enum promela_tokentype { + PML_VAR_ARRAY = 258, + PML_VARLIST = 259, + PML_DECL = 260, + PML_DECLLIST = 261, + PML_STMNT = 262, + PML_COLON = 263, + PML_EXPR = 264, + PML_NAMELIST = 265, + PML_ASSERT = 266, + PML_PRINT = 267, + PML_PRINTM = 268, + PML_LEN = 269, + PML_STRING = 270, + PML_TYPEDEF = 271, + PML_MTYPE = 272, + PML_INLINE = 273, + PML_RETURN = 274, + PML_LABEL = 275, + PML_OF = 276, + PML_GOTO = 277, + PML_BREAK = 278, + PML_ELSE = 279, + PML_SEMI = 280, + PML_ARROW = 281, + PML_IF = 282, + PML_FI = 283, + PML_DO = 284, + PML_OD = 285, + PML_FOR = 286, + PML_SELECT = 287, + PML_IN = 288, + PML_SEP = 289, + PML_DOTDOT = 290, + PML_HIDDEN = 291, + PML_SHOW = 292, + PML_ISLOCAL = 293, + PML_CONST = 294, + PML_TYPE = 295, + PML_XU = 296, + PML_NAME = 297, + PML_UNAME = 298, + PML_PNAME = 299, + PML_INAME = 300, + PML_CLAIM = 301, + PML_TRACE = 302, + PML_INIT = 303, + PML_LTL = 304, + PML_COMMA = 305, + PML_ASGN = 306, + PML_AND = 307, + PML_OR = 308, + PML_BITAND = 309, + PML_BITXOR = 310, + PML_BITOR = 311, + PML_NE = 312, + PML_EQ = 313, + PML_LE = 314, + PML_GE = 315, + PML_LT = 316, + PML_GT = 317, + PML_RSHIFT = 318, + PML_LSHIFT = 319, + PML_MINUS = 320, + PML_PLUS = 321, + PML_MODULO = 322, + PML_DIVIDE = 323, + PML_TIMES = 324, + PML_DECR = 325, + PML_INCR = 326, + PML_COMPL = 327, + PML_NEG = 328, + PML_DOT = 329 +}; #endif #if ! defined PROMELA_STYPE && ! defined PROMELA_STYPE_IS_DECLARED -typedef union PROMELA_STYPE -{ -/* Line 387 of yacc.c */ +typedef union PROMELA_STYPE { + /* Line 387 of yacc.c */ #line 38 "promela.ypp" - uscxml::PromelaParserNode* node; + uscxml::PromelaParserNode* node; char* value; -/* Line 387 of yacc.c */ + /* Line 387 of yacc.c */ #line 222 "promela.tab.cpp" } PROMELA_STYPE; # define PROMELA_STYPE_IS_TRIVIAL 1 @@ -333,10 +332,10 @@ YYID (int yyi) #else static int YYID (yyi) - int yyi; +int yyi; #endif { - return yyi; + return yyi; } #endif @@ -360,7 +359,7 @@ YYID (yyi) # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +/* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif @@ -370,13 +369,13 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ +/* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ +/* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else @@ -416,10 +415,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ || (defined PROMELA_STYPE_IS_TRIVIAL && PROMELA_STYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; +union yyalloc { + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ @@ -493,275 +491,262 @@ union yyalloc ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 11, 12, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 13, 2, 14, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 15, 2, 16, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80 +static const yytype_uint8 yytranslate[] = { + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 11, 12, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 13, 2, 14, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 15, 2, 16, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80 }; #if PROMELA_DEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 5, 7, 9, 11, 13, 18, 19, - 23, 24, 27, 31, 35, 39, 43, 47, 51, 55, - 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, - 99, 103, 106, 109, 114, 116, 118, 119, 121, 123, - 125, 129, 133, 140, 142, 145, 149, 151, 155, 157, - 161, 163, 167, 172, 174, 177, 181, 185, 189, 193, - 197, 201, 203, 206, 209, 211, 214, 218, 220, 224, - 227, 230, 236, 241, 246, 249, 251, 252, 261, 262, - 264, 265, 268, 270 +static const yytype_uint16 yyprhs[] = { + 0, 0, 3, 5, 7, 9, 11, 13, 18, 19, + 23, 24, 27, 31, 35, 39, 43, 47, 51, 55, + 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, + 99, 103, 106, 109, 114, 116, 118, 119, 121, 123, + 125, 129, 133, 140, 142, 145, 149, 151, 155, 157, + 161, 163, 167, 172, 174, 177, 181, 185, 189, 193, + 197, 201, 203, 206, 209, 211, 214, 218, 220, 224, + 227, 230, 236, 241, 246, 249, 251, 252, 261, 262, + 264, 265, 268, 270 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 82, 0, -1, 91, -1, 88, -1, 97, -1, 85, - -1, 48, -1, 48, 13, 88, 14, -1, -1, 84, - 86, 87, -1, -1, 80, 85, -1, 11, 88, 12, - -1, 88, 72, 88, -1, 88, 71, 88, -1, 88, - 75, 88, -1, 88, 74, 88, -1, 88, 73, 88, - -1, 88, 60, 88, -1, 88, 61, 88, -1, 88, - 62, 88, -1, 88, 68, 88, -1, 88, 67, 88, - -1, 88, 66, 88, -1, 88, 65, 88, -1, 88, - 64, 88, -1, 88, 63, 88, -1, 88, 58, 88, - -1, 88, 59, 88, -1, 88, 70, 88, -1, 88, - 69, 88, -1, 79, 88, -1, 71, 88, -1, 20, - 11, 83, 12, -1, 83, -1, 45, -1, -1, 42, - -1, 43, -1, 44, -1, 89, 46, 92, -1, 89, - 49, 92, -1, 89, 46, 57, 15, 96, 16, -1, - 90, -1, 90, 31, -1, 90, 31, 91, -1, 93, - -1, 93, 56, 92, -1, 94, -1, 94, 57, 88, - -1, 48, -1, 48, 8, 45, -1, 48, 13, 95, - 14, -1, 45, -1, 71, 95, -1, 11, 95, 12, - -1, 95, 72, 95, -1, 95, 71, 95, -1, 95, - 75, 95, -1, 95, 74, 95, -1, 95, 73, 95, - -1, 48, -1, 96, 48, -1, 96, 56, -1, 98, - -1, 98, 31, -1, 98, 31, 97, -1, 99, -1, - 83, 57, 88, -1, 83, 77, -1, 83, 76, -1, - 18, 11, 21, 102, 12, -1, 19, 11, 83, 12, - -1, 19, 11, 45, 12, -1, 17, 88, -1, 88, - -1, -1, 83, 57, 51, 100, 11, 101, 12, 99, - -1, -1, 103, -1, -1, 56, 103, -1, 88, -1, - 88, 56, 103, -1 +static const yytype_int8 yyrhs[] = { + 82, 0, -1, 91, -1, 88, -1, 97, -1, 85, + -1, 48, -1, 48, 13, 88, 14, -1, -1, 84, + 86, 87, -1, -1, 80, 85, -1, 11, 88, 12, + -1, 88, 72, 88, -1, 88, 71, 88, -1, 88, + 75, 88, -1, 88, 74, 88, -1, 88, 73, 88, + -1, 88, 60, 88, -1, 88, 61, 88, -1, 88, + 62, 88, -1, 88, 68, 88, -1, 88, 67, 88, + -1, 88, 66, 88, -1, 88, 65, 88, -1, 88, + 64, 88, -1, 88, 63, 88, -1, 88, 58, 88, + -1, 88, 59, 88, -1, 88, 70, 88, -1, 88, + 69, 88, -1, 79, 88, -1, 71, 88, -1, 20, + 11, 83, 12, -1, 83, -1, 45, -1, -1, 42, + -1, 43, -1, 44, -1, 89, 46, 92, -1, 89, + 49, 92, -1, 89, 46, 57, 15, 96, 16, -1, + 90, -1, 90, 31, -1, 90, 31, 91, -1, 93, + -1, 93, 56, 92, -1, 94, -1, 94, 57, 88, + -1, 48, -1, 48, 8, 45, -1, 48, 13, 95, + 14, -1, 45, -1, 71, 95, -1, 11, 95, 12, + -1, 95, 72, 95, -1, 95, 71, 95, -1, 95, + 75, 95, -1, 95, 74, 95, -1, 95, 73, 95, + -1, 48, -1, 96, 48, -1, 96, 56, -1, 98, + -1, 98, 31, -1, 98, 31, 97, -1, 99, -1, + 83, 57, 88, -1, 83, 77, -1, 83, 76, -1, + 18, 11, 21, 102, 12, -1, 19, 11, 83, 12, + -1, 19, 11, 45, 12, -1, 17, 88, -1, 88, + -1, -1, 83, 57, 51, 100, 11, 101, 12, 99, + -1, -1, 103, -1, -1, 56, 103, -1, 88, -1, + 88, 56, 103, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint8 yyrline[] = -{ - 0, 84, 84, 88, 92, 98, 101, 102, 105, 105, - 109, 110, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 142, 143, 144, 148, 149, 150, 151, - 154, 155, 156, 159, 160, 161, 171, 172, 175, 176, - 179, 180, 181, 184, 185, 186, 187, 188, 189, 190, - 191, 194, 195, 204, 207, 208, 209, 212, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 223, 226, 227, - 230, 231, 234, 235 +static const yytype_uint8 yyrline[] = { + 0, 84, 84, 88, 92, 98, 101, 102, 105, 105, + 109, 110, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 142, 143, 144, 148, 149, 150, 151, + 154, 155, 156, 159, 160, 161, 171, 172, 175, 176, + 179, 180, 181, 184, 185, 186, 187, 188, 189, 190, + 191, 194, 195, 204, 207, 208, 209, 212, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 223, 226, 227, + 230, 231, 234, 235 }; #endif #if PROMELA_DEBUG || YYERROR_VERBOSE || 1 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "PML_VAR_ARRAY", "PML_VARLIST", - "PML_DECL", "PML_DECLLIST", "PML_STMNT", "PML_COLON", "PML_EXPR", - "PML_NAMELIST", "'('", "')'", "'['", "']'", "'{'", "'}'", "PML_ASSERT", - "PML_PRINT", "PML_PRINTM", "PML_LEN", "PML_STRING", "PML_TYPEDEF", - "PML_MTYPE", "PML_INLINE", "PML_RETURN", "PML_LABEL", "PML_OF", - "PML_GOTO", "PML_BREAK", "PML_ELSE", "PML_SEMI", "PML_ARROW", "PML_IF", - "PML_FI", "PML_DO", "PML_OD", "PML_FOR", "PML_SELECT", "PML_IN", - "PML_SEP", "PML_DOTDOT", "PML_HIDDEN", "PML_SHOW", "PML_ISLOCAL", - "PML_CONST", "PML_TYPE", "PML_XU", "PML_NAME", "PML_UNAME", "PML_PNAME", - "PML_INAME", "PML_CLAIM", "PML_TRACE", "PML_INIT", "PML_LTL", - "PML_COMMA", "PML_ASGN", "PML_AND", "PML_OR", "PML_BITAND", "PML_BITXOR", - "PML_BITOR", "PML_NE", "PML_EQ", "PML_LE", "PML_GE", "PML_LT", "PML_GT", - "PML_RSHIFT", "PML_LSHIFT", "PML_MINUS", "PML_PLUS", "PML_MODULO", - "PML_DIVIDE", "PML_TIMES", "PML_DECR", "PML_INCR", "PML_COMPL", - "PML_NEG", "PML_DOT", "$accept", "program", "varref", "pfld", "cmpnd", - "$@1", "sfld", "expr", "vis", "one_decl", "decl_lst", "var_list", "ivar", - "vardcl", "const_expr", "nlst", "stmnt_lst", "stmnt", "Stmnt", "$@2", - "args", "prargs", "arg", YY_NULL +static const char *const yytname[] = { + "$end", "error", "$undefined", "PML_VAR_ARRAY", "PML_VARLIST", + "PML_DECL", "PML_DECLLIST", "PML_STMNT", "PML_COLON", "PML_EXPR", + "PML_NAMELIST", "'('", "')'", "'['", "']'", "'{'", "'}'", "PML_ASSERT", + "PML_PRINT", "PML_PRINTM", "PML_LEN", "PML_STRING", "PML_TYPEDEF", + "PML_MTYPE", "PML_INLINE", "PML_RETURN", "PML_LABEL", "PML_OF", + "PML_GOTO", "PML_BREAK", "PML_ELSE", "PML_SEMI", "PML_ARROW", "PML_IF", + "PML_FI", "PML_DO", "PML_OD", "PML_FOR", "PML_SELECT", "PML_IN", + "PML_SEP", "PML_DOTDOT", "PML_HIDDEN", "PML_SHOW", "PML_ISLOCAL", + "PML_CONST", "PML_TYPE", "PML_XU", "PML_NAME", "PML_UNAME", "PML_PNAME", + "PML_INAME", "PML_CLAIM", "PML_TRACE", "PML_INIT", "PML_LTL", + "PML_COMMA", "PML_ASGN", "PML_AND", "PML_OR", "PML_BITAND", "PML_BITXOR", + "PML_BITOR", "PML_NE", "PML_EQ", "PML_LE", "PML_GE", "PML_LT", "PML_GT", + "PML_RSHIFT", "PML_LSHIFT", "PML_MINUS", "PML_PLUS", "PML_MODULO", + "PML_DIVIDE", "PML_TIMES", "PML_DECR", "PML_INCR", "PML_COMPL", + "PML_NEG", "PML_DOT", "$accept", "program", "varref", "pfld", "cmpnd", + "$@1", "sfld", "expr", "vis", "one_decl", "decl_lst", "var_list", "ivar", + "vardcl", "const_expr", "nlst", "stmnt_lst", "stmnt", "Stmnt", "$@2", + "args", "prargs", "arg", YY_NULL }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 40, 41, 91, 93, 123, 125, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329 +static const yytype_uint16 yytoknum[] = { + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 40, 41, 91, 93, 123, 125, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 81, 82, 82, 82, 83, 84, 84, 86, 85, - 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, - 90, 90, 90, 91, 91, 91, 92, 92, 93, 93, - 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, - 95, 96, 96, 96, 97, 97, 97, 98, 99, 99, - 99, 99, 99, 99, 99, 99, 100, 99, 101, 101, - 102, 102, 103, 103 +static const yytype_uint8 yyr1[] = { + 0, 81, 82, 82, 82, 83, 84, 84, 86, 85, + 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, + 90, 90, 90, 91, 91, 91, 92, 92, 93, 93, + 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, + 95, 96, 96, 96, 97, 97, 97, 98, 99, 99, + 99, 99, 99, 99, 99, 99, 100, 99, 101, 101, + 102, 102, 103, 103 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 1, 1, 1, 1, 1, 4, 0, 3, - 0, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 4, 1, 1, 0, 1, 1, 1, - 3, 3, 6, 1, 2, 3, 1, 3, 1, 3, - 1, 3, 4, 1, 2, 3, 3, 3, 3, 3, - 3, 1, 2, 2, 1, 2, 3, 1, 3, 2, - 2, 5, 4, 4, 2, 1, 0, 8, 0, 1, - 0, 2, 1, 3 +static const yytype_uint8 yyr2[] = { + 0, 2, 1, 1, 1, 1, 1, 4, 0, 3, + 0, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 4, 1, 1, 0, 1, 1, 1, + 3, 3, 6, 1, 2, 3, 1, 3, 1, 3, + 1, 3, 4, 1, 2, 3, 3, 3, 3, 3, + 3, 1, 2, 2, 1, 2, 3, 1, 3, 2, + 2, 5, 4, 4, 2, 1, 0, 8, 0, 1, + 0, 2, 1, 3 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 36, 0, 0, 0, 0, 0, 37, 38, 39, 35, - 6, 0, 0, 0, 34, 8, 5, 3, 0, 43, - 2, 4, 64, 67, 34, 0, 74, 0, 0, 0, - 0, 32, 31, 1, 0, 70, 69, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 65, - 12, 80, 0, 0, 0, 0, 76, 68, 0, 9, - 27, 28, 18, 19, 20, 26, 25, 24, 23, 22, - 21, 30, 29, 14, 13, 17, 16, 15, 50, 0, - 40, 46, 48, 41, 45, 75, 66, 0, 0, 73, - 72, 33, 7, 0, 11, 0, 0, 0, 0, 0, - 82, 81, 71, 78, 51, 0, 53, 0, 0, 61, - 0, 47, 49, 0, 0, 79, 0, 54, 52, 0, - 0, 0, 0, 0, 42, 62, 63, 83, 0, 55, - 57, 56, 60, 59, 58, 77 +static const yytype_uint8 yydefact[] = { + 36, 0, 0, 0, 0, 0, 37, 38, 39, 35, + 6, 0, 0, 0, 34, 8, 5, 3, 0, 43, + 2, 4, 64, 67, 34, 0, 74, 0, 0, 0, + 0, 32, 31, 1, 0, 70, 69, 10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 65, + 12, 80, 0, 0, 0, 0, 76, 68, 0, 9, + 27, 28, 18, 19, 20, 26, 25, 24, 23, 22, + 21, 30, 29, 14, 13, 17, 16, 15, 50, 0, + 40, 46, 48, 41, 45, 75, 66, 0, 0, 73, + 72, 33, 7, 0, 11, 0, 0, 0, 0, 0, + 82, 81, 71, 78, 51, 0, 53, 0, 0, 61, + 0, 47, 49, 0, 0, 79, 0, 54, 52, 0, + 0, 0, 0, 0, 42, 62, 63, 83, 0, 55, + 57, 56, 60, 59, 58, 77 }; /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = -{ - -1, 13, 24, 15, 16, 37, 69, 110, 18, 19, - 20, 90, 91, 92, 118, 120, 21, 22, 23, 103, - 124, 98, 111 +static const yytype_int8 yydefgoto[] = { + -1, 13, 24, 15, 16, 37, 69, 110, 18, 19, + 20, 90, 91, 92, 118, 120, 21, 22, 23, 103, + 124, 98, 111 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -109 -static const yytype_int16 yypact[] = -{ - 46, 65, 65, -5, 7, 9, -109, -109, -109, -109, - 8, 65, 65, 33, -53, -109, -109, 155, -36, 5, - -109, -109, 6, -109, -109, 87, 193, 54, -29, 36, - 65, -1, -109, -109, 60, -109, -109, 13, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, -40, 38, 35, 50, - -109, 25, 71, 75, 84, 110, -109, 193, 36, -109, - 209, 209, 222, 222, 222, 170, 170, 229, 229, 229, - 229, -46, -46, -1, -1, -109, -109, -109, 1, 82, - -109, 51, 49, -109, -109, 193, -109, 65, 100, -109, - -109, -109, -109, 103, -109, 70, 11, 68, 38, 65, - 136, -109, -109, 65, -109, 11, -109, 11, 116, -109, - 44, -109, 193, 65, 106, -109, 92, 28, -109, 11, - 11, 11, 11, 11, -109, -109, -109, -109, 50, -109, - 28, 28, -109, -109, -109, -109 +static const yytype_int16 yypact[] = { + 46, 65, 65, -5, 7, 9, -109, -109, -109, -109, + 8, 65, 65, 33, -53, -109, -109, 155, -36, 5, + -109, -109, 6, -109, -109, 87, 193, 54, -29, 36, + 65, -1, -109, -109, 60, -109, -109, 13, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, -40, 38, 35, 50, + -109, 25, 71, 75, 84, 110, -109, 193, 36, -109, + 209, 209, 222, 222, 222, 170, 170, 229, 229, 229, + 229, -46, -46, -1, -1, -109, -109, -109, 1, 82, + -109, 51, 49, -109, -109, 193, -109, 65, 100, -109, + -109, -109, -109, 103, -109, 70, 11, 68, 38, 65, + 136, -109, -109, 65, -109, 11, -109, 11, 116, -109, + 44, -109, 193, 65, 106, -109, 92, 28, -109, 11, + 11, 11, 11, 11, -109, -109, -109, -109, 50, -109, + 28, 28, -109, -109, -109, -109 }; /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = -{ - -109, -109, 3, -109, 52, -109, -109, 0, -109, -109, - 61, -50, -109, -109, 117, -109, 63, -109, -15, -109, - -109, -109, -108 +static const yytype_int8 yypgoto[] = { + -109, -109, 3, -109, 52, -109, -109, 0, -109, -109, + 61, -50, -109, -109, 117, -109, 63, -109, -15, -109, + -109, -109, -108 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -76 -static const yytype_int16 yytable[] = -{ - 17, 25, 26, 14, 34, 125, 27, 93, 88, 105, - 56, 31, 32, 57, 106, 137, 62, 89, 28, 10, - 29, 30, 115, 35, 36, 51, 52, 53, 54, 55, - 65, 63, 64, 33, 67, -44, 58, 59, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 116, 1, 121, 95, - 134, 1, 14, 2, 3, 4, 5, 2, 3, 4, - 5, 1, 53, 54, 55, 61, 1, 6, 7, 8, - 5, 97, 117, 99, 10, 5, 88, 100, 6, 7, - 8, 9, 135, 68, 10, 9, 101, 107, 10, 60, - 136, 131, 132, 133, 139, 9, 109, 108, 10, 122, - 9, 66, 112, 10, 113, 114, 119, 11, 138, 94, - 104, 11, 96, 145, 102, 12, 0, 0, 0, 12, - 128, 11, 0, 0, 0, 0, 11, 0, 95, 12, - 0, 14, 0, 0, 12, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 129, 130, 131, 132, 133, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, -75, 129, 130, 131, - 132, 133, 123, 0, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 0, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 0, 126, 0, 127, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 140, 141, 142, 143, - 144, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 49, 50, - 51, 52, 53, 54, 55 +static const yytype_int16 yytable[] = { + 17, 25, 26, 14, 34, 125, 27, 93, 88, 105, + 56, 31, 32, 57, 106, 137, 62, 89, 28, 10, + 29, 30, 115, 35, 36, 51, 52, 53, 54, 55, + 65, 63, 64, 33, 67, -44, 58, 59, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 116, 1, 121, 95, + 134, 1, 14, 2, 3, 4, 5, 2, 3, 4, + 5, 1, 53, 54, 55, 61, 1, 6, 7, 8, + 5, 97, 117, 99, 10, 5, 88, 100, 6, 7, + 8, 9, 135, 68, 10, 9, 101, 107, 10, 60, + 136, 131, 132, 133, 139, 9, 109, 108, 10, 122, + 9, 66, 112, 10, 113, 114, 119, 11, 138, 94, + 104, 11, 96, 145, 102, 12, 0, 0, 0, 12, + 128, 11, 0, 0, 0, 0, 11, 0, 95, 12, + 0, 14, 0, 0, 12, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 129, 130, 131, 132, 133, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -75, 129, 130, 131, + 132, 133, 123, 0, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 0, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 0, 126, 0, 127, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 140, 141, 142, 143, + 144, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 49, 50, + 51, 52, 53, 54, 55 }; #define yypact_value_is_default(Yystate) \ @@ -770,60 +755,58 @@ static const yytype_int16 yytable[] = #define yytable_value_is_error(Yytable_value) \ YYID (0) -static const yytype_int16 yycheck[] = -{ - 0, 1, 2, 0, 57, 113, 11, 57, 48, 8, - 46, 11, 12, 49, 13, 123, 45, 57, 11, 48, - 11, 13, 11, 76, 77, 71, 72, 73, 74, 75, - 30, 28, 29, 0, 34, 0, 31, 31, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 45, 11, 108, 59, - 16, 11, 59, 17, 18, 19, 20, 17, 18, 19, - 20, 11, 73, 74, 75, 21, 11, 42, 43, 44, - 20, 56, 71, 12, 48, 20, 48, 12, 42, 43, - 44, 45, 48, 80, 48, 45, 12, 15, 48, 12, - 56, 73, 74, 75, 12, 45, 57, 56, 48, 109, - 45, 51, 12, 48, 11, 45, 48, 71, 12, 58, - 68, 71, 59, 138, 14, 79, -1, -1, -1, 79, - 14, 71, -1, -1, -1, -1, 71, -1, 138, 79, - -1, 138, -1, -1, 79, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 71, 72, 73, 74, 75, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 31, 71, 72, 73, - 74, 75, 56, -1, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, -1, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, -1, 115, -1, 117, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 129, 130, 131, 132, - 133, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 69, 70, - 71, 72, 73, 74, 75 +static const yytype_int16 yycheck[] = { + 0, 1, 2, 0, 57, 113, 11, 57, 48, 8, + 46, 11, 12, 49, 13, 123, 45, 57, 11, 48, + 11, 13, 11, 76, 77, 71, 72, 73, 74, 75, + 30, 28, 29, 0, 34, 0, 31, 31, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 45, 11, 108, 59, + 16, 11, 59, 17, 18, 19, 20, 17, 18, 19, + 20, 11, 73, 74, 75, 21, 11, 42, 43, 44, + 20, 56, 71, 12, 48, 20, 48, 12, 42, 43, + 44, 45, 48, 80, 48, 45, 12, 15, 48, 12, + 56, 73, 74, 75, 12, 45, 57, 56, 48, 109, + 45, 51, 12, 48, 11, 45, 48, 71, 12, 58, + 68, 71, 59, 138, 14, 79, -1, -1, -1, 79, + 14, 71, -1, -1, -1, -1, 71, -1, 138, 79, + -1, 138, -1, -1, 79, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 71, 72, 73, 74, 75, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 31, 71, 72, 73, + 74, 75, 56, -1, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, -1, 115, -1, 117, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 129, 130, 131, 132, + 133, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 69, 70, + 71, 72, 73, 74, 75 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 11, 17, 18, 19, 20, 42, 43, 44, 45, - 48, 71, 79, 82, 83, 84, 85, 88, 89, 90, - 91, 97, 98, 99, 83, 88, 88, 11, 11, 11, - 13, 88, 88, 0, 57, 76, 77, 86, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 46, 49, 31, 31, - 12, 21, 45, 83, 83, 88, 51, 88, 80, 87, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 48, 57, - 92, 93, 94, 92, 91, 88, 97, 56, 102, 12, - 12, 12, 14, 100, 85, 8, 13, 15, 56, 57, - 88, 103, 12, 11, 45, 11, 45, 71, 95, 48, - 96, 92, 88, 56, 101, 103, 95, 95, 14, 71, - 72, 73, 74, 75, 16, 48, 56, 103, 12, 12, - 95, 95, 95, 95, 95, 99 +static const yytype_uint8 yystos[] = { + 0, 11, 17, 18, 19, 20, 42, 43, 44, 45, + 48, 71, 79, 82, 83, 84, 85, 88, 89, 90, + 91, 97, 98, 99, 83, 88, 88, 11, 11, 11, + 13, 88, 88, 0, 57, 76, 77, 86, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 46, 49, 31, 31, + 12, 21, 45, 83, 83, 88, 51, 88, 80, 87, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 48, 57, + 92, 93, 94, 92, 91, 88, 97, 56, 102, 12, + 12, 12, 14, 100, 85, 8, 13, 15, 56, 57, + 88, 103, 12, 11, 45, 11, 45, 71, 95, 48, + 96, 92, 88, 56, 101, 103, 95, 95, 14, 71, + 72, 73, 74, 75, 16, 48, 56, 103, 12, 12, + 95, 95, 95, 95, 95, 99 }; #define yyerrok (yyerrstatus = 0) @@ -845,10 +828,10 @@ static const yytype_uint8 yystos[] = #define YYFAIL goto yyerrlab #if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ +/* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) @@ -926,26 +909,26 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, ctx, scanner) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - uscxml::PromelaParser* ctx; - void * scanner; +FILE *yyoutput; +int yytype; +YYSTYPE const * const yyvaluep; +uscxml::PromelaParser* ctx; +void * scanner; #endif { - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; - YYUSE (ctx); - YYUSE (scanner); + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; + YYUSE (ctx); + YYUSE (scanner); # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else - YYUSE (yyoutput); + YYUSE (yyoutput); # endif - YYUSE (yytype); + YYUSE (yytype); } @@ -960,20 +943,20 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, usc #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, ctx, scanner) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - uscxml::PromelaParser* ctx; - void * scanner; +FILE *yyoutput; +int yytype; +YYSTYPE const * const yyvaluep; +uscxml::PromelaParser* ctx; +void * scanner; #endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - yy_symbol_value_print (yyoutput, yytype, yyvaluep, ctx, scanner); - YYFPRINTF (yyoutput, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep, ctx, scanner); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -988,17 +971,16 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; +yytype_int16 *yybottom; +yytype_int16 *yytop; #endif { - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ @@ -1019,26 +1001,25 @@ yy_reduce_print (YYSTYPE *yyvsp, int yyrule, uscxml::PromelaParser* ctx, void * #else static void yy_reduce_print (yyvsp, yyrule, ctx, scanner) - YYSTYPE *yyvsp; - int yyrule; - uscxml::PromelaParser* ctx; - void * scanner; +YYSTYPE *yyvsp; +int yyrule; +uscxml::PromelaParser* ctx; +void * scanner; #endif { - int yynrhs = yyr2[yyrule]; - int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , ctx, scanner); - YYFPRINTF (stderr, "\n"); - } + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , ctx, scanner); + YYFPRINTF (stderr, "\n"); + } } # define YY_REDUCE_PRINT(Rule) \ @@ -1089,13 +1070,13 @@ yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) - const char *yystr; +const char *yystr; #endif { - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; } # endif # endif @@ -1113,17 +1094,17 @@ yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; +char *yydest; +const char *yysrc; #endif { - char *yyd = yydest; - const char *yys = yysrc; + char *yyd = yydest; + const char *yys = yysrc; - while ((*yyd++ = *yys++) != '\0') - continue; + while ((*yyd++ = *yys++) != '\0') + continue; - return yyd - 1; + return yyd - 1; } # endif # endif @@ -1137,42 +1118,40 @@ yystpcpy (yydest, yysrc) null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; +yytnamerr (char *yyres, const char *yystr) { + if (*yystr == '"') { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } +do_not_strip_quotes: + ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; } # endif @@ -1186,133 +1165,123 @@ yytnamerr (char *yyres, const char *yystr) required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULL; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } - } - - switch (yycount) - { + yytype_int16 *yyssp, int yytoken) { + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } else { + yyp++; + yyformat++; + } + } + return 0; } #endif /* YYERROR_VERBOSE */ @@ -1328,22 +1297,22 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, uscxml::PromelaPar #else static void yydestruct (yymsg, yytype, yyvaluep, ctx, scanner) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; - uscxml::PromelaParser* ctx; - void * scanner; +const char *yymsg; +int yytype; +YYSTYPE *yyvaluep; +uscxml::PromelaParser* ctx; +void * scanner; #endif { - YYUSE (yyvaluep); - YYUSE (ctx); - YYUSE (scanner); + YYUSE (yyvaluep); + YYUSE (ctx); + YYUSE (scanner); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YYUSE (yytype); + YYUSE (yytype); } @@ -1361,7 +1330,7 @@ yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; +void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -1371,17 +1340,17 @@ yyparse (uscxml::PromelaParser* ctx, void * scanner) #else int yyparse (ctx, scanner) - uscxml::PromelaParser* ctx; - void * scanner; +uscxml::PromelaParser* ctx; +void * scanner; #endif #endif { -/* The lookahead symbol. */ -int yychar; + /* The lookahead symbol. */ + int yychar; #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ + /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ @@ -1389,9 +1358,9 @@ int yychar; # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else -/* Default value used for initialization, for pacifying older GCCs - or non-GCC compilers. */ -static YYSTYPE yyval_default; + /* Default value used for initialization, for pacifying older GCCs + or non-GCC compilers. */ + static YYSTYPE yyval_default; # define YY_INITIAL_VALUE(Value) = Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN @@ -1402,990 +1371,1118 @@ static YYSTYPE yyval_default; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); + /* The semantic value of the lookahead symbol. */ + YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); - /* Number of syntax errors so far. */ - int yynerrs; + /* Number of syntax errors so far. */ + int yynerrs; - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize; + YYSIZE_T yystacksize; - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; #if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); + YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; + /*------------------------------------------------------------. + | yynewstate -- Push a new state, which is found in yystate. | + `------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; - yysetstate: - *yyssp = yystate; +yysetstate: + *yyssp = yystate; - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + if (yyss + yystacksize - 1 <= yyssp) { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; + goto yyexhaustedlab; # else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } # endif #endif /* no yyoverflow */ - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) - YYACCEPT; + if (yystate == YYFINAL) + YYACCEPT; - goto yybackup; + goto yybackup; -/*-----------. -| yybackup. | -`-----------*/ + /*-----------. + | yybackup. | + `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } else { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + goto yynewstate; + + + /*-----------------------------------------------------------. + | yydefault -- do the default action for the current state. | + `-----------------------------------------------------------*/ yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ + /*-----------------------------. + | yyreduce -- Do a reduction. | + `-----------------------------*/ yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -/* Line 1787 of yacc.c */ + YY_REDUCE_PRINT (yyn); + switch (yyn) { + case 2: + /* Line 1787 of yacc.c */ #line 84 "promela.ypp" - { - ctx->ast = (yyvsp[(1) - (1)].node); - ctx->type = PromelaParser::PROMELA_DECL; - } - break; - - case 3: -/* Line 1787 of yacc.c */ + { + ctx->ast = (yyvsp[(1) - (1)].node); + ctx->type = PromelaParser::PROMELA_DECL; + } + break; + + case 3: + /* Line 1787 of yacc.c */ #line 88 "promela.ypp" - { - ctx->ast = (yyvsp[(1) - (1)].node); - ctx->type = PromelaParser::PROMELA_EXPR; - } - break; - - case 4: -/* Line 1787 of yacc.c */ + { + ctx->ast = (yyvsp[(1) - (1)].node); + ctx->type = PromelaParser::PROMELA_EXPR; + } + break; + + case 4: + /* Line 1787 of yacc.c */ #line 92 "promela.ypp" - { - ctx->ast = (yyvsp[(1) - (1)].node); - ctx->type = PromelaParser::PROMELA_STMNT; - } - break; - - case 5: -/* Line 1787 of yacc.c */ + { + ctx->ast = (yyvsp[(1) - (1)].node); + ctx->type = PromelaParser::PROMELA_STMNT; + } + break; + + case 5: + /* Line 1787 of yacc.c */ #line 98 "promela.ypp" - {} - break; + {} + break; - case 6: -/* Line 1787 of yacc.c */ + case 6: + /* Line 1787 of yacc.c */ #line 101 "promela.ypp" - { (yyval.node) = ctx->value(PML_NAME, (yyvsp[(1) - (1)].value)); free((yyvsp[(1) - (1)].value)); } - break; + { + (yyval.node) = ctx->value(PML_NAME, (yyvsp[(1) - (1)].value)); + free((yyvsp[(1) - (1)].value)); + } + break; - case 7: -/* Line 1787 of yacc.c */ + case 7: + /* Line 1787 of yacc.c */ #line 102 "promela.ypp" - { (yyval.node) = ctx->node(PML_VAR_ARRAY, 2, ctx->value(PML_NAME, (yyvsp[(1) - (4)].value)), (yyvsp[(3) - (4)].node)); free((yyvsp[(1) - (4)].value)); } - break; + { + (yyval.node) = ctx->node(PML_VAR_ARRAY, 2, ctx->value(PML_NAME, (yyvsp[(1) - (4)].value)), (yyvsp[(3) - (4)].node)); + free((yyvsp[(1) - (4)].value)); + } + break; - case 8: -/* Line 1787 of yacc.c */ + case 8: + /* Line 1787 of yacc.c */ #line 105 "promela.ypp" - {} - break; + {} + break; - case 9: -/* Line 1787 of yacc.c */ + case 9: + /* Line 1787 of yacc.c */ #line 106 "promela.ypp" - {} - break; + {} + break; - case 10: -/* Line 1787 of yacc.c */ + case 10: + /* Line 1787 of yacc.c */ #line 109 "promela.ypp" - {} - break; + {} + break; - case 11: -/* Line 1787 of yacc.c */ + case 11: + /* Line 1787 of yacc.c */ #line 110 "promela.ypp" - {} - break; + {} + break; - case 12: -/* Line 1787 of yacc.c */ + case 12: + /* Line 1787 of yacc.c */ #line 120 "promela.ypp" - { (yyval.node) = (yyvsp[(2) - (3)].node); } - break; + { + (yyval.node) = (yyvsp[(2) - (3)].node); + } + break; - case 13: -/* Line 1787 of yacc.c */ + case 13: + /* Line 1787 of yacc.c */ #line 121 "promela.ypp" - { (yyval.node) = ctx->node(PML_PLUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_PLUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 14: -/* Line 1787 of yacc.c */ + case 14: + /* Line 1787 of yacc.c */ #line 122 "promela.ypp" - { (yyval.node) = ctx->node(PML_MINUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_MINUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 15: -/* Line 1787 of yacc.c */ + case 15: + /* Line 1787 of yacc.c */ #line 123 "promela.ypp" - { (yyval.node) = ctx->node(PML_TIMES, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_TIMES, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 16: -/* Line 1787 of yacc.c */ + case 16: + /* Line 1787 of yacc.c */ #line 124 "promela.ypp" - { (yyval.node) = ctx->node(PML_DIVIDE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_DIVIDE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 17: -/* Line 1787 of yacc.c */ + case 17: + /* Line 1787 of yacc.c */ #line 125 "promela.ypp" - { (yyval.node) = ctx->node(PML_MODULO, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_MODULO, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 18: -/* Line 1787 of yacc.c */ + case 18: + /* Line 1787 of yacc.c */ #line 126 "promela.ypp" - { (yyval.node) = ctx->node(PML_BITAND, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_BITAND, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 19: -/* Line 1787 of yacc.c */ + case 19: + /* Line 1787 of yacc.c */ #line 127 "promela.ypp" - { (yyval.node) = ctx->node(PML_BITXOR, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_BITXOR, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 20: -/* Line 1787 of yacc.c */ + case 20: + /* Line 1787 of yacc.c */ #line 128 "promela.ypp" - { (yyval.node) = ctx->node(PML_BITOR, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_BITOR, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 21: -/* Line 1787 of yacc.c */ + case 21: + /* Line 1787 of yacc.c */ #line 129 "promela.ypp" - { (yyval.node) = ctx->node(PML_GT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_GT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 22: -/* Line 1787 of yacc.c */ + case 22: + /* Line 1787 of yacc.c */ #line 130 "promela.ypp" - { (yyval.node) = ctx->node(PML_LT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_LT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 23: -/* Line 1787 of yacc.c */ + case 23: + /* Line 1787 of yacc.c */ #line 131 "promela.ypp" - { (yyval.node) = ctx->node(PML_GE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_GE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 24: -/* Line 1787 of yacc.c */ + case 24: + /* Line 1787 of yacc.c */ #line 132 "promela.ypp" - { (yyval.node) = ctx->node(PML_LE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_LE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 25: -/* Line 1787 of yacc.c */ + case 25: + /* Line 1787 of yacc.c */ #line 133 "promela.ypp" - { (yyval.node) = ctx->node(PML_EQ, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_EQ, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 26: -/* Line 1787 of yacc.c */ + case 26: + /* Line 1787 of yacc.c */ #line 134 "promela.ypp" - { (yyval.node) = ctx->node(PML_NE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_NE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 27: -/* Line 1787 of yacc.c */ + case 27: + /* Line 1787 of yacc.c */ #line 135 "promela.ypp" - { (yyval.node) = ctx->node(PML_AND, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_AND, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 28: -/* Line 1787 of yacc.c */ + case 28: + /* Line 1787 of yacc.c */ #line 136 "promela.ypp" - { (yyval.node) = ctx->node(PML_OR, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_OR, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 29: -/* Line 1787 of yacc.c */ + case 29: + /* Line 1787 of yacc.c */ #line 137 "promela.ypp" - { (yyval.node) = ctx->node(PML_LSHIFT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_LSHIFT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 30: -/* Line 1787 of yacc.c */ + case 30: + /* Line 1787 of yacc.c */ #line 138 "promela.ypp" - { (yyval.node) = ctx->node(PML_RSHIFT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_RSHIFT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 31: -/* Line 1787 of yacc.c */ + case 31: + /* Line 1787 of yacc.c */ #line 139 "promela.ypp" - { (yyval.node) = ctx->node(PML_NEG, 1, (yyvsp[(2) - (2)].node)); } - break; + { + (yyval.node) = ctx->node(PML_NEG, 1, (yyvsp[(2) - (2)].node)); + } + break; - case 32: -/* Line 1787 of yacc.c */ + case 32: + /* Line 1787 of yacc.c */ #line 140 "promela.ypp" - { (yyval.node) = ctx->node(PML_MINUS, 1, (yyvsp[(2) - (2)].node)); } - break; + { + (yyval.node) = ctx->node(PML_MINUS, 1, (yyvsp[(2) - (2)].node)); + } + break; - case 33: -/* Line 1787 of yacc.c */ + case 33: + /* Line 1787 of yacc.c */ #line 142 "promela.ypp" - { (yyval.node) = ctx->node(PML_LEN, 1, (yyvsp[(3) - (4)].node)); } - break; + { + (yyval.node) = ctx->node(PML_LEN, 1, (yyvsp[(3) - (4)].node)); + } + break; - case 34: -/* Line 1787 of yacc.c */ + case 34: + /* Line 1787 of yacc.c */ #line 143 "promela.ypp" - { } - break; + { } + break; - case 35: -/* Line 1787 of yacc.c */ + case 35: + /* Line 1787 of yacc.c */ #line 144 "promela.ypp" - { (yyval.node) = ctx->value(PML_CONST, (yyvsp[(1) - (1)].value)); free((yyvsp[(1) - (1)].value)); } - break; + { + (yyval.node) = ctx->value(PML_CONST, (yyvsp[(1) - (1)].value)); + free((yyvsp[(1) - (1)].value)); + } + break; - case 36: -/* Line 1787 of yacc.c */ + case 36: + /* Line 1787 of yacc.c */ #line 148 "promela.ypp" - { (yyval.node) = ctx->node(PML_SHOW, 0); } - break; + { + (yyval.node) = ctx->node(PML_SHOW, 0); + } + break; - case 37: -/* Line 1787 of yacc.c */ + case 37: + /* Line 1787 of yacc.c */ #line 149 "promela.ypp" - { (yyval.node) = ctx->node(PML_HIDDEN, 0); } - break; + { + (yyval.node) = ctx->node(PML_HIDDEN, 0); + } + break; - case 38: -/* Line 1787 of yacc.c */ + case 38: + /* Line 1787 of yacc.c */ #line 150 "promela.ypp" - { (yyval.node) = ctx->node(PML_SHOW, 0); } - break; + { + (yyval.node) = ctx->node(PML_SHOW, 0); + } + break; - case 39: -/* Line 1787 of yacc.c */ + case 39: + /* Line 1787 of yacc.c */ #line 151 "promela.ypp" - { (yyval.node) = ctx->node(PML_ISLOCAL, 0); } - break; + { + (yyval.node) = ctx->node(PML_ISLOCAL, 0); + } + break; - case 40: -/* Line 1787 of yacc.c */ + case 40: + /* Line 1787 of yacc.c */ #line 154 "promela.ypp" - { (yyval.node) = ctx->node(PML_DECL, 3, (yyvsp[(1) - (3)].node), ctx->value(PML_TYPE, (yyvsp[(2) - (3)].value)), (yyvsp[(3) - (3)].node)); free((yyvsp[(2) - (3)].value)); } - break; + { + (yyval.node) = ctx->node(PML_DECL, 3, (yyvsp[(1) - (3)].node), ctx->value(PML_TYPE, (yyvsp[(2) - (3)].value)), (yyvsp[(3) - (3)].node)); + free((yyvsp[(2) - (3)].value)); + } + break; - case 41: -/* Line 1787 of yacc.c */ + case 41: + /* Line 1787 of yacc.c */ #line 155 "promela.ypp" - { (yyval.node) = ctx->node(PML_UNAME, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_UNAME, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 42: -/* Line 1787 of yacc.c */ + case 42: + /* Line 1787 of yacc.c */ #line 156 "promela.ypp" - { (yyval.node) = ctx->node(PML_DECL, 3, (yyvsp[(1) - (6)].node), ctx->value(PML_TYPE, (yyvsp[(2) - (6)].value)), (yyvsp[(5) - (6)].node)); free((yyvsp[(2) - (6)].value)); } - break; + { + (yyval.node) = ctx->node(PML_DECL, 3, (yyvsp[(1) - (6)].node), ctx->value(PML_TYPE, (yyvsp[(2) - (6)].value)), (yyvsp[(5) - (6)].node)); + free((yyvsp[(2) - (6)].value)); + } + break; - case 43: -/* Line 1787 of yacc.c */ + case 43: + /* Line 1787 of yacc.c */ #line 159 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (1)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (1)].node); + } + break; - case 44: -/* Line 1787 of yacc.c */ + case 44: + /* Line 1787 of yacc.c */ #line 160 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (2)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (2)].node); + } + break; - case 45: -/* Line 1787 of yacc.c */ + case 45: + /* Line 1787 of yacc.c */ #line 161 "promela.ypp" - { - (yyval.node) = ctx->node(PML_DECLLIST, 1, (yyvsp[(1) - (3)].node)); - if((yyvsp[(3) - (3)].node)->type == PML_DECLLIST) { - (yyval.node)->merge((yyvsp[(3) - (3)].node)); delete (yyvsp[(3) - (3)].node); - } else { - (yyval.node)->push((yyvsp[(3) - (3)].node)); - } - } - break; - - case 46: -/* Line 1787 of yacc.c */ + { + (yyval.node) = ctx->node(PML_DECLLIST, 1, (yyvsp[(1) - (3)].node)); + if((yyvsp[(3) - (3)].node)->type == PML_DECLLIST) { + (yyval.node)->merge((yyvsp[(3) - (3)].node)); + delete (yyvsp[(3) - (3)].node); + } else { + (yyval.node)->push((yyvsp[(3) - (3)].node)); + } + } + break; + + case 46: + /* Line 1787 of yacc.c */ #line 171 "promela.ypp" - { (yyval.node) = ctx->node(PML_VARLIST, 1, (yyvsp[(1) - (1)].node)); } - break; + { + (yyval.node) = ctx->node(PML_VARLIST, 1, (yyvsp[(1) - (1)].node)); + } + break; - case 47: -/* Line 1787 of yacc.c */ + case 47: + /* Line 1787 of yacc.c */ #line 172 "promela.ypp" - { (yyval.node) = ctx->node(PML_VARLIST, 1, (yyvsp[(1) - (3)].node)); (yyval.node)->merge((yyvsp[(3) - (3)].node)); delete (yyvsp[(3) - (3)].node); } - break; + { + (yyval.node) = ctx->node(PML_VARLIST, 1, (yyvsp[(1) - (3)].node)); + (yyval.node)->merge((yyvsp[(3) - (3)].node)); + delete (yyvsp[(3) - (3)].node); + } + break; - case 48: -/* Line 1787 of yacc.c */ + case 48: + /* Line 1787 of yacc.c */ #line 175 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (1)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (1)].node); + } + break; - case 49: -/* Line 1787 of yacc.c */ + case 49: + /* Line 1787 of yacc.c */ #line 176 "promela.ypp" - { (yyval.node) = ctx->node(PML_ASGN, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_ASGN, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 50: -/* Line 1787 of yacc.c */ + case 50: + /* Line 1787 of yacc.c */ #line 179 "promela.ypp" - { (yyval.node) = ctx->value(PML_NAME, (yyvsp[(1) - (1)].value)); free((yyvsp[(1) - (1)].value)); } - break; + { + (yyval.node) = ctx->value(PML_NAME, (yyvsp[(1) - (1)].value)); + free((yyvsp[(1) - (1)].value)); + } + break; - case 51: -/* Line 1787 of yacc.c */ + case 51: + /* Line 1787 of yacc.c */ #line 180 "promela.ypp" - { (yyval.node) = ctx->node(PML_COLON, 2, ctx->value(PML_NAME, (yyvsp[(1) - (3)].value)), ctx->value(PML_CONST, (yyvsp[(3) - (3)].value))); free((yyvsp[(1) - (3)].value)); free((yyvsp[(3) - (3)].value)); } - break; + { + (yyval.node) = ctx->node(PML_COLON, 2, ctx->value(PML_NAME, (yyvsp[(1) - (3)].value)), ctx->value(PML_CONST, (yyvsp[(3) - (3)].value))); + free((yyvsp[(1) - (3)].value)); + free((yyvsp[(3) - (3)].value)); + } + break; - case 52: -/* Line 1787 of yacc.c */ + case 52: + /* Line 1787 of yacc.c */ #line 181 "promela.ypp" - { (yyval.node) = ctx->node(PML_VAR_ARRAY, 2, ctx->value(PML_NAME, (yyvsp[(1) - (4)].value)), (yyvsp[(3) - (4)].node)); free((yyvsp[(1) - (4)].value)); } - break; + { + (yyval.node) = ctx->node(PML_VAR_ARRAY, 2, ctx->value(PML_NAME, (yyvsp[(1) - (4)].value)), (yyvsp[(3) - (4)].node)); + free((yyvsp[(1) - (4)].value)); + } + break; - case 53: -/* Line 1787 of yacc.c */ + case 53: + /* Line 1787 of yacc.c */ #line 184 "promela.ypp" - { (yyval.node) = ctx->value(PML_CONST, (yyvsp[(1) - (1)].value)); free((yyvsp[(1) - (1)].value)); } - break; + { + (yyval.node) = ctx->value(PML_CONST, (yyvsp[(1) - (1)].value)); + free((yyvsp[(1) - (1)].value)); + } + break; - case 54: -/* Line 1787 of yacc.c */ + case 54: + /* Line 1787 of yacc.c */ #line 185 "promela.ypp" - { (yyval.node) = ctx->node(PML_MINUS, 1, (yyvsp[(2) - (2)].node)); } - break; + { + (yyval.node) = ctx->node(PML_MINUS, 1, (yyvsp[(2) - (2)].node)); + } + break; - case 55: -/* Line 1787 of yacc.c */ + case 55: + /* Line 1787 of yacc.c */ #line 186 "promela.ypp" - { (yyval.node) = (yyvsp[(2) - (3)].node); } - break; + { + (yyval.node) = (yyvsp[(2) - (3)].node); + } + break; - case 56: -/* Line 1787 of yacc.c */ + case 56: + /* Line 1787 of yacc.c */ #line 187 "promela.ypp" - { (yyval.node) = ctx->node(PML_PLUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_PLUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 57: -/* Line 1787 of yacc.c */ + case 57: + /* Line 1787 of yacc.c */ #line 188 "promela.ypp" - { (yyval.node) = ctx->node(PML_MINUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_MINUS, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 58: -/* Line 1787 of yacc.c */ + case 58: + /* Line 1787 of yacc.c */ #line 189 "promela.ypp" - { (yyval.node) = ctx->node(PML_TIMES, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_TIMES, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 59: -/* Line 1787 of yacc.c */ + case 59: + /* Line 1787 of yacc.c */ #line 190 "promela.ypp" - { (yyval.node) = ctx->node(PML_DIVIDE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_DIVIDE, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 60: -/* Line 1787 of yacc.c */ + case 60: + /* Line 1787 of yacc.c */ #line 191 "promela.ypp" - { (yyval.node) = ctx->node(PML_MODULO, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_MODULO, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 61: -/* Line 1787 of yacc.c */ + case 61: + /* Line 1787 of yacc.c */ #line 194 "promela.ypp" - { (yyval.node) = ctx->value(PML_NAME, (yyvsp[(1) - (1)].value)); free((yyvsp[(1) - (1)].value)); } - break; + { + (yyval.node) = ctx->value(PML_NAME, (yyvsp[(1) - (1)].value)); + free((yyvsp[(1) - (1)].value)); + } + break; - case 62: -/* Line 1787 of yacc.c */ + case 62: + /* Line 1787 of yacc.c */ #line 195 "promela.ypp" - { - if ((yyvsp[(1) - (2)].node)->type == PML_NAME) { - (yyval.node) = ctx->node(PML_NAMELIST, 1, (yyvsp[(1) - (2)].node)); - (yyval.node)->push(ctx->value(PML_NAME, (yyvsp[(2) - (2)].value))); - } else { - (yyvsp[(1) - (2)].node)->push(ctx->value(PML_NAME, (yyvsp[(2) - (2)].value))); - } - free((yyvsp[(2) - (2)].value)); - } - break; - - case 63: -/* Line 1787 of yacc.c */ + { + if ((yyvsp[(1) - (2)].node)->type == PML_NAME) { + (yyval.node) = ctx->node(PML_NAMELIST, 1, (yyvsp[(1) - (2)].node)); + (yyval.node)->push(ctx->value(PML_NAME, (yyvsp[(2) - (2)].value))); + } else { + (yyvsp[(1) - (2)].node)->push(ctx->value(PML_NAME, (yyvsp[(2) - (2)].value))); + } + free((yyvsp[(2) - (2)].value)); + } + break; + + case 63: + /* Line 1787 of yacc.c */ #line 204 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (2)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (2)].node); + } + break; - case 64: -/* Line 1787 of yacc.c */ + case 64: + /* Line 1787 of yacc.c */ #line 207 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (1)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (1)].node); + } + break; - case 65: -/* Line 1787 of yacc.c */ + case 65: + /* Line 1787 of yacc.c */ #line 208 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (2)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (2)].node); + } + break; - case 66: -/* Line 1787 of yacc.c */ + case 66: + /* Line 1787 of yacc.c */ #line 209 "promela.ypp" - { (yyval.node) = ctx->node(PML_STMNT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_STMNT, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 67: -/* Line 1787 of yacc.c */ + case 67: + /* Line 1787 of yacc.c */ #line 212 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (1)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (1)].node); + } + break; - case 68: -/* Line 1787 of yacc.c */ + case 68: + /* Line 1787 of yacc.c */ #line 215 "promela.ypp" - { (yyval.node) = ctx->node(PML_ASGN, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(PML_ASGN, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; - case 69: -/* Line 1787 of yacc.c */ + case 69: + /* Line 1787 of yacc.c */ #line 216 "promela.ypp" - { (yyval.node) = ctx->node(PML_INCR, 1, (yyvsp[(1) - (2)].node)); } - break; + { + (yyval.node) = ctx->node(PML_INCR, 1, (yyvsp[(1) - (2)].node)); + } + break; - case 70: -/* Line 1787 of yacc.c */ + case 70: + /* Line 1787 of yacc.c */ #line 217 "promela.ypp" - { (yyval.node) = ctx->node(PML_DECR, 1, (yyvsp[(1) - (2)].node)); } - break; + { + (yyval.node) = ctx->node(PML_DECR, 1, (yyvsp[(1) - (2)].node)); + } + break; - case 71: -/* Line 1787 of yacc.c */ + case 71: + /* Line 1787 of yacc.c */ #line 218 "promela.ypp" - { (yyval.node) = ctx->node(PML_PRINT, 2, ctx->value(PML_STRING, (yyvsp[(3) - (5)].value)), (yyvsp[(4) - (5)].node)); free((yyvsp[(3) - (5)].value)); } - break; + { + (yyval.node) = ctx->node(PML_PRINT, 2, ctx->value(PML_STRING, (yyvsp[(3) - (5)].value)), (yyvsp[(4) - (5)].node)); + free((yyvsp[(3) - (5)].value)); + } + break; - case 72: -/* Line 1787 of yacc.c */ + case 72: + /* Line 1787 of yacc.c */ #line 219 "promela.ypp" - { (yyval.node) = ctx->node(PML_PRINTM, 1, (yyvsp[(3) - (4)].node)); } - break; + { + (yyval.node) = ctx->node(PML_PRINTM, 1, (yyvsp[(3) - (4)].node)); + } + break; - case 73: -/* Line 1787 of yacc.c */ + case 73: + /* Line 1787 of yacc.c */ #line 220 "promela.ypp" - { (yyval.node) = ctx->node(PML_PRINTM, 1, ctx->value(PML_CONST, (yyvsp[(3) - (4)].value))); free((yyvsp[(3) - (4)].value)); } - break; + { + (yyval.node) = ctx->node(PML_PRINTM, 1, ctx->value(PML_CONST, (yyvsp[(3) - (4)].value))); + free((yyvsp[(3) - (4)].value)); + } + break; - case 74: -/* Line 1787 of yacc.c */ + case 74: + /* Line 1787 of yacc.c */ #line 221 "promela.ypp" - { } - break; + { } + break; - case 75: -/* Line 1787 of yacc.c */ + case 75: + /* Line 1787 of yacc.c */ #line 222 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (1)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (1)].node); + } + break; - case 76: -/* Line 1787 of yacc.c */ + case 76: + /* Line 1787 of yacc.c */ #line 223 "promela.ypp" - { } - break; + { } + break; - case 77: -/* Line 1787 of yacc.c */ + case 77: + /* Line 1787 of yacc.c */ #line 223 "promela.ypp" - { } - break; + { } + break; - case 78: -/* Line 1787 of yacc.c */ + case 78: + /* Line 1787 of yacc.c */ #line 226 "promela.ypp" - { } - break; + { } + break; - case 79: -/* Line 1787 of yacc.c */ + case 79: + /* Line 1787 of yacc.c */ #line 227 "promela.ypp" - { } - break; + { } + break; - case 80: -/* Line 1787 of yacc.c */ + case 80: + /* Line 1787 of yacc.c */ #line 230 "promela.ypp" - { (yyval.node) = ctx->value(0, ""); } - break; + { + (yyval.node) = ctx->value(0, ""); + } + break; - case 81: -/* Line 1787 of yacc.c */ + case 81: + /* Line 1787 of yacc.c */ #line 231 "promela.ypp" - { (yyval.node) = (yyvsp[(2) - (2)].node); } - break; + { + (yyval.node) = (yyvsp[(2) - (2)].node); + } + break; - case 82: -/* Line 1787 of yacc.c */ + case 82: + /* Line 1787 of yacc.c */ #line 234 "promela.ypp" - { (yyval.node) = (yyvsp[(1) - (1)].node); } - break; + { + (yyval.node) = (yyvsp[(1) - (1)].node); + } + break; - case 83: -/* Line 1787 of yacc.c */ + case 83: + /* Line 1787 of yacc.c */ #line 235 "promela.ypp" - { (yyval.node) = ctx->node(0, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } - break; + { + (yyval.node) = ctx->node(0, 2, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); + } + break; -/* Line 1787 of yacc.c */ + /* Line 1787 of yacc.c */ #line 2162 "promela.tab.cpp" - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ + default: + break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + + /*------------------------------------. + | yyerrlab -- here on detecting error | + `------------------------------------*/ yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) { + ++yynerrs; #if ! YYERROR_VERBOSE - yyerror (ctx, scanner, YY_("syntax error")); + yyerror (ctx, scanner, YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (ctx, scanner, yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } else { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (ctx, scanner, yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } # undef YYSYNTAX_ERROR #endif - } + } - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + if (yyerrstatus == 3) { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; + if (yychar <= YYEOF) { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else { + yydestruct ("Error: discarding", + yytoken, &yylval, ctx, scanner); + yychar = YYEMPTY; + } } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval, ctx, scanner); - yychar = YYEMPTY; - } - } - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ + /*---------------------------------------------------. + | yyerrorlab -- error raised explicitly by YYERROR. | + `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ + /*-------------------------------------------------------------. + | yyerrlab1 -- common code for both syntax error and YYERROR. | + `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, ctx, scanner); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); } - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END - yydestruct ("Error: popping", - yystos[yystate], yyvsp, ctx, scanner); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + yystate = yyn; + goto yynewstate; - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ + /*-------------------------------------. + | yyacceptlab -- YYACCEPT comes here. | + `-------------------------------------*/ yyacceptlab: - yyresult = 0; - goto yyreturn; + yyresult = 0; + goto yyreturn; -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ + /*-----------------------------------. + | yyabortlab -- YYABORT comes here. | + `-----------------------------------*/ yyabortlab: - yyresult = 1; - goto yyreturn; + yyresult = 1; + goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ + /*-------------------------------------------------. + | yyexhaustedlab -- memory exhaustion comes here. | + `-------------------------------------------------*/ yyexhaustedlab: - yyerror (ctx, scanner, YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ + yyerror (ctx, scanner, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ #endif yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, ctx, scanner); - } - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, ctx, scanner); - YYPOPSTACK (1); - } + if (yychar != YYEMPTY) { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, ctx, scanner); + } + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, ctx, scanner); + YYPOPSTACK (1); + } #ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); + if (yyss != yyssa) + YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + /* Make sure YYID is used. */ + return YYID (yyresult); } diff --git a/src/uscxml/plugins/element/file/FileElement.h b/src/uscxml/plugins/element/file/FileElement.h index 462ccc8..e236918 100644 --- a/src/uscxml/plugins/element/file/FileElement.h +++ b/src/uscxml/plugins/element/file/FileElement.h @@ -32,16 +32,16 @@ namespace uscxml { class FileElement : public ExecutableContentImpl { public: enum Operation { - READ, - WRITE, - APPEND + READ, + WRITE, + APPEND }; enum Type { - XML, - JSON, - TEXT, - BINARY + XML, + JSON, + TEXT, + BINARY }; FileElement() { diff --git a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h index 78929c6..85f5174 100644 --- a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h +++ b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h @@ -36,10 +36,10 @@ class DirectoryWatchMonitor; class DirectoryWatch { public: enum Action { - ADDED = 1, - MODIFIED = 2, - DELETED = 4, - EXISTING = 8 + ADDED = 1, + MODIFIED = 2, + DELETED = 4, + EXISTING = 8 }; DirectoryWatch(const std::string& dir, bool recurse = false) : _dir(dir), _recurse(recurse), _lastChecked(0) {} diff --git a/src/uscxml/plugins/invoker/im/IMInvoker.h b/src/uscxml/plugins/invoker/im/IMInvoker.h index 85c156e..82d5762 100644 --- a/src/uscxml/plugins/invoker/im/IMInvoker.h +++ b/src/uscxml/plugins/invoker/im/IMInvoker.h @@ -47,17 +47,17 @@ extern "C" { namespace uscxml { typedef enum { - PURPLE_BUDDY_NONE = 0x00, /**< No events. */ - PURPLE_BUDDY_SIGNON = 0x01, /**< The buddy signed on. */ - PURPLE_BUDDY_SIGNOFF = 0x02, /**< The buddy signed off. */ - PURPLE_BUDDY_INFO_UPDATED = 0x10, /**< The buddy's information (profile) changed. */ - PURPLE_BUDDY_ICON = 0x40, /**< The buddy's icon changed. */ - PURPLE_BUDDY_MISCELLANEOUS = 0x80, /**< The buddy's service-specific miscalleneous info changed. */ - PURPLE_BUDDY_SIGNON_TIME = 0x11, /**< The buddy's signon time changed. */ - PURPLE_BUDDY_EVIL = 0x12, /**< The buddy's warning level changed. */ - PURPLE_BUDDY_DIRECTIM_CONNECTED = 0x14, /**< Connected to the buddy via DirectIM. */ - PURPLE_BUDDY_DIRECTIM_DISCONNECTED = 0x18, /**< Disconnected from the buddy via DirectIM. */ - PURPLE_BUDDY_NAME = 0x20 /** 4) _imageSeq = 1; - + std::stringstream testImageName; testImageName << "test" << _imageSeq << ".jpeg"; - + URL imageURL(testImageName.str()); imageURL.toAbsolute(_interpreter->getBaseURI()); std::stringstream ssImage; diff --git a/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp b/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp index 0418f8a..5b67f7c 100644 --- a/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp +++ b/src/uscxml/plugins/invoker/xhtml/XHTMLInvoker.cpp @@ -52,6 +52,7 @@ XHTMLInvoker::XHTMLInvoker() { } XHTMLInvoker::~XHTMLInvoker() { + HTTPServer::unregisterServlet(this); }; boost::shared_ptr XHTMLInvoker::create(InterpreterImpl* interpreter) { @@ -210,11 +211,15 @@ void XHTMLInvoker::reply(const SendRequest& req, const HTTPServer::Request& long } void XHTMLInvoker::cancel(const std::string sendId) { + HTTPServer::unregisterServlet(this); } void XHTMLInvoker::invoke(const InvokeRequest& req) { _invokeReq = req; HTTPServer::registerServlet(_interpreter->getName() + "/" + req.invokeid + ".html", this); + if (_url.size() == 0) { + returnErrorExecution("No HTTP server running"); + } #if __APPLE__ # if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR # else diff --git a/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.cpp b/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.cpp index b6dadc9..5ee7357 100644 --- a/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.cpp +++ b/src/uscxml/plugins/ioprocessor/basichttp/BasicHTTPIOProcessor.cpp @@ -134,7 +134,7 @@ bool BasicHTTPIOProcessor::httpRecvRequest(const HTTPServer::Request& req) { if (req.data.hasKey("content")) { const Data& data = req.data["content"]; for(std::map::const_iterator compIter = data.compound.begin(); - compIter!= data.compound.end(); compIter++) { + compIter!= data.compound.end(); compIter++) { if (compIter->first == "_scxmleventname") { reqEvent.name = compIter->second.atom; } else if (compIter->first == "content") { @@ -144,7 +144,7 @@ bool BasicHTTPIOProcessor::httpRecvRequest(const HTTPServer::Request& req) { } } } - + // check whether we can parse it as XML if (reqEvent.content.length() > 0) { NameSpacingParser parser = NameSpacingParser::fromXML(reqEvent.content); diff --git a/src/uscxml/plugins/ioprocessor/comet/CometIOProcessor.cpp b/src/uscxml/plugins/ioprocessor/comet/CometIOProcessor.cpp index cf11ec8..007bd6f 100644 --- a/src/uscxml/plugins/ioprocessor/comet/CometIOProcessor.cpp +++ b/src/uscxml/plugins/ioprocessor/comet/CometIOProcessor.cpp @@ -42,6 +42,7 @@ CometIOProcessor::CometIOProcessor() { } CometIOProcessor::~CometIOProcessor() { + HTTPServer::unregisterServlet(this); } boost::shared_ptr CometIOProcessor::create(InterpreterImpl* interpreter) { diff --git a/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h b/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h index 981410e..fc9142e 100644 --- a/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h +++ b/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h @@ -29,25 +29,25 @@ namespace uscxml { class MMIEvent { public: enum Type { - NEWCONTEXTREQUEST, - NEWCONTEXTRESPONSE, - PREPAREREQUEST, - PREPARERESPONSE, - STARTREQUEST, - STARTRESPONSE, - DONENOTIFICATION, - CANCELREQUEST, - CANCELRESPONSE, - PAUSEREQUEST, - PAUSERESPONSE, - RESUMEREQUEST, - RESUMERESPONSE, - EXTENSIONNOTIFICATION, - CLEARCONTEXTREQUEST, - CLEARCONTEXTRESPONSE, - STATUSREQUEST, - STATUSRESPONSE, - INVALID + NEWCONTEXTREQUEST, + NEWCONTEXTRESPONSE, + PREPAREREQUEST, + PREPARERESPONSE, + STARTREQUEST, + STARTRESPONSE, + DONENOTIFICATION, + CANCELREQUEST, + CANCELRESPONSE, + PAUSEREQUEST, + PAUSERESPONSE, + RESUMEREQUEST, + RESUMERESPONSE, + EXTENSIONNOTIFICATION, + CLEARCONTEXTREQUEST, + CLEARCONTEXTRESPONSE, + STATUSREQUEST, + STATUSRESPONSE, + INVALID }; static Type getType(Arabica::DOM::Node node); @@ -297,10 +297,10 @@ protected: class StatusResponse : public ContextualizedRequest { public: enum Status { - ALIVE = 0, - DEAD = 1, - SUCCESS = 2, - FAILURE = 3 + ALIVE = 0, + DEAD = 1, + SUCCESS = 2, + FAILURE = 3 }; StatusResponse() { diff --git a/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp b/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp index a080ff3..becc00a 100644 --- a/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp +++ b/src/uscxml/plugins/ioprocessor/scxml/SCXMLIOProcessor.cpp @@ -61,6 +61,7 @@ SCXMLIOProcessor::SCXMLIOProcessor() { } SCXMLIOProcessor::~SCXMLIOProcessor() { + HTTPServer::unregisterServlet(this); } diff --git a/src/uscxml/server/HTTPServer.cpp b/src/uscxml/server/HTTPServer.cpp index e5c83d7..9efdc07 100644 --- a/src/uscxml/server/HTTPServer.cpp +++ b/src/uscxml/server/HTTPServer.cpp @@ -596,6 +596,20 @@ bool HTTPServer::registerServlet(const std::string& path, HTTPServlet* servlet) return true; } +void HTTPServer::unregisterServlet(HTTPServlet* servlet) { + HTTPServer* INSTANCE = getInstance(); + tthread::lock_guard lock(INSTANCE->_mutex); + http_servlet_iter_t servletIter = INSTANCE->_httpServlets.begin(); + while(servletIter != INSTANCE->_httpServlets.end()) { + if (servletIter->second == servlet) { + evhttp_del_cb(INSTANCE->_http, std::string("/" + servletIter->first).c_str()); + INSTANCE->_httpServlets.erase(servletIter); + break; + } + servletIter++; + } +} + bool HTTPServer::registerServlet(const std::string& path, WebSocketServlet* servlet) { HTTPServer* INSTANCE = getInstance(); @@ -636,6 +650,20 @@ bool HTTPServer::registerServlet(const std::string& path, WebSocketServlet* serv return true; } +void HTTPServer::unregisterServlet(WebSocketServlet* servlet) { + HTTPServer* INSTANCE = getInstance(); + tthread::lock_guard lock(INSTANCE->_mutex); + ws_servlet_iter_t servletIter = INSTANCE->_wsServlets.begin(); + while(servletIter != INSTANCE->_wsServlets.end()) { + if (servletIter->second == servlet) { + evhttp_del_cb(INSTANCE->_http, std::string("/" + servletIter->first).c_str()); + INSTANCE->_wsServlets.erase(servletIter); + break; + } + servletIter++; + } +} + std::string HTTPServer::getBaseURL(ServerType type) { HTTPServer* INSTANCE = getInstance(); std::stringstream servletURL; @@ -658,20 +686,6 @@ std::string HTTPServer::getBaseURL(ServerType type) { return servletURL.str(); } -void HTTPServer::unregisterServlet(HTTPServlet* servlet) { - HTTPServer* INSTANCE = getInstance(); - tthread::lock_guard lock(INSTANCE->_mutex); - http_servlet_iter_t servletIter = INSTANCE->_httpServlets.begin(); - while(servletIter != INSTANCE->_httpServlets.end()) { - if (servletIter->second == servlet) { - evhttp_del_cb(INSTANCE->_http, std::string("/" + servletIter->first).c_str()); - INSTANCE->_httpServlets.erase(servletIter); - break; - } - servletIter++; - } -} - void HTTPServer::start() { _isRunning = true; _thread = new tthread::thread(HTTPServer::run, this); diff --git a/src/uscxml/server/HTTPServer.h b/src/uscxml/server/HTTPServer.h index 09a31df..398bb12 100644 --- a/src/uscxml/server/HTTPServer.h +++ b/src/uscxml/server/HTTPServer.h @@ -85,9 +85,9 @@ public: }; enum ServerType { - HTTPS, - HTTP, - WebSockets + HTTPS, + HTTP, + WebSockets }; static HTTPServer* getInstance(unsigned short port, unsigned short wsPort, SSLConfig* sslConf = NULL); diff --git a/src/uscxml/server/InterpreterServlet.cpp b/src/uscxml/server/InterpreterServlet.cpp index 2bbb856..3c5c3a0 100644 --- a/src/uscxml/server/InterpreterServlet.cpp +++ b/src/uscxml/server/InterpreterServlet.cpp @@ -23,6 +23,10 @@ namespace uscxml { +InterpreterHTTPServlet::~InterpreterHTTPServlet() { + HTTPServer::unregisterServlet(this); +} + InterpreterHTTPServlet::InterpreterHTTPServlet(InterpreterImpl* interpreter) { _interpreter = interpreter; @@ -85,7 +89,9 @@ void InterpreterHTTPServlet::send(const SendRequest& req) { LOG(ERROR) << "send not supported by http iorprocessor, use the fetch element"; } - +InterpreterWebSocketServlet::~InterpreterWebSocketServlet() { + HTTPServer::unregisterServlet(this); +} InterpreterWebSocketServlet::InterpreterWebSocketServlet(InterpreterImpl* interpreter) { _interpreter = interpreter; diff --git a/src/uscxml/server/InterpreterServlet.h b/src/uscxml/server/InterpreterServlet.h index 9ff1d34..960ff8f 100644 --- a/src/uscxml/server/InterpreterServlet.h +++ b/src/uscxml/server/InterpreterServlet.h @@ -31,7 +31,7 @@ class InterpreterHTTPServlet : public HTTPServlet, public IOProcessorImpl { public: InterpreterHTTPServlet() {}; InterpreterHTTPServlet(InterpreterImpl* interpreter); - virtual ~InterpreterHTTPServlet() {} + virtual ~InterpreterHTTPServlet(); virtual boost::shared_ptr create(InterpreterImpl* interpreter); @@ -82,7 +82,7 @@ class InterpreterWebSocketServlet : public WebSocketServlet, public IOProcessorI public: InterpreterWebSocketServlet() {}; InterpreterWebSocketServlet(InterpreterImpl* interpreter); - virtual ~InterpreterWebSocketServlet() {} + virtual ~InterpreterWebSocketServlet(); virtual boost::shared_ptr create(InterpreterImpl* interpreter); diff --git a/src/uscxml/transform/FSMToPromela.h b/src/uscxml/transform/FSMToPromela.h index 844d209..e507fdc 100644 --- a/src/uscxml/transform/FSMToPromela.h +++ b/src/uscxml/transform/FSMToPromela.h @@ -42,13 +42,13 @@ public: void dump(); enum PromelaInlineType { - PROMELA_NIL, - PROMELA_CODE, - PROMELA_EVENT_SOURCE, - PROMELA_EVENT_SOURCE_CUSTOM, - PROMELA_PROGRESS_LABEL, - PROMELA_ACCEPT_LABEL, - PROMELA_END_LABEL + PROMELA_NIL, + PROMELA_CODE, + PROMELA_EVENT_SOURCE, + PROMELA_EVENT_SOURCE_CUSTOM, + PROMELA_PROGRESS_LABEL, + PROMELA_ACCEPT_LABEL, + PROMELA_END_LABEL }; std::string content; @@ -88,9 +88,9 @@ class USCXML_API PromelaEventSource { public: enum PromelaEventSourceType { - PROMELA_EVENT_SOURCE_INVALID, - PROMELA_EVENT_SOURCE_INVOKER, - PROMELA_EVENT_SOURCE_GLOBAL, + PROMELA_EVENT_SOURCE_INVALID, + PROMELA_EVENT_SOURCE_INVOKER, + PROMELA_EVENT_SOURCE_GLOBAL, }; PromelaEventSource(); diff --git a/src/uscxml/util/Base64.h b/src/uscxml/util/Base64.h index a07d24e..3a6f95d 100644 --- a/src/uscxml/util/Base64.h +++ b/src/uscxml/util/Base64.h @@ -24,37 +24,36 @@ extern "C" { /// DECODE - typedef enum - { - step_a, step_b, step_c, step_d - } - base64_decodestep; +typedef enum { + step_a, step_b, step_c, step_d +} +base64_decodestep; - typedef struct { - base64_decodestep step; - char plainchar; - } base64_decodestate; +typedef struct { + base64_decodestep step; + char plainchar; +} base64_decodestate; - USCXML_API void base64_init_decodestate(base64_decodestate* state_in); - USCXML_API int base64_decode_value(char value_in); - USCXML_API int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in); +USCXML_API void base64_init_decodestate(base64_decodestate* state_in); +USCXML_API int base64_decode_value(char value_in); +USCXML_API int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in); /// ENDCODE - typedef enum { - step_A, step_B, step_C - } base64_encodestep; +typedef enum { + step_A, step_B, step_C +} base64_encodestep; - typedef struct { - base64_encodestep step; - char result; - int stepcount; - } base64_encodestate; +typedef struct { + base64_encodestep step; + char result; + int stepcount; +} base64_encodestate; - USCXML_API void base64_init_encodestate(base64_encodestate* state_in); - USCXML_API char base64_encode_value(char value_in); - USCXML_API int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in); - USCXML_API int base64_encode_blockend(char* code_out, base64_encodestate* state_in); +USCXML_API void base64_init_encodestate(base64_encodestate* state_in); +USCXML_API char base64_encode_value(char value_in); +USCXML_API int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in); +USCXML_API int base64_encode_blockend(char* code_out, base64_encodestate* state_in); #ifdef __cplusplus } diff --git a/src/uscxml/util/MD5.h b/src/uscxml/util/MD5.h index 840c704..5c4d263 100644 --- a/src/uscxml/util/MD5.h +++ b/src/uscxml/util/MD5.h @@ -64,35 +64,35 @@ extern "C" { #endif - /* - * This package supports both compile-time and run-time determination of CPU - * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be - * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is - * defined as non-zero, the code will be compiled to run only on big-endian - * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to - * run on either big- or little-endian CPUs, but will run slightly less - * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. - */ - - typedef unsigned char md5_byte_t; /* 8-bit byte */ - typedef unsigned int md5_word_t; /* 32-bit word */ - - /* Define the state of the MD5 Algorithm. */ - typedef struct md5_state_s { - md5_word_t count[2]; /* message length in bits, lsw first */ - md5_word_t abcd[4]; /* digest buffer */ - md5_byte_t buf[64]; /* accumulate block */ - } md5_state_t; - - - /* Initialize the algorithm. */ - USCXML_API void md5_init(md5_state_t *pms); - - /* Append a string to the message. */ - USCXML_API void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); - - /* Finish the message and return the digest. */ - USCXML_API void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); +/* + * This package supports both compile-time and run-time determination of CPU + * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be + * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is + * defined as non-zero, the code will be compiled to run only on big-endian + * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to + * run on either big- or little-endian CPUs, but will run slightly less + * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. + */ + +typedef unsigned char md5_byte_t; /* 8-bit byte */ +typedef unsigned int md5_word_t; /* 32-bit word */ + +/* Define the state of the MD5 Algorithm. */ +typedef struct md5_state_s { + md5_word_t count[2]; /* message length in bits, lsw first */ + md5_word_t abcd[4]; /* digest buffer */ + md5_byte_t buf[64]; /* accumulate block */ +} md5_state_t; + + +/* Initialize the algorithm. */ +USCXML_API void md5_init(md5_state_t *pms); + +/* Append a string to the message. */ +USCXML_API void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); + +/* Finish the message and return the digest. */ +USCXML_API void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); #ifdef __cplusplus } /* end extern "C" */ diff --git a/src/uscxml/util/SHA1.h b/src/uscxml/util/SHA1.h index f9baa5b..1bbfaf5 100644 --- a/src/uscxml/util/SHA1.h +++ b/src/uscxml/util/SHA1.h @@ -55,31 +55,31 @@ extern "C" { #endif - /* - * This structure will hold context information for the hashing - * operation - */ - typedef struct SHA1Context { - unsigned Message_Digest[5]; /* Message Digest (output) */ +/* + * This structure will hold context information for the hashing + * operation + */ +typedef struct SHA1Context { + unsigned Message_Digest[5]; /* Message Digest (output) */ - unsigned Length_Low; /* Message length in bits */ - unsigned Length_High; /* Message length in bits */ + unsigned Length_Low; /* Message length in bits */ + unsigned Length_High; /* Message length in bits */ - unsigned char Message_Block[64]; /* 512-bit message blocks */ - int Message_Block_Index; /* Index into message block array */ + unsigned char Message_Block[64]; /* 512-bit message blocks */ + int Message_Block_Index; /* Index into message block array */ - int Computed; /* Is the digest computed? */ - int Corrupted; /* Is the message digest corruped? */ - } SHA1Context; + int Computed; /* Is the digest computed? */ + int Corrupted; /* Is the message digest corruped? */ +} SHA1Context; - /* - * Function Prototypes - */ - USCXML_API void SHA1Reset(SHA1Context *); - USCXML_API int SHA1Result(SHA1Context *); - USCXML_API void SHA1Input(SHA1Context *, - const unsigned char *, - unsigned); +/* + * Function Prototypes + */ +USCXML_API void SHA1Reset(SHA1Context *); +USCXML_API int SHA1Result(SHA1Context *); +USCXML_API void SHA1Input(SHA1Context *, + const unsigned char *, + unsigned); #ifdef __cplusplus } diff --git a/test/src/test-datamodel.cpp b/test/src/test-datamodel.cpp index 2dced50..452d2b9 100644 --- a/test/src/test-datamodel.cpp +++ b/test/src/test-datamodel.cpp @@ -18,7 +18,7 @@ int main(int argc, char** argv) { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); #endif - + Interpreter interpreter = Interpreter::fromXML(""); DataModel dm(Factory::getInstance()->createDataModel("ecmascript", interpreter.getImpl().get())); dm.evalAsString("var foo = 12"); diff --git a/test/src/test-lifecycle.cpp b/test/src/test-lifecycle.cpp index d28d1a5..4c044c4 100644 --- a/test/src/test-lifecycle.cpp +++ b/test/src/test-lifecycle.cpp @@ -48,7 +48,7 @@ void __cxa_throw (void *thrown_exception, void *pvtinfo, void (*dest)(void *)) { std::cerr << __FUNCTION__ << " will throw exception from " << std::endl; if (orig_cxa_throw == 0) load_orig_throw_code(); - + void *array[50]; size_t size = backtrace(array, 50); printBacktrace(array, size); @@ -71,204 +71,207 @@ void customTerminate() { }; } catch (const std::exception &e) { std::cerr << __FUNCTION__ << " caught unhandled exception. what(): " - << e.what() << std::endl; + << e.what() << std::endl; } catch (const uscxml::Event &e) { std::cerr << __FUNCTION__ << " caught unhandled exception. Event: " - << e << std::endl; + << e << std::endl; } catch (...) { std::cerr << __FUNCTION__ << " caught unknown/unhandled exception." - << std::endl; + << std::endl; } - + #ifdef HAS_EXECINFO_H void * array[50]; int size = backtrace(array, 50); - + printBacktrace(array, size); #endif abort(); } int main(int argc, char** argv) { using namespace uscxml; - + std::set_terminate(customTerminate); - + #if defined(HAS_SIGNAL_H) && !defined(WIN32) signal(SIGPIPE, SIG_IGN); #endif - + google::InitGoogleLogging(argv[0]); google::LogToStderr(); InterpreterState state; - if (1) { - // syntactic xml parse error - const char* xml = ""; - Interpreter interpreter = Interpreter::fromXML(xml); - state = interpreter.getState(); - assert(!interpreter); - assert(state == uscxml::InterpreterState::USCXML_FAULTED); - std::cout << interpreter.getState() << std::endl; - } + int iterations = 1; - if (1) { - // semantic xml parse error - const char* xml = ""; - Interpreter interpreter = Interpreter::fromXML(xml); - state = interpreter.getState(); - assert(state == uscxml::InterpreterState::USCXML_INSTANTIATED); - - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FAULTED); - std::cout << interpreter.getState() << std::endl; - } + while(iterations--) { + if (1) { + // syntactic xml parse error + const char* xml = ""; + Interpreter interpreter = Interpreter::fromXML(xml); + state = interpreter.getState(); + assert(!interpreter); + assert(state == uscxml::InterpreterState::USCXML_FAULTED); + std::cout << interpreter.getState() << std::endl; + } - if (1) { - // single macrostep, multiple runs - const char* xml = - "" - " " - " " - " " - " " - ""; - - Interpreter interpreter = Interpreter::fromXML(xml); - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - interpreter.reset(); - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - interpreter.reset(); - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - interpreter.reset(); - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - } + if (1) { + // semantic xml parse error + const char* xml = ""; + Interpreter interpreter = Interpreter::fromXML(xml); + state = interpreter.getState(); + assert(state == uscxml::InterpreterState::USCXML_INSTANTIATED); - if (1) { - // two microsteps - const char* xml = - "" - " " - " " - " " - " " - " " - " " - " " - ""; - - Interpreter interpreter = Interpreter::fromXML(xml); - - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - } + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FAULTED); + std::cout << interpreter.getState() << std::endl; + } - if (0) { - // macrostep in between - const char* xml = - "" - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - ""; - - Interpreter interpreter = Interpreter::fromXML(xml); - - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); - assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - interpreter.reset(); - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); - assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - } + if (1) { + // single macrostep, multiple runs + const char* xml = + "" + " " + " " + " " + " " + ""; - if (1) { - // macrostep in between, external event - const char* xml = - "" - " " - " " - " " - " " - " " - " " - " " - ""; - - Interpreter interpreter = Interpreter::fromXML(xml); - - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); - interpreter.receive(Event("continue")); - assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - interpreter.reset(); - assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); - interpreter.receive(Event("continue")); - assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); - assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); - } + Interpreter interpreter = Interpreter::fromXML(xml); + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + interpreter.reset(); + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + interpreter.reset(); + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + interpreter.reset(); + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + } + + if (1) { + // two microsteps + const char* xml = + "" + " " + " " + " " + " " + " " + " " + " " + ""; + + Interpreter interpreter = Interpreter::fromXML(xml); + + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + } + + if (0) { + // macrostep in between + const char* xml = + "" + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + ""; + + Interpreter interpreter = Interpreter::fromXML(xml); + + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); + assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + interpreter.reset(); + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); + assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + } + + if (1) { + // macrostep in between, external event + const char* xml = + "" + " " + " " + " " + " " + " " + " " + " " + ""; + + Interpreter interpreter = Interpreter::fromXML(xml); + + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); + interpreter.receive(Event("continue")); + assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + interpreter.reset(); + assert(interpreter.getState() == uscxml::InterpreterState::USCXML_INSTANTIATED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_IDLE); + interpreter.receive(Event("continue")); + assert(interpreter.step(true) == uscxml::InterpreterState::USCXML_MACROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_MICROSTEPPED); + assert(interpreter.step() == uscxml::InterpreterState::USCXML_FINISHED); + } + + if (1) { + // macrostep in between, external event + const char* xml = + "" + " " + " " + " " + " " + " " + " " + " " + ""; + + Interpreter interpreter = Interpreter::fromXML(xml); + interpreter.start(); + // assume interpreter is started + assert(interpreter.getState() & InterpreterState::USCXML_THREAD_STARTED); + tthread::this_thread::sleep_for(tthread::chrono::milliseconds(100)); + + // assume it is started and running + std::cout << interpreter.getState() << std::endl; + + assert(interpreter.getState() & InterpreterState::USCXML_THREAD_STARTED); + assert(interpreter.getState() & InterpreterState::USCXML_THREAD_RUNNING); + assert(interpreter.getState() & InterpreterState::USCXML_IDLE); + + interpreter.receive(Event("continue")); + tthread::this_thread::sleep_for(tthread::chrono::milliseconds(200)); - if (1) { - // macrostep in between, external event - const char* xml = - "" - " " - " " - " " - " " - " " - " " - " " - ""; - - Interpreter interpreter = Interpreter::fromXML(xml); - interpreter.start(); - // assume interpreter is started - assert(interpreter.getState() & InterpreterState::USCXML_THREAD_STARTED); - tthread::this_thread::sleep_for(tthread::chrono::milliseconds(100)); - - // assume it is started and running - std::cout << interpreter.getState() << std::endl; - - assert(interpreter.getState() & InterpreterState::USCXML_THREAD_STARTED); - assert(interpreter.getState() & InterpreterState::USCXML_THREAD_RUNNING); - assert(interpreter.getState() & InterpreterState::USCXML_IDLE); - - interpreter.receive(Event("continue")); - tthread::this_thread::sleep_for(tthread::chrono::milliseconds(200)); - - std::cout << interpreter.getState() << std::endl; - int state = interpreter.getState(); - assert(state & InterpreterState::USCXML_FINISHED); - assert(!(state & InterpreterState::USCXML_THREAD_STARTED)); - assert(!(state & InterpreterState::USCXML_THREAD_RUNNING)); + std::cout << interpreter.getState() << std::endl; + int state = interpreter.getState(); + assert(state & InterpreterState::USCXML_FINISHED); + assert(!(state & InterpreterState::USCXML_THREAD_STARTED)); + assert(!(state & InterpreterState::USCXML_THREAD_RUNNING)); + } } - return EXIT_SUCCESS; } \ No newline at end of file diff --git a/test/src/test-stress.cpp b/test/src/test-stress.cpp index 6d28829..6782328 100644 --- a/test/src/test-stress.cpp +++ b/test/src/test-stress.cpp @@ -124,6 +124,7 @@ int main(int argc, char** argv) { google::InitGoogleLogging(argv[0]); google::LogToStderr(); + HTTPServer::getInstance(8088, 8089); #ifndef _WIN32 opterr = 0; #endif @@ -150,7 +151,7 @@ int main(int argc, char** argv) { interpreter.interpret(); } #else - + DirectoryWatch* watcher = new DirectoryWatch(argv[optind], true); watcher->updateEntries(true); std::map entries = watcher->getAllEntries(); -- cgit v0.12