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 に答える