自作 C コンパイラ

SDI YUKI

		C コンパイラを、GCC C++ で作成しました。
		コンパイラ名 plu

		プリプロセッサを作成しました。
		プリプロセッサ名 plu1
		plu で、コンパイルしました。

		plu1 完成時点で、plu をプリプロッセッサに対応しました。
		また、plu1 を プリプロセッサ plu1 に対応しました。

		現在、GCC C に対応した、バージョンを 作成中です。

		※20220323
			実行モジュール・サンプルにコンパイラ include ファイルを追加しました。

		自作 C コンパイラ 概要
実行モジュール・サンプル(plu.zip)
C サンプル(sample.zip)
C サンプルファイルのコンパイル実行 plu.zip に、含まれている bin, inlude が、必要 pluc, plul は、実行パスが通っていること $home/include に、インクルードファイルが設定されていること calc2.c ------------------------------------------------------------------------------------ $ plu clac2.c Preprocessor calc2.c Compile calc2.i Assemble calc2.s $ plul calc2.o -lm Link calc2.o -lm calc2.o: In function `exec': calc2.i:(.text+0x1bd): warning: the `gets' function is dangerous and should not be used. $ ./calc2 --help 使用方法 : calc [--help] [-v] 入力 : CALC> <計算式> 計算実行 CALC> // コマンド終了 オプション : --help このヘルプ情報を表示 -v バージョンを表示 計算式 : <計算式> := [ <式> ] <式> := <式1> { (+|-) <式1> } 左優先 <式1> := <式2> { (*|/|%) <式2> } 左優先 <式2> := (+|-) <式2> 右優先 | ( <式> ) | <数値> | <関数名>( <式> ) <数値> := <数字>{<数字>} [ . {<数字>} ] | . <数字>{<数字>} <関数名> := <英字> { <英数字> } <英数字> := <英字> | <数字> <英字> := A-Z | a-z <数字> := 0-9 関数一覧 : ABS ACOS ASIN ATAN CEIL COS COSH EXP FLOOR LN LOG SIN SINH SQRT TAN TANH $ ./calc2 CALC>>2*3 6 CALC>>// $ ------------------------------------------------------------------------------------ カックロパズル sum.c include/SumPuz.h SumPuz.c q76.txt 問題 ------------------------------------------------------------------------------------ $ ./sum --help Usage : sum [--help] 標準入力フォーマット 最大数値 縦マス数 横マス数 { 縦位置 横位置 H/V 個数 合計 } $ pluc sum.c Preprocessor sum.c Compile sum.i Assemble sum.s $ pluc SumPuz.c Preprocessor SumPuz.c Compile SumPuz.i Assemble SumPuz.s $ plul sum.o SumPuz.o Link sum.o SumPuz.o $ ./sum <q76.txt XXXXXXXXXXXX XX896XXX214X X39758X41328 X12X46123X17 XX71243X5789 XXX937XXX59X XX37152X19XX X812X931287X X62XXX124X51 X978X758X793 XX567143928X XXX985X475XX XX159276834X X897X495X139 X97X968XXX26 XX867359X218 XXX84X63215X XX37XXX853XX X8597X15342X X62X48967X19 X94812X74132 XX142XXX135X *** データ処理後 *** [XXXXXXXXX][XXXXXXXXX][+++++++++][+++++++++][+++++++++][XXXXXXXXX][XXXXXXXXX][XXXXXXXXX][+++++++++][+++++++++][+++++++++][XXXXXXXXX] [XXXXXXXXX][+++++++++][ 8 ][ 9][ 6 ][+++++++++][XXXXXXXXX][+++++++++][ 2 ][1 ][ 4 ][+++++++++] [+++++++++][ 3 ][ 9][ 7 ][ 5 ][ 8 ][+++++++++][ 4 ][1 ][ 3 ][ 2 ][ 8 ] [+++++++++][1 ][ 2 ][+++++++++][ 4 ][ 6 ][1 ][ 2 ][ 3 ][+++++++++][1 ][ 7 ] [XXXXXXXXX][+++++++++][ 7 ][1 ][ 2 ][ 4 ][ 3 ][+++++++++][ 5 ][ 7 ][ 8 ][ 9] [XXXXXXXXX][XXXXXXXXX][+++++++++][ 9][ 3 ][ 7 ][+++++++++][XXXXXXXXX][+++++++++][ 5 ][ 9][XXXXXXXXX] [XXXXXXXXX][+++++++++][ 3 ][ 7 ][1 ][ 5 ][ 2 ][+++++++++][1 ][ 9][+++++++++][XXXXXXXXX] [+++++++++][ 8 ][1 ][ 2 ][+++++++++][ 9][ 3 ][1 ][ 2 ][ 8 ][ 7 ][+++++++++] [+++++++++][ 6 ][ 2 ][+++++++++][XXXXXXXXX][+++++++++][1 ][ 2 ][ 4 ][+++++++++][ 5 ][1 ] [+++++++++][ 9][ 7 ][ 8 ][+++++++++][ 7 ][ 5 ][ 8 ][+++++++++][ 7 ][ 9][ 3 ] [XXXXXXXXX][+++++++++][ 5 ][ 6 ][ 7 ][1 ][ 4 ][ 3 ][ 9][ 2 ][ 8 ][XXXXXXXXX] [XXXXXXXXX][XXXXXXXXX][+++++++++][ 9][ 8 ][ 5 ][+++++++++][ 4 ][ 7 ][ 5 ][+++++++++][XXXXXXXXX] [XXXXXXXXX][+++++++++][1 ][ 5 ][ 9][ 2 ][ 7 ][ 6 ][ 8 ][ 3 ][ 4 ][+++++++++] [+++++++++][ 8 ][ 9][ 7 ][+++++++++][ 4 ][ 9][ 5 ][+++++++++][1 ][ 3 ][ 9] [+++++++++][ 9][ 7 ][+++++++++][ 9][ 6 ][ 8 ][+++++++++][XXXXXXXXX][+++++++++][ 2 ][ 6 ] [XXXXXXXXX][+++++++++][ 8 ][ 6 ][ 7 ][ 3 ][ 5 ][ 9][+++++++++][ 2 ][1 ][ 8 ] [XXXXXXXXX][XXXXXXXXX][+++++++++][ 8 ][ 4 ][+++++++++][ 6 ][ 3 ][ 2 ][1 ][ 5 ][XXXXXXXXX] [XXXXXXXXX][+++++++++][ 3 ][ 7 ][+++++++++][XXXXXXXXX][+++++++++][ 8 ][ 5 ][ 3 ][+++++++++][XXXXXXXXX] [+++++++++][ 8 ][ 5 ][ 9][ 7 ][+++++++++][1 ][ 5 ][ 3 ][ 4 ][ 2 ][+++++++++] [+++++++++][ 6 ][ 2 ][+++++++++][ 4 ][ 8 ][ 9][ 6 ][ 7 ][+++++++++][1 ][ 9] [+++++++++][ 9][ 4 ][ 8 ][1 ][ 2 ][+++++++++][ 7 ][ 4 ][1 ][ 3 ][ 2 ] [XXXXXXXXX][+++++++++][1 ][ 4 ][ 2 ][XXXXXXXXX][XXXXXXXXX][+++++++++][1 ][ 3 ][ 5 ][XXXXXXXXX] $ ------------------------------------------------------------------------------------