0

原始样本数据如下所示:

neg      
test  
-1.0 1.0    
-2.1 3.45

我必须使用 flex 将其转换为可识别的 ocaml 输入列表,如下所示:

let test  
=[  
[ -1.0 ; 1.0 ; 1.0; -1.0 ];  
[ -2.1 ; 3.45 ; 1.0; -1.0 ]  
];;

我可以将其转换如下:

let test  
=[  
[ -1.0 ; 1.0 ; 1.0 ; ]; 
[ -2.1 ; 3.45 ; 1.0 ; ]
];;

我的主要问题是:

  1. 如果原始数据显示为 neg,如何将每个列表中的最后一个元素设为 -1,如果原始数据显示为 pos,则设为 1?
4

1 回答 1

0

我认为您需要添加某种形式的解析。看看 Bison,它与 flex 集成得很好。所以你会得到一些看起来像这样的规则。

let_expression: "neg" identifier vector_list
{
//Finalize by printing stored data and add -1
}
              |  identifier vector_list
{
//Finalize by printing stored data and add 1
}

vector_list: vector_list vector
{
  //Store your number pairs in a std::vector<std::pair<T,T>>
}
           | vector
{
  //Initialize the vector list.
}

vector: const_num const_num
{
  //Store your numbers, maybe in a std::pair
  $$ = std::make_pair($1,$2)
}
于 2013-03-11T23:01:11.040 回答