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

How does `Yacc` identifies function calls?

我想弄清楚 yacc 如何识别 C 代码中的函数调用。例如:如果有一个像 my_fun(a,b) 这样的函数调用;那么这条语句归结为哪些规则。 我正在使用存在于:C Grammar

中的 cGrammar

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

开头

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

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

在此处提出问题之前,请务必look.By 进行彻底的研究。