C语言的词法分析(基于正则词法)能区别*号做乘号和解引用号的情形吗?

如果能,怎样区别?
要是*后面跟着标识符的话,那么2种情况都有可能。如 “3*id” 和 “*p”,其中id和p都是标识符,但*号在两个地方的意义不同。

或者词法分析阶段无法分析,必须当做记号“星号”输出给语法分析器

编译器会识别出来的;
*号作为取值运算符时,优先级比作为乘号时要高;

所以编译器会根据后面的标识符是否是指针类型做判断,例如:
int *p = NULL;
int a = 3 * p; //编译器报错,非法指针运算
int a = 3 * *p; //正确

至于你定义的id是什么类型就出现什么样的提示的。追问

当然能识别……
问题是【词法分析】阶段能识别吗?
词法阶段能知道后面的标识符是指针类型吗?

如果能,怎样实现的?

追答

因为没有学过编译原理,看了下资料,觉得词法分析只是将字符序列转换为单词(Token)序列的过程,供语法分析器调用。

语法分析器才判断对错~不知道是不是这样理解呢~~

温馨提示:答案为网友推荐,仅供参考
相似回答