【问题标题】:Lex: forcing scan?Lex:强制扫描?
【发布时间】:2011-05-07 04:19:58
【问题描述】:

我正在用 LEX 编写一个相当简单的程序,在解析几个文件后,解析来自用户的输入。

现在,有了这些文件,一切都像魅力一样。但是,当涉及来自标准输入的用户输入时,LEX 规则在发送 EOF(通过 ctrl+D)字符之前不会运行。当我这样做时,LEX 会解析我写的所有内容,然后等待更多输入。第二个连续的 EOF 会终止扫描程序。

问题是,我希望程序对\n 做出反应,输出一些数据。有没有办法从规则内部强制扫描,或以某种方式配置 LEX 缓冲以匹配此行为?

【问题讨论】:

    标签: c++ c lex


    【解决方案1】:

    解决了!这成功了:

    %option always-interactive
    

    我把这个留在这里以备将来参考,以防万一……好吧,谁知道呢。

    【讨论】:

    • 考虑接受您的答案,这样这将显示为已接受的答案。
    • @QuantumMechanic 我已经等了 2 天了 :) 还剩 23 小时
    【解决方案2】:

    这是我用 lex 和 yacc 做的 unix shell 的 sn-p。我认为它会成功的。

    "\n"                    |
    ";"                     {
                            //yylval.sb = getsb(yytext);  for yacc stuff
                            fprintf(stderr,"EOL\n");
                            return(EOL);
                            }
    

    【讨论】:

    • 分号只是为了在shell中的一行上执行多个命令。
    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多