ウィキペディアの補間定義 私はフレックス/バイソンを学んでいて、それを使って独自のシェルを書いています。私は変数補間を行うための良い方法を見つけようとしています。これに対する私の最初のアプローチは、ホームディレクトリの〜や$ myVarのようなものをフレックススキャンしてから、ルックアップ関数を使用して返されるものにyyval.stringを設定することでした。私の問題は、テキストが1つのトークンで表示される場合、これは役に立たないということです。
kbsh:/home/kbrandt% echo ~
/home/kbrandt
kbsh:/home/kbrandt% echo ~/foo
/home/kbrandt /foo
kbsh:/home/kbrandt%
私が変数に対して持っているlex定義:
\$[a-zA-Z/0-9_]+ {
yylval.string=return_value(&variables, (yytext + sizeof(char)));;
return(WORD);
}
次に、私の文法には、次のようなものがあります。
chdir_command:
CD WORD { change_dir($2); }
;
この種のことを処理する良い方法を知っている人はいますか?私はこれについてすべて間違っていますか?