1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C言語風スクリプト言語 MicomScript Windows 版を使ってみた

Last updated at Posted at 2023-12-28

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 )によって開発されました。

なお、この記事を書いている私は、開発チームと関連はありません。

公式リンク

環境構築

Visual Studio のインストール(省略可)

Microsoft Visual C++ で開発されているようなので、コンパイルに Visual Studio のインストールが必要です。
開発者がコンパイルしたファイルもありますので、この作業は省略しても構いません。

Visual Studio にはエディションが複数ありますが、Community (個人・無料版) でもビルドできます。
公式の使い方ページによると Visual Studio 2017 のインストールが説明されていますが、2017 以降であれば動くと思われます。

確認はしていませんが、Visual Studio のインストール時、「C++ によるデスクトップ開発」にチェックを入れる必要があること思われます。(Visual C++ で開発されているため)
01.png

今回は Visual Studio Community 2022 で動作確認してみます。

ソースコードのダウンロード

GitHub micomscript/MicomScript-Win-1.0.0alpha からソースコードをダウンロードします。

サイトへアクセスしたら、右上の緑のボタン [Code] をクリックし、[Download ZIP] を選択します。
02.png

お好きな作業場所で ZIP ファイルを展開しましょう。

コンパイル(省略可)

今回は x64 でビルドしたいと思います。スタートメニューから [x64 Native Tools Command Prompt for VS 2022] を開くと、環境変数などが設定されたコマンドプロンプトが起動します。

03.png

まずは、ダウンロードしたソースコードの中にある 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 などで保存します。

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 マイコンに移植してみたい気もします。

あと、アカデミックなことはよくわからないのですが、この処理系はチューリング完全なんでしょうか……?

  1. 製品開発に利用されたなど、実用的なものはわかりませんが、他にも作ってみた方がいらっしゃるようです。(GitHub - EbiseLutica/PolaScript, nScript など)

  2. ポリテクカレッジ川内(川内職業能力開発短期大学校)は、鹿児島県にある公共の理工系短期大学校です。高校を卒業後、2年間ものづくり(電気・電子情報・機械など)を学べます。厚生労働省所管 独立行政法人高齢・障害・求職者雇用支援機構が運営しています。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?