nptclのブログ

Common Lisp処理系nptの開発メモです。https://github.com/nptcl/npt

Unicode 3.13 標準のCaseアルゴリズムの翻訳

Unicodeの文章の、Caseに関するものの翻訳を載せます。 翻訳元は下記の通り。 Unicode Consortium https://home.unicode.org/ Unicode® 15.0.0 https://www.unicode.org/versions/Unicode15.0.0/ Chapter 3, Conformance https://www.unicode.org/versions/U…

C言語でMD5を取得する

1. はじめに 以前、C言語でxorshiftの乱数を使う投稿をしましたが、 その中で乱数の初期値を決めるためだけに MD5を使っていたと話しました。 一応そのファイルの使い方も紹介します。 せっかく作ったんですし、 書いておかないと自分が忘れますので。 でも…

DEFLATEの展開コードを作る

1. はじめに C言語でDEFLATEという圧縮アルゴリズムの展開コードを作りました。 ただし次の二点において問題があるためお勧めできません。 zlibに比べるととても遅い 圧縮はまだ作ってない でも放置すると忘れるのでgithubに登録しました。 自分自身が忘れな…

C言語でUTF-8などを読む

1. はじめに C言語で、UTF-8などを読み込むコードを作成しました。 これもnptの抜き出しです。 https://github.com/nptcl/hypd/tree/main/develop/unicode たぶん私だけだと思いますが、 UTF-8の読み込みは本当によく使います。 どれだけ同じようなものを作…

C言語でxorshiftの乱数を使う

1. はじめに C言語でxorshiftという乱数発生を使うコードを作成しました。 前回のeastasianと同じように、nptから抜き出したものです。 配布はここ。 https://github.com/nptcl/hypd/tree/main/develop/random 最初にひどいことを言っておきますが、 私はこ…

C言語でEast Asian Widthを調べる

1. はじめに C言語でEast Asian Widthを調べるコードを作りました。 作ったといってもnptのソースから抜き出しただけですが。 配布はここ。 https://github.com/nptcl/hypd/tree/main/develop/eastasian ある機能がnpt内だけで使えるというのは個人的に不便…

Dictionaryの翻訳完了とバグ報告

ANSI Common LispのDictionaryの翻訳が終わりました。 トップはここ。 https://nptcl.github.io/npt-japanese/md/ansicl/index.html 気が向いたらformatの構文のところだけ翻訳するかもしれません。 ~Aの使い方とかいつもいつも自分が困ってるんで。 翻訳し…

Common Lispから日本語のDictionaryを見る

以前の投稿 ANSI Common LispのDictionaryだけ翻訳したい - nptclのブログでは、 Dictionaryだけを日本語に翻訳して行こうと話しましたが、 残念ながらまだ全部は翻訳できていません。 とはいえ現段階では70%くらい完了しました。 これが終わったらnptをい…

base64の変換を作る

C言語とCommon Lispで、base64を扱うコードを作成しました。 https://github.com/nptcl/hypd develop/base64 base64.c base64.h base64.lisp base64のコードはすでに何人も作成しており、 C言語では検索するだけでコードがいっぱい出てきます。 Common Lisp…

ANSI Common LispのDictionaryだけ翻訳したい

Dictionaryだけ翻訳したいです。 Dictionaryだけです。 ANSI Common Lisp仕様書の、各章にあるDictionaryだけを翻訳していきます。 ということで、ここでやって行きます。 まだ全然できていません。 https://nptcl.github.io/npt-japanese/docs/ansicl/index…

C言語で円周率の値を使う

円周率とは3.14のことです。 本当はもっと桁数があるので、前回の投稿では次のようにしていました。 #define PI 3.141592653589793238462643383276 小数桁数が30の例です。 FreeBSDで次のように実行すれば出てきます。 $ echo 'scale=30; a(1)*4' | bc -l 3.…

Common LispでFFTを使う

