FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 書式 | 解説 | 拡張機能 | 移植性 | 診断
YACC(1)                          User Commands                         YACC(1)



名称
       Yacc - LALR(1) パーサジェネレータ

書式
       yacc  [ -BdgilLPrtvVy ] [ -b file_prefix ] [ -o output_file ] [ -p sym-
       bol_prefix ] filename

解説
       yacc は、ファイル filename の文法仕様を読み込み、そのための LALR(1)
       パーサを生成します。パーサは、1 組の LALR(1) 解析テーブルと C プログラ
       ミング言語で書かれたドライバルーチンから構成されます。yacc は、通常、
       ファイル y.tab.c に解析テーブルとドライバルーチンを書き込みます。

       次のオプションが利用可能です:

       -b file_prefix
            -b オプションは、出力ファイル名の先頭に追加される接頭辞を
            file_prefix によって示される文字列に変更します。デフォルトの接頭辞
            は、文字 y です。

       -B   (btyacc のためのコンパイルタイプの設定) バックトラッキング
            (backtracking) パーサを作成します。

       -d   -d オプションによって、ヘッダファイル y.tab.h を書き込むます。それ
            は、トークン識別子のための #define を含んでいます。

       -g   -g オプションによって、生成された LALR(1) パーサのグラフィカルな記
            述は、dot(1) によって処理できる、graphviz 形式のファイル y.dot に
            書き込まれます。

       -i   -i オプションによって、補足のヘッダファイル y.tab.i が書き込まれま
            す。-p オプションが指定するものはすべてに従来の yaccyy の前に
            付けられた名前をマップする必要に応じて extern 宣言と補足の #define
            を含んでいます。コードファイル、例えば、y.tab.c は、それらのファイ
            ルに定義されたシンボルの一貫性のある使用法を強制する、y.tab.h ファ
            イルと同様に、このファイル #include に修正されます、

            補足のヘッダファイルは、lex- と yacc- ファイルの分離されたコンパイ
            ルに単純化します。

       -l   -l オプションが指定されなければ、yacc は、生成されたコードに #line
            ディレクティブを挿入します。#line ディレクティブによって、C コンパ
            イラの生成されたコードのエラーをユーザのオリジナルのコードに関連づ
            けます。-l オプションが指定されるなら、yacc は、#line ディレクティ
            ブを挿入しません。ユーザによって指定された #line ディレクティブ
            は、保持されます。

       -L   位置処理を有効にします、例えば、"%locations" (btyacc のためのコン
            パイルタイプの設定)。

       -o output_file
            パーサファイルのためのファイル名を指定します。このオプションが与え
            られないなら、出力ファイル名は、ファイル接尾辞と連結されたファイル
            接頭辞です、例えば、y.tab.c。これは、-b オプションに優先します。

       -p symbol_prefix
            -p オプションは、yacc によって生成されたシンボルの先頭に追加された
            接頭辞を symbol_prefix によって示された文字列に変更します。デフォ
            ルト接頭辞は、文字列 yy です。

       -P   リエントラントなパーサを作成します、例えば、"%pure-parser"。

       -r   -r オプションによって、yacc は、コードとテーブルのための個別のファ
            イルを生成します。コードファイルは、y.code.c と名前が付けられ、
            テーブルファイルは、y.tab.c と名前が付けられます。-b オプションを
            使用して、接頭辞 "y." を上書きすることができます。

       -s   オリジナルの yacc 振る舞いにより厳密に適合するために、"%token" 文
            の文字列リテラルのために生成された "#define" 文を抑制します。

            通常、yacc が次のような行を見るとき、

                %token OP_ADD "ADD"

            引用された "ADD" が有効な C 識別子であり、OP_ADD のためだけでなく
            同様に ADD のために #define を生成することに注意していください、例
            えば、

                #define OP_ADD 257
                #define ADD 258

            オリジナルの yacc は、2 番目の "#define" を生成しません。-s オプ
            ションは、この "#define" を抑制します。

            POSIX (IEEE 1003.1 2004) は、"%token" のための名前と数値だけを文書
            化していますが、オリジナルの yacc と bison も文字列リテラルを受け
            付けます。

       -t   -t オプションは、デバッグ文がコンパイルされたコードに組み込まれる
            ように、yacc によって生成されたプリプロセッサのディレクティブを変
            更します。

       -v   -v オプションによって、生成されたパーサの人間に読み込み可能な記述
            が、ファイル y.output に書き込まれます。

       -V   標準出力にバージョン番号を印刷します。

       -y   yacc は、bison が、表向きの POSIX 互換性のためにサポートする、この
            オプションを無視します。

