/C--

Programing Language C--

Primary LanguageC

Programing Laguage C--

Programing Language C-- is an Educational System Description Language.

プログラミング言語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 ----+              コンパイラ・ライブラリのテスト用プログラム