Разбор с помощью libclang; невозможно проанализировать определенные токены (Python в Windows)

У меня есть код (взят и адаптирован изВот а такжеВот), который используетlibclang для разбора исходных файлов C ++ в Python (Widnows) и получить все егодекларации, как видно здесь:

import clang.cindex

def parse_decl(node):
    reference_node = node.get_definition()
    if node.kind.is_declaration():
        print(node.kind, node.kind.name, 
              node.location.line, ',', node.location.column, 
              reference_node.displayname)

    for ch in node.get_children():
        parse_decl(ch)

# configure path
clang.cindex.Config.set_library_file('C:/Program Files (x86)/LLVM/bin/libclang.dll')

index = clang.cindex.Index.create()
trans_unit = index.parse(r'C:\path\to\sourcefile\test.cpp', args=['-std=c++11'])

parse_decl(trans_unit.cursor)

Для следующего исходного кода C ++ (test_ok.cpp):

/* test_ok.cpp
 */

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;

int main (int argc, char *argv[]) {
  int linecount = 0;
  double array[1000], sum=0, median=0, add=0;
  string filename;
  if (argc <= 1)
      {
          cout << "Error: no filename specified" << endl;
          return 0;
      }
//program checks if a filename is specified
  filename = argv[1];
  ifstream myfile (filename.c_str());
  if (myfile.is_open())
  {
    myfile >> array[linecount];
    while ( myfile.good() )
    {
        linecount++;
        myfile >> array[linecount];
    }
    myfile.close();
  }

parse&nbsp;метод анализирует как следует и выводит:

CursorKind.USING_DIRECTIVE USING_DIRECTIVE 10 , 17 std
CursorKind.FUNCTION_DECL FUNCTION_DECL 12 , 5 main(int, char **)
CursorKind.PARM_DECL PARM_DECL 12 , 15 argc
CursorKind.PARM_DECL PARM_DECL 12 , 27 argv
CursorKind.VAR_DECL VAR_DECL 13 , 7 linecount
CursorKind.VAR_DECL VAR_DECL 14 , 10 array
CursorKind.VAR_DECL VAR_DECL 14 , 23 sum
CursorKind.VAR_DECL VAR_DECL 14 , 30 median
CursorKind.VAR_DECL VAR_DECL 14 , 40 add
CursorKind.VAR_DECL VAR_DECL 15 , 10 filename
CursorKind.VAR_DECL VAR_DECL 23 , 12 myfile

Process finished with exit code 0

ТЕМ НЕ МЕНИЕ,

для следующего исходного кода C ++ (test.cpp):

/* test.cpp
*/
#include <iostream>
#include <vector>
#include <fstream>
#include <cmath>
#include <algorithm>
#include <iomanip>

using namespace std;

void readfunction(vector<double>& numbers, ifstream& myfile)
{

  double number;
  while (myfile >> number) {
  numbers.push_back(number);}

}

double meanfunction(vector<double>& numbers)
{

  double total=0;
  vector<double>::const_iterator i;
  for (i=numbers.begin(); i!=numbers.end(); ++i) {
  total +=*i; }
  return total/numbers.size();

}

разбор неполный:

CursorKind.USING_DIRECTIVE USING_DIRECTIVE 8 , 17 std
CursorKind.VAR_DECL VAR_DECL 10 , 6 readfunction

Process finished with exit code 0

анализ не может обрабатывать такие строки, какvector<double>& numbers&nbsp;и т.д. и прекращает синтаксический анализ этой части кода.

Я считаю, что проблема похожа на описанную в другомТАК вопрос, Я пытался явно использоватьstd=c++11&nbsp;разбирать аргументы безуспешно. Вответ&nbsp;этого вопроса (хотя это не решило проблему) использование-x c++&nbsp;также предлагается, ноЯ понятия не имею, как добавить это в моем коде выше.

Любой может указать на решение для libclang для синтаксического анализа операторов C ++, как те, что вtest.cpp?

Кроме того, могу ли я сделать так, чтобы он продолжал синтаксический анализ, даже если он получит токен, который он не сможет проанализировать?