c - 如何从 flex 文件中读取规则(定义)?
问题描述
我一直在我的 .l 文件中创建令牌定义。由于数据量很大,它变得有点乏味。有没有办法从包含所有名词的文件中读取所有单词,例如 noun.txt 并给它们一个单一的标记。
基本上,我想自动化这部分:
%%
[\r\n] {;return T_QUIT;}
"morning"|"flight" {return NOUN;}
"I"|"him" {return PRO;}
"a" {return DET;}
"prefer"|"play"|"love" {return VERB;}
"Los Angeles"|"ali"|"home" {return PNOUN;}
"on"|"at" {return PRE;}
"exit" {return T_QUIT;}
"quit" {return T_QUIT;}
%%
解决方案
flex生成代码,因此您无法noun.txt
在执行时阅读并让它们直接由flex管理,如果这是您所期望的
当然,您可以使用flex读取标识符/单词(字母序列)并以特殊方式将已知的名词管理noun.txt
到正文部分({...})与标识符相关联。但是在那种情况下,使用flex的兴趣非常有限,并且您对“洛杉矶”内部有空间的情况有疑问(但可能是“洛杉矶”?)
您还可以编写一个生成 flex 文件的生成器noun.txt
,让它们直接由flex管理。如果 nous 不必随时更改,这可能是最好的方法。您的flex定义非常简单且易于生成。
推荐阅读
- google-apps-script - Google 表格脚本:使用 executeQuery() 将单元格值作为变量
- java - Java中字符串与整数的比较
- java - 控制器方法上的@Transactional 不会回滚事务,但服务方法上会
- r - 我想在 if else 循环中从一行写入两个不同的列
- javascript - 将带有内容的文件保存为带有 NaN 内容的数字结果
- kotlin - 如何使用 Kotlin/Native 从/向控制台读取/写入?
- python - 迭代一个 MD 数组
- spring-batch - Spring-batch:在面向块的处理中重复步骤
- javascript - 是否可以在 Express 中为给定的模板引擎添加全局渲染回调?
- android - 从自定义类获取时间戳