LEX- yylineno 返回 1

2024-06-08

我尝试了很多网上给出的解决方案。我尝试过的解决方案之一来自此链接:Flex yylineno 设置为 1 https://stackoverflow.com/questions/13317634/flex-yylineno-set-to-1

但它们似乎都不适合我生成符号表的代码。 这yylineno值不会改变。一直显示1

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

main()

while

varrrr

if

这是我的代码片段:

%%

{pound}{includekey}{openarrow}{alpha}+{closearrow}              
{printf("\n %s : Preprocessor Directive at line no: %d!", yytext, yylineno); newfunction(yytext,"Preprocessor",yyleng);}

{mainkey}{openpara}{closepara}                          {printf("\n %s : Main function found at line no: %d! ", yytext, yylineno); newfunction(yytext,"main",yyleng);}

{alpha}[{underkey}|{alpha}|{digit}]+{openpara}{closepara}           {printf("\n %s : Userdefined function without parameters found at line no: %d!", yytext, yylineno);newfunction(yytext, "function",yyleng);}

{conditional}                                   {printf("\n %s : If statement encountered at line no: %d!", yytext, yylineno);newfunction(yytext,"if", yyleng);}

{control}                                   {printf("\n %s : Control statement encountered at line no: %d!", yytext, yylineno);newfunction(yytext,"control", yyleng);}

{datatypes}                                 {printf("\n %s : Datatype found at line no: %d!", yytext, yylineno);newfunction(yytext, "datatype", yyleng);}

{alpha}*                                    {printf("\n %s : Variable found at line no: %d!", yytext, yylineno);newfunction(yytext, "variable", yyleng);}

{operators}                                 {printf("\n Operator %s found at line no: %d!", yytext, yylineno );}

\n                                      { }

.                                       {printf("\n Unexpected character!");}


%%

另外,我说的是 lex,而不是 yacc。虽然类似,但我已经尝试过yylineno 在 yacc 文件中始终具有相同的值 https://stackoverflow.com/questions/16443056/yylineno-has-always-the-same-value-in-yacc-file但该解决方案对我不起作用!


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

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

\n { }

with

\n { yylineno++; }

顺便说一句,在格式字符串末尾使用换行符进行打印效果最好。当“打印”换行符时,缓冲的输出通常会被刷新 - 因此输出不一定会出现,直到您打印后面的换行符。计划在格式字符串的末尾写入换行符,除非您有不完整的行。仅当您需要将输出加倍时才需要在开头添加换行符(或者您担心其他人草率地以换行符结束输出)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LEX- yylineno 返回 1 的相关文章

