数日後にはテストがあるにもかかわらず、AWKのパーサをRustで書いてました。
AWKはPOSIXで仕様が規定されているので、それに沿ってパーサを書いていくわけなのですが Rustを触るのは初めてなので、割と苦労してます。
現在は、数値リテラル・文字列リテラル・BEGIN{};END{};{};{}みたいなプログラムまでをパースできています。

ところで仕様書のyaccソースを見るとBEGIN{}END{}のようなitemの書き方は許可されず、BEGIN{};END{}みたいに書かないといけないはずなんですが手元のMacに入っているAWKではOKなのはなんでなんでしょう?