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にクローズされました