b2c2-casl2 0.1.4

b2c2におけるCASL2の雑なパーサー?
Documentation
  • Coverage
  • 0%
    0 out of 135 items documented0 out of 22 items with examples
  • Size
  • Source code size: 80.72 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.71 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • neetsdkasu/b2c2
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • neetsdkasu

b2c2

BASIC言語風の独自のプログラミング言語(?)のソースコードファイルからCASL2のソースコードファイルを生成しました


  • 生成されたCASL2コードの動作確認にはCASL2アセンブラ/COMET2シミュレータ等を別途用意する必要があります
  • 生成コードの最適化等はしてません(無意味・無駄・冗長な処理が複数あります。例: 分岐によるジャンプ処理などはラベルをつけたNOPで実現、など)
  • リポジトリのbasic_src_examplesにあるCASL2コードはIPAのCASL II シミュレータ(Java,V2.00(2005/05/27))で一応は動作確認済みです

Example: Fizz Buzz (その1)

リポジトリの basic_src_examples/fizz_buzz_1/ のディレクトリに入力のBASICファイルと出力のCASL2ファイルがあります

生成コマンド: cargo run -- -src fizzbuzz.bas (basic_src_examples/fizz_buzz_1/ での実行を想定)

入力ファイル: basic_src_examples/fizz_buzz_1/fizzbuzz.bas

'
' FIZZ BUZZ (1)
'
DIM I AS INTEGER
DIM C AS INTEGER
PRINT "LIMIT?"
INPUT C
C = MAX(1, MIN(100, C))
FOR I = 1 TO C STEP 1
    SELECT CASE I MOD 15
        CASE 0
            PRINT "FIZZBUZZ"
        CASE 3, 6, 9, 12
            PRINT "FIZZ"
        CASE 5, 10
            PRINT "BUZZ"
        CASE ELSE
            PRINT I
    END SELECT
NEXT I

Example: Fizz Buzz (その2)

リポジトリの basic_src_examples/fizz_buzz_2/ のディレクトリに入力のBASICファイルと出力のCASL2ファイルがあります

生成コマンド: cargo run -- -src fizzbuzz.bas (basic_src_examples/fizz_buzz_2/ での実行を想定)

入力ファイル: basic_src_examples/fizz_buzz_2/fizzbuzz.bas

'
' FIZZ BUZZ (2)
'
Dim s As String
Dim n As Integer
Do
    Print "Number?"
    Input s
    If s = "end" Then
        Exit Do
    End If
    n = CInt(s)
    If n < 1 Then
        Print "Invalid Input"
        Continue Do
    End If
    If n Mod 15 = 0 Then
        s = "FizzBuzz"
    ElseIf n Mod 3 = 0 Then
        s = "Fizz"
    ElseIf n Mod 5 = 0 Then
        s = "Buzz"
    Else
        s = CStr(n)
    End If
    Print s
Loop

その他

b2c2の実行に関して
  • b2c2の実行バイナリの提供はありません。ソースコードからビルドして実行してください
  • b2c2はCLI(command-line interface)のアプリです。出力するメッセージに日本語が含まれることがあるため日本語表示が可能なシェルやコマンドプロンプトを使用する必要があります
  • 網羅的にチェックはしてないのでBASICコード次第では期待どおりの動作をしないCASL2コードが生成される可能性もあります
  • BASICソースコードはUTF-8(BOMなし)で文字エンコーディングされたファイルとみなして読み込みます
  • 生成のCASL2ソースコードはUTF-8(BOMなし)の文字エンコーディングで出力されます
  • 文字数の埋め込みがある場合はUnicodeスカラ値の個数を文字数として埋め込みます
  • b2c2のBASIC言語についてはリポジトリのdoc/language.mdに概要が書いてあります
b2c2のビルドに関して
  • rustcのバージョンは1.58.0、cargoのバージョンは1.58.0を使用しました (他のバージョンでコンパイル可能かは未確認です)
  • toolchainはstable-i686-pc-windows-msvcを使用しました (toolchainは実行環境や開発環境に合わせて選択するものですが、他のtoolchainでb2c2をコンパイル可能かは未確認です)
  • Editionは2021を使用。標準ライブラリを使用しており、外部ライブラリは直接使用してません
b2c2のビルドと実行の例

ソースコードを取得してFizz Buzz (その1)を変換しFizz Buzz (その2)を変換するまでの一連のコマンドライン
※gitとcargoの両方ともインストール済みとします
※この例の場合では初回のcargo run実行時にb2c2が暗黙的にビルドされます

git clone https://github.com/neetsdkasu/b2c2
cd b2c2
cd basic_src_examples
cd fizz_buzz_1
cargo run -- -src fizzbuzz.bas
cd ..
cd fizz_buzz_2
cargo run -- -src fizzbuzz.bas
b2c2をインストールして使う場合

※cargoをインストール済みとします

  • インストール
    cargo installがソースコードの取得とビルドと実行バイナリの配置を行います
cargo install --git https://github.com/neetsdkasu/b2c2 --branch main
  • 実行
    ※BASICのソースコードファイルは適宜用意してください
b2c2 -src BASICのソースコードファイル
  • アンインストール
    ※実行バイナリの削除のみ。インストール時に取得されたソースコード等はどこかに残ったままのようです
cargo uninstall b2c2
閑話