在ANTLR CPP语法中错误解析输入以进行常量减速

问题描述

我正在使用下面的ANTLR语法来解析我的代码

https://github.com/antlr/grammars-v4/tree/master/cpp

但是我的代码下面出现了解析错误

const GstTensorsInfo info_in = {
        .num_tensors = 1U,.info = {{ .name = NULL,.type = _NNS_UINT8,.dimension = { 1,10,1,1}}},};

我将以下输入用于CPP解析器:

TEST(tensor_filter_custom_easy,in_code_func_01)
    {
      int ret;
      const guint num_buffers = 10;
      TestOption option = { num_buffers,TEST_CUSTOM_EASY_ICF_01 };
      guint timeout_id;
    
      const GstTensorsInfo info_in = {
        .num_tensors = 1U,};
      
      ret = NNS_custom_easy_register ("safe_memcpy_10x10",cef_func_safe_memcpy,NULL,&info_in,&info_out);
      ASSERT_EQ(ret,0);
    }

解析器/词法分析器需要进行哪些修改才能正确解析输入?对此,我们将给予任何帮助。预先感谢。

解决方法

designated initializer syntax.num_tensors = 1U)仅在C ++ 20中添加到C ++。您要使用的语法名为“ CPP14”,我想这意味着它是C ++ 14语法。在这种情况下,不接受语法也就不足为奇了。

由于C99以来指定的初始值设定项已成为C的一部分,因此您也许可以在C语法中找到有用的东西。