Esgrsdnl(自作のシストレ言語)内に直接C言語で記述できるようにの工夫
Esgrsdnlソース内に直接C言語で記述できるようする工夫
(図で tmp C src を抜き出す部分)
car_m4 というshell script がCompile 処理してるのですが・・・
cat << 'EOS' | sed -f /dev/stdin ./tmpinc.m4 |tee tmpm4.txt|m4 -R ./esgrs/esgrs.m4f |sed -e 's/^\s\+//g' -e 's/\s\+/,/g' -e '/^$/d' > ${OUTPUT} # _C_ \://_C_SRC_:i DEF C_SRC \://_C_SRC_:,\://_C_END: { w ./main/mt/tmp/func.h d } # \://_C_CLC_:i DEF C_CLC \://_C_CLC_:,\://_C_END: { w ./main/mt/tmp/calc.mt d } (中略) EOS
の処理
これで
//_C_SRC_ (何らかのC言語ソース) //_C_END_
または
//_C_CLC_ (何らかのC言語ソース) //_C_END_
と記述すれば、template C src の中で
#ifdef C_SRC #include "tmp/func.h" #endif
または
#ifdef C_CLC #include "tmp/calc.mt" #endif
と記述している部分にincludeしてくれる
_C_SRC_ に関数書いて
_C_CLC_ でその関数を呼び出す
って感じの使い方
これでtemplate C srcを弄らずにいろいろ試せるはず・・・
めんどくさいが・・・