问题标签 [lex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何在 Lex 和 Yacc 中获取整个输入字符串?
好的,这就是交易。
用我的语言,我有一些命令,比如说
在我的 Lex 文件中
在我的 yacc 文件中
我的问题是,我怎样才能得到整个文本
在返回数字的同时进入命令?
另外,当我的 Lex 返回 STRING [0-9a-zA-Z]+,并且我想验证它的长度时,我应该这样做吗
或者实际上在我的 Lex 中有一个令牌,它根据长度返回不同的令牌?
c - 如何初始化 Bison 的 %union 值?
在野牛我有一个工会
我想像这样使用它
在 Lex 中:
而不是
轻松防止内存泄漏
但是我需要一些方法来分配一个 std::string 到 sval 开始。
我怎样才能做到这一点?
parsing - 在 Lex 而不是 Yacc 中处理错误条件?
假设我有一个 lex 正则表达式
如果用户输入
它会匹配
但是如果用户说类似的话
我希望它出错并说“无法识别字符 K,期待 S”
我现在正在做的只是像这样写
然后实质上重新对 Yacc 中的字符串进行词法分析,以便我可以有有意义的错误条件
我怎样才能解决这个问题?
我唯一能想到的是使用命名组?
lex - lex.yy.c 中的“yy”代表什么?
lex.yy.c 中的“yy”代表什么?
c - Flex(lex) 和 Bison(yacc) 的错误处理
来自野牛手册:
在每个输入为一行的简单交互式命令解析器中,允许 yyparse 在错误时返回 1 并让调用者在发生这种情况时忽略输入行的其余部分(然后再次调用 yyparse)可能就足够了。
这几乎是我想要的,但我在上班时遇到了麻烦。基本上,我想检测 flex 中的错误,如果检测到错误,让 Bison 丢弃整行。我现在拥有的东西不能正常工作,因为我的命令仍然被执行:
在我的野牛文件中:
在我的 Flex 中:
c - 如何使用 Flex/Lex 和 Yacc/Bison 进行变量替换
维基百科的插值定义 我只是在学习 flex / bison,我正在用它编写自己的 shell。我正在尝试找出一种进行变量插值的好方法。我最初的方法是对我的主目录或 $myVar 之类的东西进行 flex 扫描,然后使用查找函数将 yyval.string 设置为返回的内容。我的问题是,当文本出现一个标记时,这对我没有帮助:
我对变量的 lex 定义:
然后在我的语法中,我有类似的东西:
有人知道处理这种事情的好方法吗?我对这一切都错了吗?
g++ - 未定义对 'yylex()' 的引用
我正在尝试使用 flex 和 bison 创建一种简单的脚本语言。现在,我只是想让计算器工作。
不过,我无法编译它。当我运行这个makefile时:
在我的 .l 和 .ypp 文件中,我收到此错误:
如果我发出这样的命令all
:
它说它找不到-lfl
。如果我这样做:
它回到undefined reference
错误。
对不起,我对此一无所知。
编辑:我安装了 flex。我尝试将它从 -lfl 更改为 C:/GnuWin32/lib/libfl.a (我正在尝试使用 Windows,因为 Linux 在我的计算机上有奇怪的问题,而且我还没有 Mac),但它仍然有同样的错误。
yacc - yacc/bison 组合字题
我有一个如下的 if 语句
有效,太好了!但我输入了
它也有效:| 我该如何解决?以上应该是 var 名称而不是 if 语句
-edit-没关系,我想通了
compiler-errors - 'yyerror' 的多重定义
使用 Bison(或 yacc)我如何解决错误
我尝试%option noyywrap nodefault yylineno
在顶部编写原型。没运气。
-编辑-
没关系。当我复制粘贴一个示例以使用时,我没有意识到我已经有一个 yyerror 函数。
c - 如何声明 C 字符串数组
我正在为类开发一个简单的 lex 程序,并在其中创建一个非常基本的符号表,只是一个带有线性扫描搜索的字符串数组。我已将其声明为:
我这样使用它:
但是,我一直在 strcmp 调用中遇到段错误。我确定我搞砸了一些超级简单的事情。