Giter Site home page Giter Site logo

c--'s Introduction

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言語版で代用できるのでメンテナンスしていない.)
|
+ 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 ----+              コンパイラ・ライブラリのテスト用プログラム

c--'s People

Contributors

tctsigemura avatar tct-i15fujimura1s avatar i16kanbara avatar i14kwmr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.