53歳限界プログラマの憂鬱

SU/CAR-ST-APplication-cellsから派生したプログラマのブログ

来訪ありがとうございます
シストレツールを自作してました
自分用の記事が多いのであまり役には立たないブログでした

f:id:sucar:20150414193802p:plain

自作システム詳細目次

Esgrsdnl(自作のシストレ言語)内に直接C言語で記述できるようにの工夫

Esgrsdnlという自作のシストレ言語(DSL

f:id:sucar:20200716210855p:plain

流れ図みたいなやつ

 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を弄らずにいろいろ試せるはず・・・

めんどくさいが・・・