バイソンに奇妙な問題があります。私は初心者なので、間違っている場合は修正してください。ただし、$1、$2...などは、端末/非端末の最初、2番目などから値を返す必要がありますか?
command: IDENT{printf("%s",$1);} SET{printf("%s",$1);} expression{printf("%s",$1);} ENDCMD
私はコンパイラーを実行しましたが、上記の例から、最初の呼び出しで「a := 1」(ident は「a」、set は「:=」、num は「1」) のような式があったため、トラップしました。 、2番目に「a :=」、3番目に「a := 1」。
%union {
int ival;
char *sval;
}
ident は sval です。
重要なことは、最近バイソンファイルに文字列を追加したことです。以前はすべて問題ありませんでした。