2017-10-29 58 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规范比你已经显示,因为我不跟随“之间的空间“和”厨房“和”厨房“和”是“正在处理。空间是否在其他地方消耗?他们是否被默认模式丢弃?