LEX- yylineno返回1

时间:2015-07-20 19:19:24

标签: c lex

我在网上尝试了很多解决方案。我尝试过的解决方案之一来自此链接:Flex yylineno set to 1

但它们似乎都不适合我生成符号表的代码。 Source Count Media 37 Paid 10 Organic 15 值不会发生变化。它继续显示1

我在输入文件中提供的输入是:

yylineno
  

这是我的代码段:

main()

while

varrrr

if

另外,我说的是lex,而不是yacc。虽然类似,但我试过yylineno has always the same value in yacc file 但解决方案对我没有用!

1 个答案:

答案 0 :(得分:2)

其他问题表明Flex可以通过yylineno指令自动管理%option yylineno。然而,这是Flex与经典Lex相比的扩展。

假设您无法升级到Flex, 你可能需要更换你的规则

\n { }

\n { yylineno++; }

顺便说一句,打印最适合格式字符串末尾的换行符。当换行“打印”时,通常刷新缓冲输出 - 因此输出不一定会出现,直到你打印换行后。除非您的行不完整,否则计划在格式字符串的末尾写入换行符。只有当你需要对输出进行双倍空间处理时才需要开头的新行(或者你担心其他人已经习惯用换行符来结束输出)。