Witam!
Byłby ktoś w stanie pomóc mi w pracy nad projektem programu pracującego w Shellu, który tłumaczy plik zapisany w C na plik zapisany w Shellu?
Zacząłem go już robić lecz część mi nie działa więc jeśli ktoś byłby w stanie pomóc nawet szczątkowo to byłbym wdzięczny ;)
#!/bin/sh
echo "Wprowadz nazwe pliku do przekonwertowania "
read nazwa
echo "Konwertowanie pliku $nazwa do pliku $nazwa.sh"
while read linia
do
{
if [ ! "$linia" ]
then
continue
else
if echo "$linia" | grep -qe "#include"
then
echo "#!/bin/sh" >$nazwa.sh
continue
elif echo "$linia" | grep -qe "}else{"
then
temp=$( echo "$linia" | sed -e 's/}else{/else/' )
elif echo "$linia" | grep -wq "else"
then
temp=$( echo "$linia" | sed -e 's/else/else/' )
elif echo "$linia" | grep -wq "elseif"
then
temp=$( echo "$linia" | sed -e 's/elseif/elif/' -e 's/(/\[/' -e 's/)/\]\nthen/' )
elif echo "$linia" | grep -wq "else if"
then
temp=$( echo "$linia" | sed -e 's/else if/elif/' -e 's/(/\[/' -e 's/)/\]\nthen/' )
elif echo "$linia" | grep -wq "for"
then
temp=$( echo "Polecenie for w takiej formie mozna wykonac dopiero w bashu" )
elif echo "$linia" | grep -wq "switch"
then
temp=$( echo "$linia" | sed -e 's/switch (/case/' -e 's/){/in/' )
elif echo "$linia" | grep -wq "printf"
then
temp=$( echo "$linia" | sed -e 's/printf/echo /' -e 's/(//' -e 's/)//' -e 's/;//' -e 's/,%//' )
elif echo "$linia" | grep "scanf*"
then
temp=$( echo "$linia " | sed -e 's/scanf/read /' -e 's/"//' )
elif echo "$linia" | grep -q '\*'
then
temp=$( echo "$linia " | sed -e 's/\/\*/#/g' -e 's/\*\///g')
elif echo "$linia" | grep -wq "while"
then
temp=$( echo "$linia" | sed -e 's/)/\)\ndo/' -e 's/)/\]\ndone/' )
elif echo "$linia" | grep -qe "\=\="
then
temp=$( echo "$linia" | sed -e 's/==/\-eq/' )
elif echo "$linia" | grep -wq "default"
then
temp=$( echo "$linia" | sed -e 's/default/\*/' -e 's/:/\)/' )
elif echo "$linia" | grep -wq "return"
then
continue
elif echo "$linia" | grep -wq "main"
then
continue
elif echo "$linia" | grep -qe "\/\/"
then
temp=$( echo "$linia" | sed -e 's/\/\//\#/' )
elif echo "$linia" | grep -qe "\<"
then
temp=$( echo "$linia" | sed -e 's/</\ -lt /' -e 's/)/\] \n then/' -e 's/\(\)/\[\]/' )
linia="$temp"
elif echo "$linia" | grep -qe "\<\="
then
temp=$( echo "$linia" | sed -e 's/\<\=/\-le/' )
elif echo "$linia" | grep -qe "\>\="
then
temp=$( echo "$linia" | sed -e 's/>=/\-ge/' )
elif echo "$linia" | grep -qe "\;"
then
temp=$( echo "$linia" | sed -e 's/;//' )
elif echo "$linia" | grep -qe "\{"
then
continue
elif echo "$linia" | grep -qe "\}"
then
continue
elif echo "$linia" | grep -qe "\} \>"
then
temp=$( echo "$linia" | sed -e 's/} >/done \>/' )
elif echo "$linia" | grep -wq "case"
then
temp=$( echo "$linia" | sed -e 's/case//' -e 's/:/\)/' )
elif echo "$linia" | grep -qe "\>"
then
temp=$( echo "$linia" | sed -e 's/>/\-gt/' )
elif echo "$linia" | grep -q "\!\="
then
temp=$( echo "$linia" | sed -e 's/!=/\-ne/' )
elif echo "$linia" | grep -wq "break"
then
temp=$( echo "$linia" | sed -e 's/break/\;\;/' )
else
temp=$( echo "Ta linia nie moze zostac przetlumaczona $linia" )
fi
fi
echo "$temp" >> $nazwa.sh
}
done < $nazwa
echo "Podaj prawa dostepu dla pliku(numerycznie) $nazwa.sh:"
read dostep
chmod $dostep $nazwa.sh
echo "Przetlumaczony plik:"
cat $nazwa.sh