拡張機能
       yacc は、bison と yacc の他の実装との互換性のために、いくつかの拡張を提
       供しています。%destructor%locations 機能は、yacc がバックトラッキン
       グ (btyacc) 機能をサポートするために設定され、コンパイルされた場合の
       み、利用可能です。残りの機能は、常に利用可能です:

        %destructor { code } symbol+
              シンボルがエラーリカバリの間に、自動的に廃棄されるとき、呼び出さ
              れるコードを定義します。ユーザのアクションがメモリを明示的に管理
              することができない場合に、対応する意味的な値に関連する動的に割り
              付けられたメモリを取り戻すために、このコードを使用することができ
              ます。

              解析エラーに遭遇すると、生成されたパーサは、解析が継続することを
              可能にする状態に到達するまで、スタックと入力トークンのシンボルを
              廃棄します。このエラーリカバリのアプローチは、YYSTYPE 値が動的に
              割り付けられたメモリへのポインタであるか、または含まれるなら、メ
              モリリークの結果となります。

              角括弧で括られた code は、パーサがシンボルの 1 つを廃棄するとき
              はいつでも、呼び出されます。code 内で、"$$" または "$<tag>$"
              は、廃棄されたシンボルに関連した意味的な値を指定し、"@$" は、そ
              の位置を指定します (%locations 指令を参照)。

              シンボルごとのデストラクタは、symbol+ の文法のシンボルをリストす
              ることによって定義されます。タイプごとにデストラクタは、symbol+
              の意味的なタイプタグ (例えば、"<some_tag>") をリストすることに
              よって定義されます。この場合に、パーサは、そのシンボルに、それ自
              体のシンボルごとのデストラクタがないなら、意味的なタイプタグがあ
              る、あらゆる文法のシンボルを廃棄するときはいつでも、code を呼び
              出します。

              デフォルトのデストラクタの 2 つのカテゴリは、シンボルごとでな
              く、タイプごとのデストラクタがない、あらゆる文法のシンボルを廃棄
              するとき、呼び出されることをサポートされます:

              •   "<*>" のためのコードは、("%type" によって) 明示的に宣言され
                  た意味的なタイプタグがある文法のシンボルのために使用されま
                  す。

              •   "<>" のためのコードは、宣言された意味的なタイプタグがない文
                  法のシンボルのために使用されます。

        %expect number
              予期される shift/reduce conflict の数を yacc に伝えます。それが
              異なるなら、それは、数のみを報告します。

        %expect-rr number
              予期される reduce/reduce conflict の数を yacc に伝えます。それが
              異なるなら、それは、数のみを報告します。これは、(bison と異なり)
              LALR パーサで許可されます。

        %locations
              yylval で提供される意味的な値の情報の管理に似ている、グローバル
              変数 yylloc の lex プログラムによって提供される、各トークンに関
              連した位置情報の管理を有効にするように yacc に伝えます。

              意味的な値に関して、左側シンボルの位置を参照するための @$@N
              (N は、整数) を使用するアクションと右側シンボルの 1 つの位置を参
              照することができます。また、意味的な値に関して、規則が一致すると
              き、デフォルトのアクションは、規則の最初のシンボルの始め、と右側
              の最後のシンボルの終わりとして @$ によって表わされる計算された位
              置で使用されます。規則のアクションで @$ に明示的な割り当てによっ
              て、このデフォルトの計算を無視することができます。

              yylloc のタイプは、デフォルトによって次のように定義される、
              YYLTYPE です:

                  typedef struct YYLTYPE {
                      int first_line;
                      int first_column;
                      int last_line;
                      int last_column;
                  } YYLTYPE;

              仕様ファイルの宣言セクションで (YYLTYPE_IS_DEFINED は、デフォル
              トを抑制するために、定義されなければなりません) ユーザによって、
              YYLTYPE を再定義することができます。bison でのように、関連するア
              クションが実行される前に、規則の左側の位置を計算するために規則が
              一致するごとに、マクロ YYLLOC_DEFAULT は、呼び出されます。ユーザ
              によってこのマクロを再定義することができます。

              この指示は、YYLTYPE パラメータを yyerror() に追加します。%pure-
              parser 指示が存在するなら、YYLTYPE パラメータは、yylex() 呼び出
              しに追加されます。

        %lex-param { argument-declaration }
              デフォルトで、lexer は、パラメータを受け付けません、例えば、
              yylex()。利用者のカスタマイズされた lexer のためのパラメータ宣言
              を追加するために、このディレクティブを使用します。

        %parse-param { argument-declaration }
              デフォルトで、パーサは、を受け付けません、例えば、yyparse()。利
              用者のカスタマイズされたパーサのためのパラメータ宣言を追加するた
              めに、このディレクティブを使用します。

        %pure-parser
              (yydebugyynerrs 以外の) ほとんどの変数は、パーサを合理的にリ
              エントラントにして、yyparse 内のスタックで割り付けられます。

        %token-table
              yytname 配列で利用可能なトークンのためのパーサの名前とします。し
              かしながら、yacc は、この配列の "$end", "$error" または
              "$undefined" を前もって定義しません。

