@artihorror Вы, видно, не утрудились вникнуть в мой ответ.
Разжевать? Вот фрагмент кода парсера, который извлекает имена глобальных переменных:
std::regex pieces_regex("PSet\\(\\s*\\\"basglobal\\\"\\s*\\,\\s*(\\\"[^\\\"]+\\\")");
Если убрать лес экранирующих символов, то получим:
PSet\(\s*"basglobal"\s*\,\s*("[^"]+")
Регексы читать умеете? Этот регекс даже не читает всю строку, где находится PSet. Его задача - вытащить имя переменной с помощью подгруппы в конце:
("[^"]+")
Что будет, если применить всё это к вашему:
w = 'PSet("basglobal", "'+q+'", "12345");';
?
Правильно:
'+q+'
Для тех, кто в танке. BAS ожидает, что в скрипте всё, что относится к PSet, будет только в виде:
PSet("basglobal", "NAME", val)
То, что версия в гитхабе августовская - нерелевантно. Лично я из того, что мне было нужно, не нашел только часть с Node.js. Остальное в последней версии работает в полном соответствии с исходниками с гитхаба.