Tag: 规则

是否有可能为规则设定优先级以避免“最长最早”的匹配模式?

另一个简单的问题:是否有任何方法可以告诉flex更喜欢匹配较短事物的规则与匹配较长事物的规则? 我找不到任何关于这方面的好文件。 这就是我需要的原因:我为一个伪语言解析一个文件,其中包含一些与控制指令相对应的关键字。 我希望它们是绝对的优先级,这样它们就不会被解析为表达式的一部分。 我实际上需要这个优先级的东西,因为我不需要为我的项目写一个完整的语法(在我的情况下,因为我对解析的程序执行结构分析,我不需要知道细节,这将是完全矫枉过正的… 。),所以我不能使用精细的语法调整来确保这些块不会被解析成表达式。 任何帮助将不胜感激。 以下是解析文件的示例: If a > 0 Then read(b); Endif c := “If I were…”; While d > 5 Do d := d + 1 Endwhile 我只想收集关于Ifs,Thens,Endifs等的信息……其余对我来说无关紧要。 这就是为什么我喜欢Ifs,Thens等…相关规则要优先考虑而不必编写语法。

如何在C中构造#includes

假设我有一个C程序,它被破坏为一组* .c和* .h文件。 如果一个文件中的代码使用另一个文件中的函数,那么我应该在哪里包含头文件? 在使用该函数的* .c文件中,或在该文件的标题内? 例如,文件foo.c包含foo.h ,其中包含foo.c所有声明; 对于bar.c和bar.h 。 foo.c函数foo1()调用bar1() ,它在bar.h声明并在bar.c定义。 现在问题是,我应该在foo.h包含bar.h还是在foo.c ? 对于这些问题,一套好的经验法则是什么?