2013-03-11 23 views
1

原始樣本數據看起來是這樣的:如何使用flex插入一個變量值?

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. 如何將每個列表中的最後一個元素設置爲-1(如果原始數據表示爲neg),並且如果原始數據表示爲pos,則爲1?

回答

0

你把它正確的與<<EOF>>正則表達式。你錯過的唯一的事情是你需要直接或間接終止<<EOF>>代碼塊內的掃描器。

在我的情況下,我使用jflex,我的問題非常簡單,我在默認%獨立模式下使用它。所以我<<EOF>>如下:

<<EOF>> { 
       printJson(System.out); 
       System.out.flush(); 
       System.exit(0); 
      } 

printJson()連載全球數據結構的掃描儀已經建設到指定的文件流。在你的情況下,它聽起來就像一切都簡單的話,你很可能更簡單:

<<EOF>> { 
       printf(" ]\n];;"); 
       flush(stdout); 
       exit(0); 
      } 

如果不是獨立的,你需要返回由任何進程正在調用您的掃描儀產生的適當處理的EOF標記。

祝你好運。

相關問題