随机推荐

  • Windows 上的虚假唤醒。是否可以?

    我最近学习了 虚假唤醒 有人说这个问题只可能发生在某些类型的 Linux PC 上 我用的是窗户 我为虚假唤醒编写了测试 我得到的结果是这是可能的 但我想向您展示这个测试 也许我在某个地方犯了错误 我的初始变体 import java ut
  • 在 SSE 和 AVX512 寄存器之间移动数据?

    我想将四个 xmm 寄存器移动到一个 zmm 寄存器中 使用 AVX512 指令执行一些计算并将结果返回到 XMM 寄存器 不通过内存来做到这一点的最有效方法是什么 None
  • ExtJs4 Json TreeStore?

    我正在将 ExtJs3 应用程序迁移到 ExtJs4 在 ExtJs3 中 我有一个树网格 它有一个加载器来加载树数据 如下所示 loader new Ext tree TreeLoader dataUrl Department Depar
  • 找到一个带有标签的非活动游戏对象?

    有没有办法找到带有标签的不活动游戏对象 有答案说不 这是不可能的 但那是在 2013 年 最近有什么变化可以做到这一点吗 public GameObject FindWithTag void Update FindWithTag GameO
  • TDD研究

    我知道北卡罗来纳州立大学对 TDD 做了一些研究 他们发表了一篇论文 名为 工业测试驱动开发的初步调查 http collaboration csc ncsu edu laurie Papers TDDpaperv8 pdf NCSU 的其
  • 未知的 MySQL 服务器主机 (PHP)

    当尝试连接到我的数据库服务器时 我遇到了以下问题未知主机 Warning mysqli mysqli mysqli mysqli HY000 2005 Unknown MySQL server host xxxxxxxxxxxxx port
  • 使用 select_ 和starts_with R

    为什么这段代码不起作用 mtcars gt select starts with d Error in eval expr envir enclos could not find function starts with 这是简化的示例 我
  • 运行简单的源 LLVM 传递时出现问题

    我一直在尝试编写一个 LLVM Pass 以下混合this http llvm org docs WritingAnLLVMPass html and this http llvm org docs CMake html cmake out
  • Recyclerview 和处理不同类型的行膨胀

    我正在尝试与新的工作RecyclerView 但我找不到一个例子RecyclerView不同类型的行 卡片视图变得膨胀 With ListView我覆盖getViewTypeCount and getItemViewType 用于处理不同类
  • 让BackgroundWorker按顺序执行多个操作而不冻结表单

    我已经问过一个有点类似的问题here https stackoverflow com questions 1880500 refresh form controls with external program output但我现在有一个后续
  • 使用 set /p 更新批处理脚本的变量始终包含最后一个值

    我正在尝试使用 set p 命令在循环内调整 Windows 批处理变量 键盘输入后 变量仍然包含旧值 我读到通过 set p 设置的变量仅具有本地范围 但我不明白 本地 在这里的真正含义 echo off setlocal EnableD
  • 在逻辑回归中使用排名数据

    当我努力学习这些概念时 我将对此给予最大赏金 我正在尝试在逻辑回归中使用一些排名数据 我想使用机器学习来制作一个简单的分类器来判断网页是否 好 这只是一个学习练习 所以我不期望有很好的结果 只是希望学习 过程 和编码技术 我已将数据放入 c
  • 面试问题 - 在排序数组 X 中搜索索引 i,使得 X[i] = i

    昨天面试时 我被问到了以下问题 考虑一个 Java 或 C 数组X它已排序并且其中没有两个元素是相同的 如何最好地找到索引i这样该索引处的元素也是i 那是X i i 作为澄清 她还给了我一个例子 Array X 3 1 0 3 5 7 in
  • 从 shell 脚本调用 Perl,如何将返回值从 Perl 传递到 shell?

    我成功地从 shell 脚本调用 Perl 脚本 现在我想将 Perl 脚本的返回值传递给 shell 脚本 指示它是否成功 我该怎么做呢 只需使用适当的退出值退出 Perl 脚本即可 exit exit value exit 0 if p
  • 如何在实体框架中保存子关系实体

    我有一个实体框架 v1 项目 我有两个实体 角色和权限 它们彼此之间具有多对多关系 我传入一个要保存的对象 通过 WCF 调用 我自己不从上下文创建它 该对象在多对多关系中具有新条目 我使用 context ApplyPropertyCha
  • 读取静态库中的.pch文件

    我正在创建一个静态库并添加我想要向其他项目公开的所有项目文件 现在 我有一个 pch 文件 其中包含将在整个应用程序中使用的大部分 import 语句 编译此静态库时 由于缺少导入语句 我收到错误 我尝试在 复制标头 和 复制源 中复制 p
  • Hyperledger Fabric 中默认块的大小是多少?

    如果我使用 hyperldger 创建一个新的区块链 我会尝试创建一个链大小的估计 为了了解磁盘空间使用情况 我想知道超级账本结构中默认块的平均大小 先谢谢你了 此致 您可以在下面找到为订购服务提供的默认配置 您实际上可以控制块大小Batc
  • 将 TimeSpan 格式化为时区偏移量

    我怎样才能格式化TimeSpan对象看起来像时区偏移 如下所示 0700 or 0600 我在用着获取Utc偏移量 http msdn microsoft com en us library system timezone getutcof
  • 无法使用 ASP.NET 会话状态提供程序连接到 Redis 服务器

    一段时间以来 我一直在尝试用 Redis 替换 ASP NET Session 多个小时与适用于 Redis 的 Microsoft ASP NET 会话状态提供程序 http blogs msdn com b webdev archive
  • LEX- yylineno 返回 1

    我尝试了很多网上给出的解决方案 我尝试过的解决方案之一来自此链接 Flex yylineno 设置为 1 https stackoverflow com questions 13317634 flex yylineno set to 1 但