「Geo3x3 README.md」
THPLとは、The HTML Programming Language、プログラミング言語としてのHTML。先日、エンコードを実装しましたが、THPLの言語自体に機能を足してデコードも実装。正式対応とすることができました。
足した機能は1つだけ、文字列から指定した場所の文字コードを取得する string/charCodeAt という機能。当初、簡単だったので、他の演算子と同様 math タグ内のエレメントとしての実装してプルリクしましたが、HTML標準から外れるということで、ご提案いただいた q タグによる実装に切り替えました。
「add math.charCodeAt by taisukef · Pull Request #2 · uhyo/the-html-programming-language」
オープンソースソフトウェア(OSS)のプログラミング言語は、言語自体を改造できるだけでなく、言語開発自体に貢献できるのがステキですね。
THPLは、TypeScriptで書かれたシンプルなプログラミング言語なので、プログラミング言語づくりの参考にもいい感じです。npm run build のコンパイル時間も30ミリ秒ほどと高速です!(liveserverと組み合わせればブラウザ上でのテストも簡単!)
今回の改造手順
1. THPLをフォーク
2. 抽象構文木(AST)の式(expression.ts)に、QExpression/qExpressionを追加。
3. 構文解析器(パーサー)のparseExpression.tsに、Qタグとciteプロパティ対応を追加。
4. インタプリタのrunExpression.tsにQExpressionへの対応と string/charCodeAt 処理を追加。
5. 例としてtest-charCodeAt.htmlを追加(ブラウザで動きます)。
6. プルリク
THPLにマージされたわけではありませんが、フライングでGeo3x3のTHPL対応としました。
「taisukef/Geo3x3: geo zone encoding, serialize latitude and longitude」
自作言語をお持ちの方、Geo3x3実装チャレンジしてみてください!