Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.
This repository was archived by the owner on Nov 25, 2025. It is now read-only.

ToDo: implement CPP14Engine #1

@RYOSKATE

Description

@RYOSKATE

文法

  • struct
    • struct型のメンバ変数
    • structのmalloc
    • structのポインタ変数
    • 未初期化フィールドの乱数初期化
  • typedef (UniVariableDecとして実装)→UniType extends UniExprを作る
    • typedef struct node* link;
    • typedef struct Point point;
  • 構造体
    • グローバル変数
    • 宣言と同時の変数宣言
      struct point { int x; int y; } p1, p2; (UniClassDecとStringがtype)→→UniType extends UniExprを作る
  • 型に応じた未初期化変数の乱数初期化(charなどは0xFF範囲)
  • 関数定義
    • ポインタが戻り値の関数定義
    • 構造体が戻り値の関数定義
    • 関数の前方宣言
  • for
    • {}がないと一気に実行されてしまう問題
    • 初期化、続行チェック、各ループ終了時の処理が空だと動かない
  • Switch文
    (CではUniSwitchにExprしか書けない(UniSwitchUnitとかにできない)、ExprStatementなど作るか)
  • enum
  • static 変数
  • union
  • 三項演算子のtrue(UMG側のMapper生成の問題)
  • ifの{}がないと一気に実行されてしまう問題
  • 多次元配列
    • 2次元配列
      • 初期化リストあり
      • 初期化リストなし
    • 3次元以上の配列
      • 初期化リストあり
        • 初期化リストに全要素がある場合
        • 初期化リストの要素が欠けている場合
      • 初期化リストなし
    • 可視化用ExecState修正
  • int a[10], p;でpもint[10]になってしまう問題
  • 変数宣言時のセパレータではない演算子としてのカンマ

プリプロセッサ

  • #define
    • #define N 100など値に置換するもの
    • #define prt(f) printf("%f\n", f)など式に置換するもの
      Mapperにプリプロセスを処理する関数を用意。
      parse前にそれを通すが基本は何もせず返す。
      C/C++Mapperは必要に応じて拡張して中身を実装する。

関数

  • stdio
    • getChar
    • sprintf
    • scanf
    • fgets
      • gets (非推奨)
  • stdlib
    • atoi
  • string
    • strcpy
    • strcat
    • strcmp
    • strlen

エラー処理

  • コンパイルエラー
  • ランタイムエラー

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions