`Yacc`如何识别函数调用?

时间:2015-07-21 12:34:25

标签: yacc

我试图找出yacc如何识别C代码中的函数调用。例如:如果有一个函数调用,如 my_fun(a,b);然后该声明减少到哪些规则。 我正在使用cGrammar:C Grammar

按照那里手动给出的语法;我发现翻译单元只有两个选择。一切都必须是函数定义或声明。现在所有声明都启动了type_specifiers,storage_class_specifier等,但它们都没有以IDENTIFIER开头

现在,在函数调用的情况下,名称将是IDENTIFIER。这让我不清楚它将如何被解析以及将使用哪些规则?

1 个答案:

答案 0 :(得分:0)

根据此处指定的官方yacc规范yacc,一切都由用户给定的例程处理。当您有一个函数调用时,当然名称是 IDENTIFIER 。它使用用户定义的过程进行解析。根据规范,用户可以根据单个输入字符或术语来指定输入。更高级别的结构,如名称和数字。用户提供的例程还可以处理诸如注释和延续约定之类的惯用功能,这通常会违反简单的语法规范。

请看一下。在这里提问之前,你应该做一个彻底的研究。