移植性
       Robert Corbett によれば、

               Berkeley Yacc は、LALR(1) パーサジェネレータです。
           Berkeley Yacc は、AT&T Yacc とできるだけ互換性があるように作られました。
           Berkeley Yacc は、AT&T Yacc の文書に準拠するあらゆる入力仕様書を
           受け付けることができます。
           AT&T Yacc の文書化されていない機能を利用する仕様書は、恐らく拒否されます。


           http://pubs.opengroup.org/onlinepubs/9699919799/utilities/yacc.html

       の論理的根拠は、もはや POSIX 準拠を要求されない、AT&T yacc のいくつかの
       機能を文書化しています。

       とは言っても、AT&T yacc と厳密に互換性をもたないいくつかの他の実装で文
       法ファイルの再使用に興味があるかもしれません。例えば、bison がありま
       す。ここに、少数の違いがあります:

       •   yacc は、(オリジナルの文法ファイル ftp.y でのように) 動作の左の中括
           弧に先行する等号を受け付けます:

                    |    STAT CRLF
                         = {
                              statcmd();
                         }

       •   yacc と bison は、異なる順序でコードを発行し、特に、bison は、プロ
           トタイプを提供しない yylex、yyparse と yyerror のような共通関数への
           前方参照を行います。

       •   "%expect" のための bison のサポートは、2 つ以上のリリースで壊れてい
           ます。最良の結果については、bison を使用して、そのディレクティブを
           削除します。

       •   bison には、文法ファイルに組み込まれているディレクティブに依存し
           て、yacc のコマンド行のオプションのうちのいくつかと同等なものはあり
           ません。

       •   bison の "-y" オプションは、古いと見なされた AT&T yacc の機能のため
           のサポートの bison の不足に影響しません。

       •   yacc は、次の 2 つの形式の %lex-param%parse-param を付けた複数
           のパラメータを受け付けます。

               {type1 name1} {type2 name2} ...
               {type1 name1,  type2 name2 ...}

           bison は、後者 (文書化されていません) を受け付けますが、リリースに
           よっては、悪いコードを生成するかもしれません。

       •   bison のように、yacc は、yyparseyyerror と (バックトラッキングの
           ために設定されているなら) %destructor を使用して宣言されたされたデ
           ストラクタへの %parse-param によって指定されたパラメータを追加しま
           す。bison は、デストラクタのための最後を除いて yyparseyyerror
           のために追加のパラメータを最初に置きます。yacc は、この振る舞いと一
           致します。

診断
       決して還元 (reduce) されない規則があるなら、そのような規則の数は、標準
       エラーに報告されます。何らかの LALR(1) の衝突あるなら、衝突の数は、標準
       エラーに報告されます。



Berkeley Yacc                   October 5, 2014                        YACC(1)

Table of Contents

FreeBSD マニュアル検索