プログラミング言語C−-は、教育用のシステム記述言語です。 C言語をお手本にしていますが、型チェックが厳しい、ポインターがない等、初心者に使いやすい仕様になっています。 配列や構造体はJavaのように全て参照型になります。 C言語で悩んだ配列の実態、配列名、配列を指すポインタの混乱、 多次元配列とポインタ配列の使い分けのようなものはありません。 常に参照です。
詳細は マニュアルをご覧ください。(インストール方法もこちらです。)
TacOSは C--言語で記述されています。 C--言語は、ある程度実用的なシステム記述言語です。
TacOSの アプリケーションを開発するためのコンパイラと、 C言語を出力するトランスレータが準備してあります。 トランスレータを使用すると macOS Big Sur または Ubuntu 18.04 上で C-- で記述したプログラムを実行できます。
TacOSの アプリケーション用にTaCのアセンブリ言語を出力します。 Util--の ツールを使用してTacOSの実行形式に変換できます。 付属のコンパイラドライバ(cm2e)を使用すると、 簡単にTacOSの実行形式を作ることができます。
C--言語プログラムをC言語に変換します。 出力されるC言語プログラムは、 標準で配列の添字やnullポインターの実行時エラーチェックを含んでいますので、 プログラミング初心者でも安心して使用することができます。 付属のコンパイラドライバ(cm2c)を使用すると、 C--言語プログラムを実行可能な形式に変換できます。
+ README.md このファイル
|
+ src -----+ コンパイラ本体のソースプログラム
| |
| + cm2e TaCを目的マシンにするコンパイラドライバ
| |
| + cm2c C言語を目的コードにするコンパイラドライバ
| |
| + cm2v スタックマシンを目的マシンにするコンパイラドライバ
| |
| + cm2i 中間コードを目的コードにするコンパイラドライバ
| |
| + main.c コンパイラのメインルーチン
| |
| + lexer.[hc] 字句解析プログラム
| |
| + parser.[hc] 構文解析プログラム
| |
| + optree.[hc] 構文木最適化プログラム
| |
| + namtbl.[hc] 名前表管理ルーチン
| |
| + sytree.[hc] 構文木管理ルーチン
| |
| + util.[hc] 便利ルーチン
| |
| + code.h コード生成ルーチンの外部インタフェース
| |
| + vmCode.c コード生成ルーチン(構文木 => 中間コード)
| |
| + cCode.c コード生成ルーチン(構文木 => C言語)
| |
| + vm.h 目的コード生成ルーチンの外部インタフェース
| |
| + vm2tac.c 目的コード生成ルーチン(中間コード => TaC)
| |
| + vm2vm.c 目的コード生成ルーチン(中間コード => スタックマシン)
| |
| + vm2ic.c 目的コード生成ルーチン(中間コード => 中間コード)
| |
| + vm2h8300hn.c 目的コード生成ルーチン(中間コード => H8/Tiny)
| (C言語版で代用できるのでメンテナンスしていない.)
|
+ src-- ---+ C--言語で記述したコンパイラ本体のソースプログラム
| |
| + ... src以下と同様な内容をC--言語で記述したもの
|
+ include -+ C--言語の標準インクルードファイル
|
+ lib -----+ C--言語の標準ライブラリ
| |
| + SrcCmm TaC版とC言語版で共通なライブラリルーチンのソース
| |
| + SrcTac TaC版のライブラリルーチンのソース
| |
| + SrcC C言語版のライブラリルーチンのソース
| |
| + LibTac TaC版のライブラリ
| |
| + LibRtc C言語版(実行時エラーチェックあり)のライブラリ
| |
| + LibNortc C言語版(実行時エラーチェックなし)のライブラリ
|
+ doc -----+ C--言語のマニュアル
|
+ samples -+ C--言語プログラムのサンプル
| |
| + hello "Hello,world"(他のサンプルは TacOS/usr にある)
|
+ Test ----+ コンパイラ・ライブラリのテスト用プログラム