名 称
yacc — LALR(1)
パ ー サ ジ ェ ネ
レ ー タ 書 式
yacc [−dlrtv] [−b
prefix] filename 解 説
yacc は 、 filename の フ
ァ イ ル か ら 文
法 仕 様 を 読 み
取 り 、 そ の 仕
様 か ら LR(1) パ ー サ
を 生 成 し ま す
。 パ ー サ は 、
LALR(1) 解 析 テ ー ブ
ル と 、 C 言 語 で
書 か れ た ド ラ
イ バ ル ー チ ン
の セ ッ ト か ら
構 成 さ れ て い
ま す 。 yacc は 通
常 、 y.tab.c と い う
フ ァ イ ル に 解
析 テ ー ブ ル と
ド ラ イ バ ル ー
チ ン を 書 き 込
み ま す 。 以 下
の オ プ シ ョ ン
が 提 供 さ れ て
い ま す :
−b prefix
−b オ プ シ ョ ン は 、 出 力 フ ァ イ ル 名 の 先 頭 に 加 え る プ リ フ ィ ッ ク ス 文 字 列 を prefix に 変 更 し ま す 。 デ フ ォ ル ト の プ リ フ ィ ッ ク ス は y. で す 。
−d
−d オ プ シ ョ ン は 、 ヘ ッ ダ フ ァ イ ル y.tab.h を 生 成 す る よ う 指 示 し ま す 。
−l も し −l オ プ シ ョ ン が 指 定 さ れ て い な け れ ば 、 yacc は #line デ ィ レ ク テ ィ ブ を 生 成 し た コ ー ド に 挿 入 し ま す 。 #line デ ィ レ ク テ ィ ブ は 、 生 成 さ れ た コ ー ド の 中 の エ ラ ー と ユ ー ザ の オ リ ジ ナ ル コ ー ド と の 関 係 を C コ ン パ イ ラ に 知 ら せ ま す 。 も し −l オ プ シ ョ ン が 指 定 さ れ て い れ ば 、 yacc は #line デ ィ レ ク テ ィ ブ を 挿 入 し ま せ ん 。 ユ ー ザ に よ っ て 指 定 さ れ た #line デ ィ レ ク テ ィ ブ は 保 持 さ れ ま す 。
−r
−r オ プ シ ョ ン を 指 定 す る と 、 yacc は コ ー ド と テ ー ブ ル の フ ァ イ ル を 分 け て 出 力 し ま す 。 コ ー ド フ ァ イ ル 名 は y.code.c と な り 、 テ ー ブ ル フ ァ イ ル 名 は y.tab.c と な り ま す 。
−t
−t オ プ シ ョ ン を 指 定 す る と 、 yacc に よ っ て 生 成 さ れ る プ リ プ ロ セ ッ サ デ ィ レ ク テ ィ ブ を 変 更 し 、 デ バ ッ グ 用 の 文 を コ ン パ イ ル さ れ た コ ー ド の 中 に 埋 め 込 み ま す 。
−v
−v オ プ シ ョ ン を 指 定 す る と 、 生 成 さ れ た パ ー ザ の 詳 細 を 人 間 に 読 め る 形 式 で 、 フ ァ イ ル y.output に 出 力 し ま す 。 環 境 変 数 以 下 の 環 境 変 数 が yacc に よ っ て 参 照 さ れ ま す :
TMPDIR も し
環 境 変 数 TMPDIR が 設
定 さ れ て い れ
ば 、 TMPDIR に 設 定 さ
れ て い る 文 字
列 は 、 テ ン ポ
ラ リ フ ァ イ ル
が 生 成 さ れ る
デ ィ レ ク ト リ
名 と し て 使 用
さ れ ま す 。 テ
ー ブ ル 本 バ ー
ジ ョ ン の yacc に
よ っ て 生 成 さ
れ る テ ー ブ ル
の 名 称 は 、
’’yylhs’’,
’’yylen’’,
’’yydefred’’,
’’yydgoto’’,
’’yysindex’’,
’’yyrindex’’,
’’yygindex’’,
’’yytable’’, そ し
て ’’yycheck’’ で
す 。 さ ら に 、
追 加 の テ ー ブ
ル と し て
’’yyname’’ お よ
び ’’yyrule’’ が
、 YYDEBUG が 定 義 さ
れ ゼ ロ で な い
と き に 用 意 さ
れ ま す 。 関 連
フ ァ イ ル
y.code.c
y.tab.c
y.tab.h
y.output
/tmp/yacc.aXXXXXX
/tmp/yacc.tXXXXXX
/tmp/yacc.uXXXXXX 診 断 も
し ル ー ル を 切
り 詰 め る こ と
が で き な か っ
た 場 合 、 ル ー
ル 数 が 標 準 出
力 に 書 か れ ま
す 。 も し 、 何
ら か の LALR(1) の 衝
突 が あ っ た 場
合 、 衝 突 数 も
標 準 エ ラ ー 出
力 に 書 か れ ま
す 。 関 連 項
目
yyfix(1) 規 格
yacc ユ ー テ ィ リ
テ ィ は IEEE Std 1003.2
(’’POSIX.2’’) 準 拠
で す 。