0

OpenNTPDソースコードファイルを調べていると、、、など}%のCコードやparse.yという名前のファイルでは見たことのない新しいキーワードや構文に気づきまし%%%type%token

%{
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

...

%}

%token  LISTEN ON
%token  SERVER SERVERS SENSOR CORRECTION RTABLE REFID WEIGHT
%token  ERROR
%token  <v.string>      STRING
%token  <v.number>

....

grammar     : /* empty */
        | grammar '\n'
        | grammar main '\n'
        | grammar error '\n'        { file->errors++; }
        ;

main        : LISTEN ON address listen_opts {
            struct listen_addr  *la;
            struct ntp_addr     *h, *next;

            if ($3->a)
...

これらのキーワードを除いて、ファイルの内容のほとんどは通常のC構文を持っています。誰かがこれらのキーワードが何であるか、そしてそれらが何のために使われるか知っていますか?

4

2 に答える 2

3

私の推測では、これはYaccコード(つまり、文法の定義)であり、単純なCではありません。これはBNFに似た表記法です。

于 2012-05-04T13:00:07.497 に答える
0

また、ファイルを見ると、、、などが*.l混在するCコードがたくさんある場合があります。これは、多くの場合yaccファイルを伴うレクサー入力ファイルです。%%%x%s%option*.y

于 2012-05-04T13:30:56.633 に答える