Closed32
Yaccのソースコード

このコードを調べる

getargs関数

open_files関数

reader関数

write_section関数
文字列のリストを1行ずつコードファイルに書き込む

create_symbol_table関数
bucket型?のリストを作っている
エラーのbucketを作っている

bucket構造体
make_bucket関数
- link bucketポインタ
- next bucketポインタ
- name 文字列 bucketの名前
- tag 文字列
- value
- index
- prec
- class
- assoc

read_declarations関数
yaccファイルの宣言部を読み込んでいる?

read_grammar関数
yaccファイルの文法部を読み込んでいる

free_symbol_table関数
free_tags関数
symbol_tableとtag_tableのメモリを開放してる

pack_names関数
bucket関数の名前の文字列をまとめて1列のメモリに配置しなおしている

check_symbols関数
クラスがUNKNOWNのbucket構造体を見つけてエラーや警告を出す

pack_symbols関数
たぶんsymbolのリストを1列にしている
bucketは構造体の型で、それのフィールドの値をそれぞれ別のリストにして、同じインデックスで同じbucketの値にアクセスできるようになっている

pack_grammar関数
文法を1列にしている

free_symbols関数
symbols(bucket構造体)のメモリを開放している

print_grammar関数
文法を表示する
-vがなければ何もしない

まとめ
文法ファイルを読み込んで、アクセスしやすいように整理している

lr0関数

lalr関数

make_parser関数

verbose関数

output関数
このスクラップは2023/09/16にクローズされました