代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

“ss”从何处设置flex输入以来自命令行参数?

  •  0
  • Tim unnamed eng  · 技术社区  · 6 年前

    我听到了 ss uses Bison to parse command line arguments . Bison从output Flex获取输入。默认情况下,Flex从stdin获取输入。在哪里 党卫军 将flex输入设置为来自命令行参数?

    1 回复  |  直到 6 年前
        1
  •  1
  •   rici    6 年前

    野牛叫声 yylex() 无论何时它需要一个标记。的返回值 yylex() 是一个小整数,它是用 %token 在野牛语法中,或除0以外的字符常数,或表示EOF的0。

    yylex() 还必须:

    • 将标记的语义值保存在全局变量中 yylval ,如果令牌具有语义值;并且

    • 在全局变量的输入流中保存标记的位置 yylloc ,如果解析器操作使用位置信息。

    您可以使用 flex 命令行工具。但你没有义务这么做。您可以使用其他工具生成扫描仪。或者你可以定义 yylex() 发挥你自己的作用。扫描器的接口尽可能简单,以简化实现。

    许多工具,包括 ss 使用一个手工编码的词法分析器。所以你的问题的答案是 党卫军 永远不要设置flex输入,因为它不使用flex。(事实上,这是可能的并不一定使它成为一个好主意。许多手写扫描器比 弯曲 ,而且代码冗长且难以解释。)


    其他接口

    以上是 yyparse yylex . 还有其他选择:

    推荐文章