This repository has been archived by the owner on Dec 11, 2024. It is now read-only.
-
在
其中
好像这里ImplicitCastExpr涉及了很多语义信息,需要判断左值、右值的类型,而非简单嵌套ImplicitCastExpr即可。不知道该如何做到和clang一样的输出,请问助教是否遇到这样的问题,有没有什么好方法解决呢? |
Beta Was this translation helpful? Give feedback.
Answered by
Yorkking
Apr 10, 2022
Replies: 1 comment
-
另外,实际上只有这个例子会涉及到复杂的类型转换,只需要针对该例子修改和 |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
wu-kan
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
100_int_literal.sysu.c
的问题,这里涉及到类型转换的问题,unsigned int 和 int 转换的问题。观察了一下 clang 的语法树得出结论:个人的解决方法是,给每个节点引入一个额外的 type 属性,比如问题中的
const int k2 = 0x80000000 + 1;
, 首先0x80000000
加入"type:unsigned int"
属性,1
加入"type:int"
属性。然后在二元表达式运算的时候,比较两个的type
是否相同,然后按照上述的规则进行类型转换,即插入ImplicitCastExpr
。然后变量声明的时候也做类似的检查type
操作。另外,实际上只有这个例子会涉及到复杂的类型转换,只需要针对该例子修改和
const int k2 = 0x80000000 + 1;
相关的文法即可。