Я получаю это сообщение об ошибке при попытке использовать библиотеку Python в Promela и вращаться (скриншот сообщения об ошибке а>):
spin: /usr/include/unistd.h:778, Error: inline text too long near '/usr/include/unistd.h'
Мой код Промела
c_code{
#include "demo1.c" /* the c code written above */
}
bool badstate = false;
active proctype driver()
{
do
:: (1) ->
c_code{
demo_fun();
}
if
:: c_expr{ x == 5 } ->
badstate = true;
:: else ->
skip;
fi;
od;
}
Вот мой файл demo1.c
, который я включаю в свой код Promela:
#include "python2.7/Python.h"
void demo_fun(void)
{
Py_Initialize();
PyRun_SimpleString("import sys; sys.path.insert(0, '/home/zeeshan/Documents/Promela')");
PyObject* pModule = NULL;
PyObject* pFunc = NULL;
pModule = PyImport_ImportModule("hello");
if (pModule == NULL) {
printf("Error importing module.");
exit(-1);
}
pFunc = PyObject_GetAttrString(pModule, "Hello");
PyEval_CallObject(pFunc, NULL);
Py_Finalize();
}
int main()
{
demo_fun();
return 0;
}
Код Python в hello.py
:
def Hello():
a = 5
b = 2
print("hello world " + str(a + b))
Насколько я понимаю, Promela берет код из всех включенных файлов и встраивает его. Размер этого кода становится больше, чем большое число спина после встроенного кода, что приводит к сбою.
Правильно ли я думаю об этом? Как исправить мою проблему и успешно вызвать код Python из моей спецификации Promela?