Flat Leon Works

アプリやゲームを作ってます。

Nim

【Nim】引数渡しの罠

Nim

Nimには値型と参照型があるのですが、引数として渡したときの挙動が C++ や C# のような他のプログラミング言語とは違う場合があるようなので調べてみました。それほど詳しく調査したわけではないので注意してください。 執筆時のNimのバージョンはv0.19.0で…

【Nim】マクロプログラミング用メモ

Nim

ドキュメント : macrosモジュール 定数 型の種類一覧 NimTypeKind = enum ntyNone, ntyBool, ntyChar, ntyEmpty, ntyAlias, ntyNil, ntyExpr, ntyStmt, ntyTypeDesc, ntyGenericInvocation, ntyGenericBody, ntyGenericInst, ntyGenericParam, ntyDistinct, …

【Nim】コンパイラソースコードリーディングのためのメモ

Nim

ファイル トークン種類(tk) ASTノード種類(nk) シンボル種類(sk) シンボルフラグ(sf) 内部型種類(ty) 内部型フラグ(tf) コンパイラマジック定数(m) ファイル compiler main.nim : コンパイラ起点 lexer.nim : レキサー parser.nim : パーサー ast.nim : AST …

【Nim】クラス定義マクロを作ってみる

Nim

Nimにはクラスという概念がありません。しかし、オブジェクト指向プログラミング自体はサポートされており、object型を使えばクラスとほぼ同じことが可能になっています。ただし、object型の定義が微妙に面倒なことに加え、やはりクラスが欲しいということで…

【Nim】seq型とstring型のリファレンスの罠【追記:v0.19.0にて解決済み】

Nim

[追記] Nimバージョン 0.19.0 で、seq型とstring型のデフォルト値が nil ではなく @[] と "" になりました。この仕様変更により、ここで指摘していた"罠"は根本的に解決されたことになります。一応この記事は残しておきますが、もう気にする必要がないことで…

【Nim】文字列操作

Nim

Nimでの文字列操作関連をまとめてみました。 Nimのバージョンは 0.17.2 を想定しています。( 執筆時の最新バージョン ) 文字列の基本 文字、文字列リテラル 文字、文字列型 文字列関連モジュール 標準モジュール(system,strutils)の文字列関連プロシージャ …

NimとC++を比較してみる

この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 NimはNimソースコードをC言語ソースへ変換するトランスコンパイラ言語です。これは普段C++を使っている人にとって非常に重要なことです。なぜなら、C++(C言語)が使える環境な…

【Nim】個人的逆引きリファレンス

Nim

Nimの勉強を兼ねて逆引きリファレンスとしてまとめてみようと思います。(随時更新) この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 注意: 使用しているNimのバージョンは0.17.2です Nimに詳しいわけではないので変な書き方…

【Nim】メモ

Nim

基本情報 リンク 標準ライブラリ 言語仕様メモ 諸条件の違いによるマクロ仮引数のNimNode構造の違い テンプレートでのシンボル束縛(bind)について テンプレート仮引数の参照ルール テンプレートの衛生 逆引きリファレンス未作成項目 基本情報 作者 : Andreas…