MicomScript の概要
MicomScript とは、マイコンでも動作する C 言語風スクリプト言語 1 です。
大学の授業の一環で制作されたものらしく、ESP32 マイコンにも組み込めるようです。なお、この記事を書いている私はこの言語の開発者ではありません。
こんな感じの対話式インタプリタで動かせます。>
は cmd.exe、 $
は MicomScript のコマンドプロンプトです。
> mscript.exe
MicomScript 1.0.0-alpha
$ printf("Hello MicomScript World!\n")
Hello MicomScript World!
今回は MicomScript Windows 版をインストールして使ってみました。
本資料の対象者は次のとおりです。
- コマンドプロンプトで cd コマンドを実行できる
開発チームについて
このスクリプト言語は MicomScript 開発チーム(ポリテクカレッジ川内 2 )によって開発されました。
なお、この記事を書いている私は、開発チームと関連はありません。
公式リンク
- 公式サイト http://micomscript.html.xdomain.jp/
- 公式 Windows 版マニュアル http://micomscript.html.xdomain.jp/MicomScript_Windows-ReferenceManual.pdf
- GitHub ページ https://github.com/micomscript
環境構築
Visual Studio のインストール(省略可)
Microsoft Visual C++ で開発されているようなので、コンパイルに Visual Studio のインストールが必要です。
開発者がコンパイルしたファイルもありますので、この作業は省略しても構いません。
Visual Studio にはエディションが複数ありますが、Community (個人・無料版) でもビルドできます。
公式の使い方ページによると Visual Studio 2017 のインストールが説明されていますが、2017 以降であれば動くと思われます。
確認はしていませんが、Visual Studio のインストール時、「C++ によるデスクトップ開発」にチェックを入れる必要があること思われます。(Visual C++ で開発されているため)
今回は Visual Studio Community 2022 で動作確認してみます。
ソースコードのダウンロード
GitHub micomscript/MicomScript-Win-1.0.0alpha からソースコードをダウンロードします。
サイトへアクセスしたら、右上の緑のボタン [Code] をクリックし、[Download ZIP] を選択します。
お好きな作業場所で ZIP ファイルを展開しましょう。
コンパイル(省略可)
今回は x64 でビルドしたいと思います。スタートメニューから [x64 Native Tools Command Prompt for VS 2022] を開くと、環境変数などが設定されたコマンドプロンプトが起動します。
まずは、ダウンロードしたソースコードの中にある src フォルダへ移動します。
> cd "MicomScript-Win-1.0.0alpha ソースコードフォルダ"/src
> dir
2023/12/28 12:24 <DIR> .
2023/12/28 12:24 <DIR> ..
2023/12/28 12:24 311 cc.bat
2023/12/28 12:24 1,624 common.h
2023/12/28 12:24 373 cs.bat
(省略)
コンパイルを実行します。
> cc
Microsoft(R) C/C++ Optimizing Compiler Version 19.35.32215 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
expression.cpp
parser.cpp
tokenizer.cpp
token.cpp
varmap.cpp
sentence.cpp
function.cpp
logic.cpp
format.cpp
コードを生成中...
Microsoft (R) Incremental Linker Version 14.35.32215.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:mscript.exe
main.obj
expression.obj
parser.obj
tokenizer.obj
token.obj
varmap.obj
sentence.obj
function.obj
logic.obj
format.obj
正常にコンパイルできれば、同じフォルダに mscript.exe
が生成されます。
環境変数 Path への登録(省略可)
コンパイルで生成された mscript.exe
を他の場所でも mscript
コマンドで実行できると便利なので、環境変数 Path へ登録します。
次のサイトを参考にして、 mscript.exe
が格納フォルダ(例: {省略}\MicomScript-Win-1.0.0alpha\bin)を Path へ追加してみましょう。
Hello World の対話式実行
Visual Studio のインストールやコンパイルを省略した場合も、開発者が bin フォルダに用意した mscript.exe
を実行することができます。
ここでは、コンパイルした MicomScript を実行します。実行すると、Python などで見られる対話式インタプリタが起動します。
Hello World を実行してみましょう。>
は cmd.exe、 $
は MicomScript のコマンドプロンプトです。
> mscript
MicomScript 1.0.0-alpha
$ help
[Command List]
vlist - print Variable list
clist - print Constants list
flist - print Function list
undef - undefine Variable/Function
exit - finish execution
$ println("Hello MicomScript World!")
Hello MicomScript World!
$ exit
Fizz Buzz のスクリプト実行
対話式インタプリタだけではなく、ファイルに保存されたスクリプトも実行してみたいと思います。
まず、次のソースコードを fizzbuzz.txt
などで保存します。
var i
repeat(i = 1, 30) {
if ((i % 15) == 0) {
println("Fizz Buzz")
} else if ((i % 3) == 0) {
println("Fizz")
} else if ((i % 5) == 0) {
println("Buzz")
} else {
println(i)
}
}
> mscript fizzbuzz.txt
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
Fizz Buzz
感想
このスクリプト言語を作っている方(開発チームを主導している先生)から紹介されたので、レビューも兼ねて使ってみました。
言語処理の知識がないため、ソースコードの中身を読むまではできていませんが、非常によい教材だと感じました。
字句解析や構文解析の知識を学んでから再チャレンジしてみたいです。
また、ESP32 で動くのであれば、Microchip (Atmel) AVR マイコンに移植してみたい気もします。
あと、アカデミックなことはよくわからないのですが、この処理系はチューリング完全なんでしょうか……?