在 YACC 中如何解释这条规则? "::" { yycolumn + = yyleng; return (TYPESEPnumber); }



我必须修复一个用yacc(解析器生成器(编写的程序,以便与提供的文件"lexer.l"一起工作,以创建一个小型解释器(我无法对lexer.l进行任何更改(。而且,我在lexer.l文件中发现了这一行,我不知道如何解释

以下是未知的规则。。。

%%
"::" { yycolumn + = yyleng; return (TYPESEPnumber); }
%%

有人能帮我了解"::"在这种情况下是如何工作的吗?因此,以下测试程序应该有效:程序xx是{

a :: int;
a = 5;
print "My job is to test the print function. Here is an int: " , 55 , " and the 
value of var a: " , a;

}

如果测试文件像这样简单,我可以让我的yacc解释器工作文件:

int a;
a = 5;
etc etc..

但不是在我的测试文件中的CCD_ 2行。帮助非常感谢。

这意味着令牌::被作为TYPESEPnumber发送到解析器。(我不知道为什么有人会在令牌id的末尾添加number。(

因此,我希望解析器的序言包括:

%token TYPESEPnumber "::"

像这样的产品

declaration: ID "::" type ';'

(一些教授不使用bison的方便语法将笨拙的令牌标识符别名为易于理解的引用字符串。但这使语法更容易阅读。(

最新更新