如何使用Flex和Bison(LEX/YACC)在输出文件中设置线路宽度



我正在尝试使用Flex和Bison为格式化语言创建一个简单的编译器。页面设置信息指定为输入文件中的以下内容:

pagesetup{2,80}

第一个整数与我的问题无关。第二个(80)是线宽。在输出文件中,

  1. 我希望(使用此示例)在一行(计数空间)上打印80个字符并在下一行上继续打印时,我希望插入一条新行。
  2. 我希望能够在输出文件中集中某些行(例如标题)。

在我的.y文件中,我有:

pageSetupProperty: BSLASH PAGESETUP LBRACE INTEGER COMMA INTEGER RBRACE;

第二个整数是我需要使用的整数,我将其yylval设置为正确与其整数值相对应。

但是,我在这一点上被困。我已经搜索了野牛文档,并因此找到了线宽度功能,但是我找不到方法。

它不需要野牛功能。您的解析器输出的所有内容都是您在用C中写入的动作中输出的(野牛没有输出任何内容或与输出有关)。只要计算这些字符串您自己的时间。这只是一个编码问题,与野牛完全无关。

和:

没有行宽度功能。 flex bison 根本没有产生输出文件,更不用说具有线宽的功能了。生产输出取决于您在生产动作中所写的任何代码,其行宽度也是如此。

也是如此。

全部信用授予Brian Tompsett和EJP,以提供评论中的完整答案。

在此处根据SE策略的评论得出的答案。

最新更新