腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
如何
管理
bison
中
变量
声明
的
语义
规则
、
、
、
、
我创建了flex文件,并在
Bison
中
为我必须实现
的
一些限制(例如数组、周期
管理
、类
管理
、逻辑算术运算符
管理
等)定义了语法。我在理解
如何
处理
语义
规则
时遇到了问题。例如,我应该处理import语句和
变量
声明
的
语义
,将
变量
添加到符号表
中
,然后处理翻译。文件
的
一部分,其中包含处理import语句和
变量</em
浏览 25
提问于2018-08-29
得票数 0
1
回答
句法指导翻译与
Bison
Parser
的
若干问题
、
、
我混淆了语法导向翻译和用
Bison
编写
的
解析器。(主要
的
困惑是用
Bison
编写
的
解析器是否已经包含语法导向
的
翻译。)我将括号
中
的
上述句子改为(
Bison
如何
实现语法导向翻译,是否附加了$$ = $1 + $3) 动作
中
的
C代码可以引用
规则
与构造$n匹配
的
组件
的
语义
值,后者代表nth组件
的</
浏览 4
提问于2016-04-25
得票数 0
回答已采纳
2
回答
如何
检查Flex/
Bison
中标记
的
语义
值
、
、
我正在尝试使用Flex/
Bison
创建简单
的
Pascal编译器,并且我想检查哪些
语义
值是通过标记存储
的
。我有下面的flex代码:... program: PROGRAM ID LBRACKET identifier_list RBRACKET DELIM declarations subprogram_declarationsFlex和
bison
完全能够识别所有内容,并且可以进行解析,但是如果我想要在代码
中
这样检查令牌值,在它没有任
浏览 0
提问于2018-09-02
得票数 2
回答已采纳
4
回答
Bison
能验证作用域和语法吗?
、
、
、
、
我正在使用Lex/
Bison
创建一个简单
的
脚本语言,它被翻译成C.一个跨编译器。 我知道
Bison
可以验证语法,但是范围
如何
呢?它能验证之前
声明
的
标识符吗?必须手动完成吗?如果是的话,在哪一步?这在语法上是正确
的
。但is不应该编译,因为消息在错误
的
范围内。此外,从未
声明
过message2。
浏览 1
提问于2012-03-06
得票数 2
回答已采纳
1
回答
如何
使用flex/
bison
进行
语义
检查?
、
、
、
、
我在
bison
中
创建了一个上下文无关语法,在flex
中
创建了一个scanner。现在我还想做一个
语义
检查,例如,假设输入是这样
的
:c=c+5; 此输入在语法上是正确
的
,但使用了一个未
声明
的
变量
,即"c“。我怎么做这样
的
语义
检查呢?我应该从哪里开始呢?我应该用flex还是
bison
写我
的
代码?如果有人能帮上忙我将不胜感激。谢谢。
浏览 0
提问于2013-03-28
得票数 4
2
回答
变量
声明
中
的
移位/减少冲突
、
、
我正在使用
bison
将解析器写到类似C
的
语法
中
,但在
变量
声明
方面我遇到了问题。var : NAME /* NAME is a string */ | var
浏览 3
提问于2015-03-01
得票数 0
回答已采纳
1
回答
在符号表
中
,
如何
将
变量
标记到范围之外?
、
、
、
我使用
的
是
bison
,但是在这个结构
中
,当
变量
超出范围时很难处理。 在源语言中,在整个主函数
中
只能有一个同名
变量
,它很好,但是有一个问题我无法解决。我不能这样做c++代码,因为c++编译器会抛出
语义
错误:“var”没有在这个范围内
声明
。如果
声明
的
变量
超出了作用域,我必须抛出
语义
错误。我阅读了大量关于符号表
的
教程,但没有一个能正确解释
如何
在
浏览 5
提问于2022-03-23
得票数 0
回答已采纳
1
回答
Bison
语句.解析块语句之前设置符号表
、
、
在我
的
语言中,我能够在当前符号表作用域中
声明
一个
变量
,并创建一个if语句,该语句将为其语句生成一个新
的
符号表作用域。
bison
进入语句
的
if语句块之前设置一个新
的
作用域。例如,semanticAnalyzerParser->enterScope("if statement scope");,以便当识别用于
声明
变量
的
语法时,它将使用semanticAnalyzerParser但是,由于
浏览 8
提问于2021-02-12
得票数 0
回答已采纳
1
回答
使用
bison
的
逗号分隔值
的
语义
、
、
我试图给一组逗号分隔值赋予一个
语义
值。实际上,我已经使用以下命令定义了
bison
的
缩减
规则
| commasv "," exp问题是,我想存储列表以便使用它,例如,在函数调用
中<
浏览 2
提问于2013-02-03
得票数 0
1
回答
无法通过简单
的
Bison
语法文件语法错误对%define指令
、
我使用
Bison
2.4.1和Flex 2.5.35创建语言解析器。然而,我被
Bison
困住了,它给了我3个小时
的
同样
的
错误,我不明白原因。我试图定义语法和语法
语义
。这并不是说我自己编写了所有的代码,我遵循了中报告
的
例子。 之前
的
语义
,一切都好:也请注意,到目前为止,我
的
语法
规则
还没有定义任何操作。所以它们只是一堆非常简单
的
规则
。此外,在添加
语义
之前,我通过
浏览 2
提问于2013-10-12
得票数 2
回答已采纳
1
回答
关于flex /C
的
两个快速问题
、
在这里,这两个函数是在我
的
主C文件
中
的
flex生成
的
lev.yy.c
中
定义
的
。到目前为止,我是但看起来很可疑。我该怎么做才能达到正确
的
C方式呢?其次,我希望我
的
.l文件
的
最后一行,不再返回"WORD“令牌,而是返回其输入。举个例子(它是一个小型
的
linux sh
浏览 3
提问于2014-02-05
得票数 1
回答已采纳
2
回答
解析
Bison
/YACC .y文件而不解析所有C语言
、
、
我想解析
Bison
/YACC .y文件
中
的
语法定义。
规则
的
语法非常简单(我可以忽略语法
规则
部分之外
的
所有内容),我不需要有关
语义
操作
的
信息。然而,即使要跳过这些操作,似乎也需要解析任意C代码片段来确定{...}块
的
结束位置(因为您可以使用嵌套块等)。 有不需要解析C
的
快捷方式吗?我想解决方法之一是要求
Bison
本身去掉所有回调,然后将语法
规则
留在文件<e
浏览 3
提问于2015-01-17
得票数 2
回答已采纳
1
回答
具有十进制数
的
flex输出问题
、
我正在用Flex和
Bison
编写一个小型浮点数计算器。到目前为止,我
的
代码如下: Flex代码# include "prb1.tab.h"%} "+" { return ADD; }{}{} 我
的
问题是<em
浏览 0
提问于2018-11-15
得票数 0
回答已采纳
1
回答
Bison
3.5.1坚持在C样式联合
的
情况下显式地为默认操作编写代码
、
我之前使用
的
bison
(2.4.1)没有为使用它
的
每个
语义
规则
显式地编写默认操作--而是可能只为$$分配$1一次,而不考虑所有默认操作
规则
的
任何类型。
Bison
3.5.1坚持自己将其抛出--假设堆栈是由C样式
的
联合组成
的
。我
的
解决办法是显式地编写默认
的
语义
操作,无论它在哪里使用。我已经回顾了过去<e
浏览 1
提问于2020-11-23
得票数 1
回答已采纳
1
回答
是否可以切换到其他
规则
、
、
、
我
的
理解是,在Lex/
Bison
中
,词法分析由lex完成,语法分析由
Bison
的
规则
完成,
语义
分析由
Bison
的
操作完成。 那么,是否有可能从
语义
分析,即动作,回到语法分析?但我希望将"i=i+1“减少为"i++",并将"i=i+2”作为第二个
规则
。identifier_plusplus
的
情况下,它可能非常强大。EDIT :举个例子
浏览 14
提问于2019-12-01
得票数 0
1
回答
如何
使用%union并修复“在操作中使用
的
语义
值但尚未
声明
类型”警告
、
、
、
我在scanner.lex use
的
parser.hpp文件
中
定义了YYSTYPE#define YYSTYPE Atom {int i_value; string *str_value;} atom_t; Type
浏览 2
提问于2020-05-22
得票数 0
回答已采纳
1
回答
使用
bison
定义作用域
的
语言
的
编译器
、
、
我正在尝试为自定义
的
基于C
的
语言开发一个编译器,它支持使用C++和flex +
bison
定义
变量
的
作用域。我做了一个词法分析器和解析器,但我在解决作用域问题时遇到了麻烦。我已经在
bison
解析器文件
中
实现了
语义
操作。expr RIGHT_PAREN LEFT_CBRACE stmts RIGHT_CBRACE { $$ = new WhileStatement($3, *$6); }我遇到
的
问题是,何时
浏览 6
提问于2015-07-13
得票数 2
2
回答
如何
在xtext DSL
中
嵌入C++代码?
、
、
、
在Xtext/ANTLR
中
处理C++代码块
的
正确方法是什么?然后将其交给外部工具以处理进一步
的
编译/链接步骤,因此我们不会从eclipse生成任何代码。 这里
的
问题是
如何
处理这些C++代码块,特别是考虑到它们可能包含它们自己
的
大括号。在我们基于
bison
/flex
的
工具
中
,这是通过在解析器和词法器之间共享一个
变量
来实现
的
,该
变量
在某些语法
规则<
浏览 4
提问于2016-03-04
得票数 3
回答已采纳
1
回答
创建AST后
的
语义
检查
、
、
、
、
我创建了一个扫描器和一个解析器(分别使用flex和
bison
)和AST来实现Java翻译器。我不明白
如何
管理
AST
中
的
语义
操作(类型检查、
变量
声明
检查,.),即在哪里插入实现这些检查
的
函数,以及
如何
将符号表(我创建
的
)连接到AST。例如,考虑到解析器
中
的
这一生成: : Variable
浏览 2
提问于2018-09-27
得票数 0
1
回答
从flex/
bison
中
释放在strdup()中分配
的
字符串
、
、
、
、
我有使用strdup()复制字符串flex
的
flex代码。在本文中:,我在yacc文件
中
添加了%destructor { free($$); printf("free");} STRING。但是,即使为free()分配了从strdup()返回
的
新字符串,我也没有看到调用strdup()。我认为使用静态分配
的
sval如下所示: int ival;
浏览 3
提问于2015-06-28
得票数 7
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Python中的变量,该如何命名?熟记这些规则即可
Python中变量名的命名规则与引用
如何理解html中语义化的定义
深入理解 ES6 中的变量声明:let、var 和 const
Python 中的变量如何定义和使用
热门
标签
更多标签
云服务器
ICP备案
腾讯会议
云直播
对象存储
活动推荐
运营活动
广告
关闭
领券