2017-10-29 177 views
-1

我想用特定語法解析文本文件。使用lex解析文本

文件的內容會像

The Living Room is a room. 

我在法

The   return THETOK; 
[a-zA-Z]*  return ROOMNAME; 
"is a room." return ISROOMTOK; 

而在YACC文件我已經寫了寫了下面的標記以下

command: THETOK ROOMNAME ISROOMTOK 
      { 
       printf($2); 
      } 

這是工作的文字,如

The kitchen is a room. 

但不能提前工作

The Living Room is a room. 

感謝。 #TIA

+0

* yacc *進行解析。 * lex *進行詞法分析。清楚。你的語法不允許你嘗試使用的語法,而你的詞法分析器是否有任何可以識別「活着」的規則。 – EJP

+0

它不一定只有生活它可以是任何名稱,如廚房,大廳,臥室等。語法是這樣的:是一個房間。需要以這樣的方式實現,可以有空格。 – user990967

+1

我需要一個比這更嚴格的規範。 – EJP

回答

0
[a-zA-Z ]*  return ROOMNAME; 

將匹配空格到您的令牌ROOMNAME。 (但它也將匹配您的整個輸入字符串,除了期間。)

但是,我不知道是否有更多的你的lex規範比你已經顯示,因爲我不跟隨「之間的空間「和」廚房「和」廚房「和」是「正在處理。空間是否在其他地方消耗?他們是否被默認模式丟棄?