快乐的%%是多少?

Nic*_*unt 5 haskell parser-generator happy

我正在使用Happy构建解析器,并注意到这是在线文档:

和yacc一样,我们在这里包含%%,没有任何正当理由.

%%

必须有一个理由,即使它是微不足道的.有谁知道它是什么?

Dun*_*can 5

它分隔Yacc源文件中的部分.例如,见http://dinosaur.compilertools.net/yacc/

Names refer to either tokens or nonterminal symbols. Yacc requires token names 
to be declared as such. In addition, for reasons discussed in Section 3, it is 
often desirable to include the lexical analyzer as part of the specification 
file; it may be useful to include other programs as well. Thus, every 
specification file consists of three sections: the declarations, (grammar) 
rules, and programs. The sections are separated by double percent ``%%'' marks. 
(The percent ``%'' is generally used in Yacc specifications as an escape 
character.)

In other words, a full specification file looks like

        declarations
        %%
        rules
        %%
        programs
The declaration section may be empty. Moreover, if the programs section is 
omitted, the second %% mark may be omitted also; thus, the smallest legal Yacc 
specification is

        %%
        rules
Run Code Online (Sandbox Code Playgroud)