1. はじめに FFT(高速フーリエ変換)の話題です。 まずは、ただコピーして使えるやつを示します。 そのあと長々と説明します。 (defun fftcore (v n sign) ;; bit reverse (let (a b y) (dotimes (x n) (setq a (ash n -1) y 0 b x) (do () ((zerop a)) (se…

Common LispでLALR(1)のparserを作る5

前回:Common LispでLALR(1)のparserを作る4 - nptclのブログ 1. 続きです Common LispでLALR(1)を作りました! 次にやることはでっかい構文を読み込ませることです。 ここではC言語の文法について見ていきます。 2. 大きな構文解析 C言語の構文解析をしてみ…

Common LispでLALR(1)のparserを作る4

前回:Common LispでLALR(1)のparserを作る3 - nptclのブログ 1. 続きです Common LispでLR(1)の表を作りました! あとは実行してみて、そのあとでLALR(1)もやってみます。 2. 構文解析の実行 実行するためには、新たにスタックが必要になります。 すでに構…

Common LispでLALR(1)のparserを作る3

前回:Common LispでLALR(1)のparserを作る2 - nptclのブログ 1. 続きです Common LispでひたすらLR(1)を作成するコーナーです。 CLOSUREまで作ったので、状態遷移表の作成に入ります。 2. GOTO CLOSUREができたら、次はGOTOを作りましょう。 まずは定義から…

Common LispでLALR(1)のparserを作る2

前回:Common LispでLALR(1)のparserを作る1 - nptclのブログ 【変更】first-parseを修正しました。 1. 続きです Common Lispでひたすらparserを作っていきます。 前回は、shift, reduceについて解説しました。 今回はLR(1)をひたすら作っていきます。 ここ…

Common LispでLALR(1)のparserを作る1

1. はじめに Common LispでLALR(1)のparserを作りたくなりました。 ここでは、ただひたすらparserを作っていきます。 テストコードですが完成版を先に置いておきます。 https://github.com/nptcl/parser/blob/main/blog/parser.lisp 2. parserの説明 parser…

nptでsoファイルを読み込む

npt

前回nptでDLLファイルを読み込む - nptclのブログの続きです。 前の投稿ではnptにDLLファイルを読み込ませましたが、 soファイルもやりたいな、ということでやりました。 個人的にはsoファイルの作成は初めてなので、 いろいろと勉強になりました。 1. nptの…

nptでDLLファイルを読み込む

npt

1. はじめに nptのWindows版で、DLLを読み込む機能を作りました。 FFIでは無いので注意。 npt用にDLLを作成すると読み込めるというものです。 【追記】soも作りました! nptでsoファイルを読み込む - nptclのブログ npt for Windowsは、なんとなくうまく動い…

npt for Windowsのコンパイル方法

npt

以前の投稿でnpt-windowsのバイナリを配布しました。 nptのWindows版を公開します - nptclのブログ ウィルスというか、トロイの木馬報告もされました。 npt64.exeのウィルス検出について - nptclのブログ ここでは手動でnpt-windowsをコンパイルする方法につ…

npt64.exeのウィルス検出について

npt

Microsoft Defenderから脅威が検出されました。 でもトレンドマイクロのオンラインスキャンでは問題なし。 誤動作の可能性があるので報告します。 下記のファイルです。 64bit版実行ファイル https://nptcl.github.io/npt-windows/npt64.exe 検出内容 Trojan…

nptのWindows版を公開します

npt

【注意】セキュリティの脅威が検出されましたのでご確認ください。 【注意】npt64.exeのウィルス検出について - nptclのブログ nptを、Windows上で使いやすいようにした実行ファイルです。 64bit版実行ファイル https://nptcl.github.io/npt-windows/npt64.e…

nptの日本語のドキュメントを移動する

npt

今まではブログにおいてました。 ANSI Common Lisp npt トップページ - nptclのブログ でもちゃんとバージョン管理したいと思っていましたので、 githubに移動することにしました。 移動先はこちら。 ★nptの日本語のドキュメント https://nptcl.github.io/np…

termeの操作関数を作る

npt

以前、readline / editlineの依存から脱出しようと、自前のプロンプトを作成しました。 その機能に、termeモジュールという名前を付けました。 何も考えずにnptをコンパイルすると標準で使えるようになっています。 どうやって実現したのかというと、端末をr…

nptのテストが終わる

npt

ANSI Common Lispの関数仕様に対応するテストケースを一通り完成させました。 以前よりはだいぶましにはなりましたけど、まだバグはいっぱいありますね。 残念ながらこれ以上は開発に時間をかけていられません。 パソコンも半分壊れてて、nptをコンパイルす…

deposit-field, dpbの使い方をいつも忘れる

ちゃんとメモしておきます。 まずはbytespecから 1. bytespec 位置とサイズを保有するオブジェクトです。 次のようにして生成します。 (byte size pos) 下記の例は「3番目から7個」という意味。 (byte 7 3) 図であらわします。 098769876543210 ------------…

正規表現とPrologとCommon Lisp

磯野ォ~、非決定性やろうぜ~!みたいなノリで、NFAを扱えないか考えていました。 PrologでNFAを扱うのはそんなに珍しい事じゃないと思いますので、 やっている人は沢山いると思います。 同じようにCommon LispでNFAを扱う人も普通にいます。 過去に自分もN…

麻雀とPrologとCommon Lisp

前の投稿Prologのようなものを作る - nptclのブログでは、 Common LispでPrologのようなものを作りました。 これが想像以上にPrologっぽかったので驚きました。 ちゃんとPrologしてますよ。 実は今まで私はPrologを使ったことがありませんでした。 でもせっ…

Prologのようなものを作る

Common LispでPrologのようなものを作りましたが。 こういうことをしてる人っていっぱいいると思います。 目新しい事ではないと思いますけど、苦労したので公開します。 もっと簡単にできると思ってたのに難しかったです。 本当はPrologを作るにあたっての注…

Scheme R7RSの形式意味論を読んでいく5(おわり)

ひとまず終わる これで関数の説明が全部終わりました。 リンクを張っておきます。 Scheme R7RSの形式意味論を読んでいく1 - nptclのブログ Scheme R7RSの形式意味論を読んでいく2 - nptclのブログ Scheme R7RSの形式意味論を読んでいく3 - nptclのブログ Sch…