「拡張子からコンソール実行」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
編集の要約なし
MSY-07 (トーク | 投稿記録)
SyntaxHighlightにcopyの追加
 
(3人の利用者による、間の24版が非表示)
1行目: 1行目:
== [[File:拡張子でコンソール実行.png]] 概要 ==
== 概要 ==
[[コンソール実行]]をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。<br>
[[コンソール実行]]をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。
拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。<br>
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。<br>
不具合要望などは以下のリンクまで。<br>
<br>
[http://yosgspec.blog103.fc2.com/blog-entry-2939.html もう少しリファレンス]


== [[File:拡張子でコンソール実行.png]] 対応済み言語処理系一覧 ==
拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。
C、C++(VC++、BCC32、GCC、G++)、D、C#(Momo)、scriptcs、Java、Scala、Groovy、Perl、PHP(Phalanger)<br>
 
Go、Dart、R言語、JavaScript(Node.js、JScript、JScript.NET、Rhino)、TypeScript、Fortran(G)、<br>
足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。
VBScript、VB.NET(Mono)、Pascal(FPC)、Ada(GNAT)、Ruby(JRuby、IR)、Lua(JIT)、<br>
 
Matlab(Octave)、Scilab、Python(PyPy、Jython、IPy)、なでしこ、CoffeeScript、<br>
不具合要望などは[http://yosgspec.blog103.fc2.com/blog-entry-2939.html Mery コンソール実行改改]まで。
CommonLisp(CLISP、SBCL、MKCL、CCL)、Scheme(Gauche)、Clojure(JVM、CLR)、<br>
 
== 対応済み言語・処理系一覧 ==
C、C++(VC++/BCC32/GCC/G++)、D、C#(.NET framework/Mono/.NET Core/.NET)、C#Script(csi/Mono/scriptcs/dotnet-script)、<br>
Java、Scala、Groovy、Perl、PHP(Phalanger)、Go、Dart、Rust、R言語、<br>
JavaScript(Node.js/JScript/JScript.NET/Rhino)、TypeScript(tsc/ts-node)、Fortran(G)、<br>
VBScript、VB.NET(.NET framework/Mono/.NET Core/.NET)、BASIC(FreeBasic)、HSP3(hspc)、Pascal(FPC)、Ada(GNAT)、Ruby(JRuby/IR)、Lua(JIT)、<br>
Matlab(Octave)、Scilab、Python(CPython/PyPy/Jython/IPy)、なでしこ、CoffeeScript、<br>
CommonLisp(CLISP/SBCL/MKCL/CCL)、EmacsLisp、Scheme(Gauche/Sagittarius)、Clojure(JVM/CLR/ClojureScript)、<br>
F#、Haskell(GHC)、CASL II、NASM、.NetIL(ilasm)、BAT、WSF、PowerShell<br>
F#、Haskell(GHC)、CASL II、NASM、.NetIL(ilasm)、BAT、WSF、PowerShell<br>
<br>
 
※ただし、基本的にはパスが通っていることが前提。<br>
※ただし、基本的にはパスが通っていることが前提。
HSPはコマンドラインコンパイラが標準で用意されていないため断念。<br>
 
HSPはコマンドラインコンパイラが標準で用意されていないため断念。
 
公式プラグインの[[プラグイン:HSPコンパイル実行プラグイン|HSPコンパイル実行プラグイン]]をご利用ください。
公式プラグインの[[プラグイン:HSPコンパイル実行プラグイン|HSPコンパイル実行プラグイン]]をご利用ください。


== [[File:拡張子でコンソール実行.png]] ZIP ==
 ⇒[https://dev.onionsoft.net/seed/info.ax?id=1392 hspc]を使うことで部分的に対応しました。<br>
[[Media:拡張子でコンソール実行inマクロ.zip|ダウンロード【2016/05/14版】]]<br>
  コンソールアプリを使用する場合はこちらを使用した方が良いかと思います。<br>
[[:File:拡張子でコンソール実行inマクロ.zip|旧版]]<br>
変換済みicoファイル込<br>


== [[File:拡張子でコンソール実行.png]] アイコン ==
※2 処理系ではないけどjs系はUglify.jsがコメント追記で呼べるようになりました。
  [[File:拡張子でコンソール実行.png]] [[File:拡張子でコンソール実行2.png]]


== [[File:拡張子でコンソール実行.png]] ソース ==
== ダウンロード ==
;exec_cmd.vbs
[[ファイル:拡張子でコンソール実行inマクロ.zip]]
<syntaxhighlight lang=VBScript line>
 
変換済みicoファイル込
 
== アイコン ==
[[File:拡張子でコンソール実行.png]] [[File:拡張子でコンソール実行2.png]]
 
== ソースコード ==
=== exec_cmd.vbs ===
<syntaxhighlight lang="vbscript" copy>
#icon="exec_cmd.ico"
#icon="exec_cmd.ico"
#title="コンソール実行"
#title="コンソール実行"
' exec_cmd.vbs
' exec_cmd.vbs
' 2022-10-07 19:26
Dim cmd:Set cmd=CreateObject("WScript.Shell")


'ファイルの保存
'ファイルの保存
Document.Save()
Document.Save(document.FullName)


'保存してなければ終了。
'保存してなければ終了。
57行目: 69行目:
'C++
'C++
Case "cpp"
Case "cpp"
'ENGINE="cl"
ENGINE="cl"
'ENGINE="bcc32"
'ENGINE="bcc32"
ENGINE="g++"
'ENGINE="g++"
'ENGINE="clang"
'D言語
Case "d"
ENGINE="dmd"
'ENGINE="gdc"
'ENGINE="ldc"
'C#
'C#
Case "cs"
Case "cs"
ENGINE="csc"
ENGINE="csc"
'ENGINE="mcs"
'ENGINE="mcs"
'ENGINE="msbuild"
'ENGINE="dotnet"
'C#Script
Case "csx"
'ENGINE="csi"
'ENGINE="csharp"
'ENGINE="scriptcs"
ENGINE="dotnet-script"
'Perl
'Perl
Case "pl"
Case "pl"
74行目: 100行目:
'JavaScript
'JavaScript
Case "js"
Case "js"
'ENGINE="node"
ENGINE="node"
ENGINE="jscript"
'ENGINE="jscript"
'ENGINE="jsc"
'ENGINE="jsc"
'ENGINE="rhino"
'ENGINE="rhino"
'TypeScript
Case "ts"
ENGINE="tsc"
'ENGINE="ts-node"
'VB.NET
'VB.NET
Case "vb"
Case "vb"
ENGINE="vbc"
ENGINE="vbc"
'ENGINE="vbnc"
'ENGINE="vbnc"
'ENGINE="msbuild"
'ENGINE="dotnet"
'Ruby
'Ruby
Case "rb"
Case "rb"
91行目: 123行目:
ENGINE="lua"
ENGINE="lua"
'ENGINE="luajit"
'ENGINE="luajit"
'Matlab
'MATLAB
Case "m"
Case "m"
'ENGINE="matlab"
'ENGINE="matlab"
97行目: 129行目:
'Python
'Python
Case "py"
Case "py"
ENGINE="python"
'ENGINE="python"
'ENGINE="python2"
ENGINE="python3"
'ENGINE="pypy"
'ENGINE="pypy"
'ENGINE="pypy3"
'ENGINE="jython"
'ENGINE="jython"
'ENGINE="ipy"
'ENGINE="ipy"
104行目: 139行目:
'LISP, CommonLisp
'LISP, CommonLisp
Case "l","lisp","lsp","cl"
Case "l","lisp","lsp","cl"
ENGINE="clisp"
'ENGINE="clisp"
'ENGINE="sbcl"
ENGINE="sbcl"
'ENGINE="ccl"
'ENGINE="ccl"
'ENGINE="ccl64"
'ENGINE="ccl64"
'ENGINE="mkcl"
'ENGINE="mkcl"
'LISP, CommonLisp
Case "scm"
'ENGINE="gosh"
ENGINE="sash"
'Clojure
'Clojure
Case "clj"
Case "clj","cljs"
ENGINE="clojure"
'ENGINE="clojure"
'ENGINE="clojure-clr"
'ENGINE="clojure-clr"
'ENGINE="clojure-script"
ENGINE="boot"
'ENGINE="lumo"
End Select
End Select
End Function
End Function
119行目: 161行目:
Function ENGINE_PATH(file_format)
Function ENGINE_PATH(file_format)
Select Case LCase(file_format)
Select Case LCase(file_format)
'VC++
Case "cl"
'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 14.0\VC\bin"
ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\bin"
'C#, VB.NET
'C#, VB.NET
Case "csc","vbc"
Case "csc","vbc"
ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
'ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin"
'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin"
'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\12.0\Bin"
'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\12.0\Bin"
'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
'Mono C#, VB.NET
'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn"
'ENGINE_PATH="%ProgramFiles%\Mono\bin"
'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
'Mono C#, Mono VB.NET
Case "mcs","vbnc"
Case "mcs","vbnc"
'ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
'C#Script
Case "csi"
'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn"
'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn"
'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn"
'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
'Mono C#Script
Case "csharp"
ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
'JScript.NET
'JScript.NET
Case "msbuild"
'ENGINE_PATH="msbuild"
'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild"
ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild"
'ENGINE_PATH="%ProgramFiles%\Mono\bin\msbuild"
Case "jsc"
Case "jsc"
ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727"
ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727"
152行目: 220行目:
ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\F#\3.1\Framework\v4.0"
ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\F#\3.1\Framework\v4.0"
'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\F#\3.1\Framework\v4.0"
'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\F#\3.1\Framework\v4.0"
'HSP
Case "hsp"
'HSPのバージョンによってパスを変更すること。
ENGINE_PATH="%HOMEDRIVE%\hsp35"
'CASL II
'CASL II
Case "cas"
Case "cas"
174行目: 246行目:
ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
End Select
End Select
End Function
'js圧縮コマンド(uglifyjs)
Function COMP_JS()
COMP_JS=Join(Array( _
"uglifyjs -m -o ",DOC_NAME,".min.js ",DOC_NAME,".js",br, _
"javascript-obfuscator ",DOC_NAME,".min.js --renameGlobals true --rotateStringArray true、--selfDefending true --stringArrayThreshold 0.75" _
),"")
End Function
End Function


199行目: 279行目:
DOC_NAME=Mid(DOC_NAME,1,Len(DOC_NAME)-1)
DOC_NAME=Mid(DOC_NAME,1,Len(DOC_NAME)-1)


'実行時exe, classにコンパイルする形式の場合は一行目にコメントで
'実行時exe、class、obj、js、min.jsにコンパイルする形式の場合は一行目にコメントで
' delexe, delclass を含めることで事前にexe, classを削除することができます。
' delexe, delclass, delobj, deljs, delmin を含めることで
'事前にexe, class, obj, js, min.jsを削除することができます。


'タイトル、実行コマンド
'タイトル、実行コマンド
Select Case LCase(file_format)
If load_option("cmd:") Then
Case "c","cpp" 'C, C++
'一行目に"cmd:"を含めるとそれ以降が実行コマンドになる。
Select Case ENGINE(file_format)
'ただし、既定の実行エンジンも指定されないため、
Case "cl" 'Visual C++  
'そこを含めてのコマンド設定が必要。
TITLE="Visual C++ " & Document.Name
EXEC_COMMAND=Split(LCase(Document.GetLine(1)),"cmd:")(1)
EXEC_COMMAND=Join(Array( _
 
"cl ",Document.Name,br, _
Else
DOC_NAME,".exe" _
Select Case LCase(file_format)
),"")
Case "c","cpp" 'C, C++
Select Case ENGINE(file_format)
Case "cl" 'Visual C++  
TITLE="Visual C++ " & Document.Name
EXEC_COMMAND=Join(Array( _
"""",Replace(ENGINE_PATH(ENGINE(file_format)),"\bin",""),"\vcvarsall"" & ",_
"""",ENGINE_PATH(ENGINE(file_format)),"\cl"" /nologo /EHsc  /openmp ",Document.Name,br, _
DOC_NAME,".exe" _
),"")
 
Case "bcc32" 'Borland C++
TITLE="Borland C++ " & Document.Name
EXEC_COMMAND=Join(Array( _
"bcc32 ",Document.Name,br, _
DOC_NAME,".exe" _
),"")
 
Case "gcc" 'GCC C
TITLE="GCC C " & Document.Name
EXEC_COMMAND=Join(Array( _
"gcc -o ",DOC_NAME,".exe ",Document.Name,br, _
DOC_NAME,".exe" _
),"")
 
Case "g++" 'GCC C++
'コンパイルオプション
'一行目に //not11 と入力するとC++11以前のコンパイルを行う。
If load_option("//not11") Then
CMD_OPTION=""
Else
CMD_OPTION="-std=c++11 "
End If
TITLE="GCC C++ " & Document.Name
EXEC_COMMAND=Join(Array( _
"g++ ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _
DOC_NAME,".exe" _
),"")


Case "bcc32" 'Borland C++
Case "clang" 'clang C++
TITLE="Borland C++ " & Document.Name
TITLE="clang C++ " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND=Join(Array( _
"bcc32 ",Document.Name,br, _
"clang ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _
DOC_NAME,".exe" _
DOC_NAME,".exe" _
),"")
),"")
End Select


Case "gcc" 'GCC C
Case "d" 'D言語
TITLE="GCC C " & Document.Name
Select Case ENGINE(file_format)
EXEC_COMMAND=Join(Array( _
Case "dmd"
"gcc -o ",DOC_NAME,".exe ",Document.Name,br, _
TITLE="D言語(dmd) " & Document.Name
DOC_NAME,".exe" _
EXEC_COMMAND="dmd " & Document.Name & br & DOC_NAME & ".exe"
),"")
Case "gdc"
TITLE="D言語(gdc) " & Document.Name
EXEC_COMMAND="gdc " & Document.Name & br & DOC_NAME & ".exe"
Case "ldc"
TITLE="D言語(ldc) " & Document.Name
EXEC_COMMAND="ldc2 " & Document.Name & br & DOC_NAME & ".exe"
End Select


Case "g++" 'GCC C++
Case "cs" 'C#
TITLE="GCC C++ " & Document.Name
'コンパイルファイル選択
EXEC_COMMAND=Join(Array( _
'デフォルトでフォルダ内全てをコンパイル。
"g++ -o ",DOC_NAME,".exe ",Document.Name,br, _
'一行目に //only と加えることでそのファイルのみコンパイルを行う。
DOC_NAME,".exe" _
If load_option("//only") Then
),"")
PKG_FILES=Document.Name
End Select
Else
PKG_FILES="*.cs"
End If


Case "d" 'D言語
Select Case ENGINE(file_format)
TITLE="D言語 " & Document.Name
Case "csc" 'C#
EXEC_COMMAND="dmd " & Document.Name & br & DOC_NAME & ".exe"
TITLE="C# " & Document.Name
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(ENGINE(file_format)),"\csc"" ", _
"/nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
DOC_NAME,".exe" _
),"")


Case "cs" 'C#
Case "mcs" 'Mono C#
'コンパイルファイル選択
TITLE="Mono C# " & Document.Name
'デフォルトでフォルダ内全てをコンパイル。
EXEC_COMMAND=Join(Array( _
'一行目に //only と加えることでそのファイルのみコンパイルを行う。
"""",ENGINE_PATH(ENGINE(file_format)),"\mcs"" ", _
If load_option("//only") Then
"-out:",DOC_NAME,".exe ",PKG_FILES," -optimize+",br, _
PKG_FILES=Document.Name
DOC_NAME,".exe" _
Else
),"")
PKG_FILES="*.cs"
 
End If
Case "msbuild" 'C# MSbuild
TITLE="C# MSBuild" & Document.Name
EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """"
 
Case "dotnet" 'C# .NET Core/.NET
TITLE="C# .NET" & Document.Name
EXEC_COMMAND="dotnet run"
End Select
 
Case "csx" 'C#Script
Select Case ENGINE(file_format)
Case "csi" 'C#Script
TITLE="C#Script " & Document.Name
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(ENGINE(file_format)),"\csi"" ",Document.Name _
),"")
 
Case "csharp" 'Mono C#Script
TITLE="Mono C#Script " & Document.Name
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(ENGINE(file_format)),"\csharp"" ",Document.Name _
),"")
 
Case "scriptcs" 'ScriptCS
TITLE="scriptcs " & Document.Name
EXEC_COMMAND="scriptcs " & Document.Name
 
Case "dotnet-script" 'dotnet script
TITLE="detnet script " & Document.Name
EXEC_COMMAND="dotnet-script " & Document.Name
End Select
 
Case "java" 'Java
'jar化は手順が面倒そうなので保留
TITLE="Java " & Document.Name
EXEC_COMMAND=Join(Array( _
"javac ",Document.Name,br, _
"java ",DOC_NAME _
),"")
 
Case "scala" 'Scala
'コンパイルオプション
'一行目に //class と加えることでclassファイルにコンパイルを行う。
TITLE="Scala " & Document.Name
If load_option("//class") Then
EXEC_COMMAND="scalac " & Document.Name
Else
EXEC_COMMAND="scala " & Document.Name
End If
 
Case "groovy" 'Groovy
'コンパイルオプション
'一行目に //class と加えることでclassファイルにコンパイルを行う。
TITLE="Groovy " & Document.Name
If load_option("//class") Then
EXEC_COMMAND="groovyc " & Document.Name
Else
EXEC_COMMAND="groovy " & Document.Name
End If
 
Case "pl" 'Perl
Select Case ENGINE(file_format)
Case "perl" 'Perl5まで
TITLE="Perl " & Document.Name
EXEC_COMMAND="perl " & Document.Name
 
Case "perl6" 'Perl6
TITLE="Perl6 " & Document.Name
EXEC_COMMAND="perl6 " & Document.Name
End Select


Select Case ENGINE(file_format)
Case "php" 'PHP
Case "csc" 'C#
Select Case ENGINE(file_format)
TITLE="C# "+ Document.Name
Case "php" 'PHP
EXEC_COMMAND=Join(Array( _
TITLE="PHP " & Document.Name
"""",ENGINE_PATH(ENGINE(file_format)),"\csc"" ", _
EXEC_COMMAND="php " & Document.Name
"/nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
DOC_NAME,".exe" _
),"")


Case "mcs" 'Mono C#
Case "phpc" 'Phalanger
TITLE="Mono C# "+ Document.Name
TITLE="Phalanger " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(ENGINE(file_format)),"\mcs"" ", _
"phpc /debug- /quiet ",Document.Name,br, _
"-out:",DOC_NAME,".exe ",PKG_FILES," -optimize+",br, _
"bin\",DOC_NAME,".exe" _
DOC_NAME,".exe" _
),"")
),"")
End Select
End Select


Case "csx" 'scriptcs
Case "go" 'Go
TITLE="scriptcs "+ Document.Name
'コンパイルオプション
EXEC_COMMAND="scriptcs " & Document.Name
'一行目に//buildでビルドを行う。
If load_option("//build") Then
CMD_OPTION="build "
Else
CMD_OPTION="run "
End If
TITLE="Go " & Document.Name
EXEC_COMMAND=Join(Array( _
"go ",CMD_OPTION,Document.Name _
),"")


Case "java" 'Java
Case "dart" 'Dart
'jar化は手順が面倒そうなので保留
TITLE="Dart " & Document.Name
TITLE="Java " & Document.Name
EXEC_COMMAND="dart " & Document.Name _
EXEC_COMMAND=Join(Array( _
"javac ",Document.Name,br, _
"java ",DOC_NAME _
),"")


Case "scala" 'Scala
Case "rs" 'Rust
'コンパイルオプション
TITLE="Rust " & Document.Name
'一行目に //class と加えることでclassファイルにコンパイルを行う。
EXEC_COMMAND=Join(Array( _
TITLE="Scala " & Document.Name
"rustc  ",Document.Name,br, _
If load_option("//class") Then
DOC_NAME,".exe" _
EXEC_COMMAND="scalac " & Document.Name
),"")
Else
EXEC_COMMAND="scala " & Document.Name
End If


Case "groovy" 'Groovy
Case "r","q","s" 'R言語
'コンパイルオプション
TITLE="R言語 " & Document.Name
'一行目に //class と加えることでclassファイルにコンパイルを行う。
EXEC_COMMAND="rscript " & Document.Name
TITLE="Groovy " & Document.Name
If load_option("//class") Then
EXEC_COMMAND="groovyc " & Document.Name
Else
EXEC_COMMAND="groovy " & Document.Name
End If


Case "pl" 'Perl
Case "js" 'JavaScript
Select Case ENGINE(file_format)
If load_option("//comp") Then
Case "perl"
'js圧縮モード
TITLE="Perl " & Document.Name
'一行目にコメントで //compと加える。
EXEC_COMMAND="perl " & Document.Name
TITLE="Uglify.js " & Document.Name
EXEC_COMMAND=COMP_JS & BUILDED
Else
Select Case ENGINE(file_format)
Case "node" 'Node.js
'デバッグオプション
'一行目に、
' //debug 又は //inspect
'と加えることでデバッグモードでの実行を行う。
If load_option("//debug") _
Or load_option("//inspect") Then
CMD_OPTION="--inspect"
Else
CMD_OPTION=""
End If


Case "perl6"
TITLE="Node.js " & Document.Name
TITLE="Perl " & Document.Name
EXEC_COMMAND=Join(Array("node ",CMD_OPTION," ",Document.Name),"")
EXEC_COMMAND="perl6 " & Document.Name
End Select


Case "php" 'PHP
Case "jscript" 'JScript
Select Case ENGINE(file_format)
TITLE="JScript " & Document.Name
Case "php" 'PHP
EXEC_COMMAND="cscript //nologo //E:JScript " & Document.Name
TITLE="PHP " & Document.Name
EXEC_COMMAND="php " & Document.Name


Case "phpc" 'Phalanger
Case "jsc" 'JScript.NET
TITLE="Phalanger " & Document.Name
PKG_FILES=Document.Name
EXEC_COMMAND=Join(Array( _
TITLE="JScript.NET " & Document.Name
"phpc /debug- /quiet ",Document.Name,br, _
EXEC_COMMAND=Join(Array( _
"bin\",DOC_NAME,".exe" _
"""",ENGINE_PATH(ENGINE(file_format)),"\jsc"" /nologo /out:", _
),"")
DOC_NAME,".exe ",PKG_FILES,br, _
End Select
DOC_NAME,".exe" _
),"")


Case "go" 'Go
Case "rhino" 'Rhino
'コンパイルオプション
TITLE="Rhino " & Document.Name
'一行目に//buildでビルドを行う。
EXEC_COMMAND=Join(Array("java -jar ",ENGINE_PATH(ENGINE(file_format)),"\js.jar ",Document.Name),"")
If load_option("//build") Then
End Select
CMD_OPTION="build"
End If
Else
CMD_OPTION="run"
End If


Case "dart" 'Dart
Case "ts" 'TypeScript
TITLE="Dart " & Document.Name
TITLE="TypeScript to " & ENGINE("js") & " " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND=Join(Array("tsc --locale ja-JP -t esnext ",Document.Name,br),"")
"dart ",Document.Name _
),"")
If load_option("//comp") Then
'js圧縮モード
'一行目にコメントで //compと加える。
TITLE="Uglify.js + " & TITLE
EXEC_COMMAND=EXEC_COMMAND & COMP_JS & BUILDED
Else
Select Case ENGINE("ts")
Case "tsc"
'JavaScript実行
Select Case ENGINE("js")
Case "node" 'Node.js
EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
"node ",DOC_NAME,".js" _
),"")


Case "r","q","s" 'R言語
Case "jscript" 'JScript
TITLE="R言語 " & Document.Name
EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
EXEC_COMMAND="rscript " & Document.Name
"cscript //nologo //E:JScript ",DOC_NAME,".js" _
),"")
End Select


Case "js" 'JavaScript
Case "ts-node" 'ts-node
Select Case ENGINE(file_format)
EXEC_COMMAND="ts-node " & Document.Name
Case "node" 'Node.js
End Select
'デバッグオプション
End If
'一行目に、
' //debug と加えることでデバッグモードでの実行を行う。
If load_option("//debug") Then
CMD_OPTION="debug"
Else
CMD_OPTION=""
End If
TITLE="Node.js " & Document.Name
EXEC_COMMAND=Join(Array("node ",CMD_OPTION," ",Document.Name),"")


Case "jscript" 'JScript
Case "f","f90","f95","f03" 'Fortran
TITLE="JScript " & Document.Name
TITLE="GFortran " & Document.Name
EXEC_COMMAND="cscript //nologo //E:JScript " & Document.Name
EXEC_COMMAND=Join(Array( _
"gfortran -o ",DOC_NAME," ",Document.Name,br, _
DOC_NAME,".exe" _
),"")


Case "jsc" 'JScript.NET
Case "vbs" 'VBScript
TITLE="VBScript " & Document.Name
EXEC_COMMAND="cscript  //nologo //E:VBScript " & Document.Name
 
Case "vb" 'VB.NET
'コンパイルファイル選択
'デフォルトでフォルダ内全てをコンパイル。
'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
If load_option("'only") Then
PKG_FILES=Document.Name
PKG_FILES=Document.Name
TITLE="JScript.NET "+ Document.Name
Else
EXEC_COMMAND=Join(Array( _
PKG_FILES="*.vb"
"""",ENGINE_PATH(ENGINE(file_format)),"\jsc"" /nologo /out:", _
End If
DOC_NAME,".exe ",PKG_FILES,br, _
 
DOC_NAME,".exe" _
Select Case ENGINE(file_format)
),"")
Case "vbc" 'VB.Net
TITLE="VB.Net " & Document.Name
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(ENGINE(file_format)),"\vbc""", _
" /removeintchecks /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
DOC_NAME,".exe" _
),"")
 
Case "vbnc" 'Mono VB.NET
TITLE="Mono VB.NET"
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(ENGINE(file_format)),"\vbnc""", _
" /quiet /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
DOC_NAME,".exe" _
),"")
 
Case "msbuild" 'VB.Net MSBuild
TITLE="VB.Net MSBuild" & Document.Name
EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """"
 
Case "dotnet" 'VB.Net .NET Core/.NET
TITLE="VB.Net .NET" & Document.Name
EXEC_COMMAND="dotnet run"
End Select


Case "rhino" 'Rhino
Case "bas" 'BASIC
TITLE="Rhino " & Document.Name
TITLE="FreeBasic " & Document.Name
EXEC_COMMAND=Join(Array("java -jar ",ENGINE_PATH(ENGINE(file_format)),"\js.jar ",Document.Name),"")
EXEC_COMMAND=Join(Array( _
End Select
"fbc -lang deprecated ",Document.Name,br, _
DOC_NAME,".exe" _
),"")


Case "ts" 'TypeScript
Case "hsp","as" 'HSP
TITLE="TypeScript to " & ENGINE("js") & " " & Document.Name
TITLE="HSP " & Document.Name
EXEC_COMMAND=Join(Array("""",ENGINE_PATH(file_format),"\tsc"" ",Document.Name,br),"")
EXEC_COMMAND=Join(Array( _
ENGINE_PATH(file_format),"\hspc -mP -C ",Document.Name,br, _
"(if exist start.ax ", _
"cls",br, _
"del start.ax",br, _
"del packfile",br, _
"move /y hsptmp.exe ",DOC_NAME,".exe > nul", _
")",br, _
DOC_NAME,".exe" _
),"")


'エンジン選択
Case "pas","pp" 'PASCAL
Select Case ENGINE("js")
TITLE="FreePascal " & Document.Name
Case "node" 'Node.js
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
"fpc ",Document.Name,br, _
"node ",DOC_NAME,".js" _
DOC_NAME,".exe" _
),"")
),"")


Case "jscript" 'JScript
Case "adb" 'Ada
EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
TITLE="GNAT Ada " & Document.Name
"cscript //nologo //E:JScript ",DOC_NAME,".js" _
EXEC_COMMAND=Join(Array( _
),"")
"gnatmake ",Document.Name,br _
End Select
,DOC_NAME,".exe" _
),"")


Case "f","f90","f95","f03" 'Fortran
Case "rb" 'Ruby
TITLE="GFortran " & Document.Name
Select Case ENGINE(file_format)
EXEC_COMMAND=Join(Array( _
Case "ruby" 'Ruby
"gfortran -o ",DOC_NAME," ",Document.Name,br, _
TITLE="Ruby " & Document.Name
DOC_NAME,".exe" _
EXEC_COMMAND="ruby " & Document.Name
),"")


Case "vbs" 'VBScript
Case "jruby" 'JRuby
TITLE="VBScript " & Document.Name
TITLE="JRuby " & Document.Name
EXEC_COMMAND="cscript  //nologo //E:VBScript " & Document.Name
EXEC_COMMAND="jruby " & Document.Name


Case "vb" 'VB.NET
Case "ir" 'IronRuby
'コンパイルファイル選択
TITLE="IronRuby " & Document.Name
'デフォルトでフォルダ内全てをコンパイル。
EXEC_COMMAND="ir " & Document.Name
'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
End Select
If load_option("'only") Then
PKG_FILES=Document.Name
Else
PKG_FILES="*.vb"
End If


Select Case ENGINE(file_format)
Case "lua" 'Lua
Case "vbc" 'VB.NET
Select Case ENGINE(file_format)
TITLE="VB.NET "+ Document.Name
Case "lua" 'Lua
EXEC_COMMAND=Join(Array( _
TITLE="Lua " & Document.Name
"""",ENGINE_PATH(ENGINE(file_format)),"\vbc""", _
EXEC_COMMAND="lua " & Document.Name
" /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
DOC_NAME,".exe" _
),"")


Case "vbnc" 'Mono VB.NET
Case "luajit" 'LuaJIT
TITLE="Mono VB.NET"
TITLE="LuaJIT " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND="luajit " & Document.Name
"""",ENGINE_PATH(ENGINE(file_format)),"\vbnc""", _
End Select
" /quiet /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
DOC_NAME,".exe" _
),"")
End Select


Case "pas","pp" 'PASCAL
Case "m" 'MATLAB
TITLE="FreePascal " & Document.Name
Select Case ENGINE(file_format)
EXEC_COMMAND=Join(Array( _
Case "matlab" 'MATLAB
"fpc ",Document.Name,br, _
'環境不所持により、動作未確認。
DOC_NAME,".exe" _
TITLE="Matlab " & Document.Name
),"")
EXEC_COMMAND="matlab -nodisplay " & Document.Name


Case "adb" 'Ada
Case "octave" 'GNU Octave
TITLE="GNAT Ada " & Document.Name
TITLE="GNU Octave " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND="octave-cli " & Document.Name
"gnatmake ",Document.Name,br _
End Select
,DOC_NAME,".exe" _
),"")


Case "rb" 'Ruby
Case "sce" 'Scilab
TITLE="Ruby " & Document.Name
'最後にexitを実行しないとreplに移行します。
EXEC_COMMAND="ruby " & Document.Name
'また、日本語で文字化け注意。
Select Case ENGINE(file_format)
TITLE="Scilab " & Document.Name
Case "ruby" 'Ruby
EXEC_COMMAND="Scilex -nwni -nb -l ja -f " & Document.Name
TITLE="Ruby " & Document.Name
EXEC_COMMAND="ruby " & Document.Name


Case "jruby" 'JRuby
Case "py","pyw" 'Python
TITLE="JRuby " & Document.Name
Select Case ENGINE(file_format)
EXEC_COMMAND="jruby " & Document.Name
Case "python" 'Python
'コンパイルオプション
'一行目に #pyc と加えることでコンパイルを行う。
If load_option("#pyc") Then
CMD_OPTION="-m compileall"
Else
CMD_OPTION=""
End If


Case "ir" 'IronRuby
TITLE="Python " & Document.Name
TITLE="IronRuby " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND="ir " & Document.Name
"python ",CMD_OPTION," ",Document.Name _
End Select
),"")


Case "lua" 'Lua
Case "python2" 'Python2
Select Case ENGINE(file_format)
TITLE="Python2 " & Document.Name
Case "lua" 'Lua
EXEC_COMMAND="py -2 " & Document.Name
TITLE="Lua " & Document.Name
EXEC_COMMAND="lua " & Document.Name


Case "luajit" 'LuaJIT
Case "python3" 'Python3
TITLE="LuaJIT " & Document.Name
TITLE="Python3 " & Document.Name
EXEC_COMMAND="luajit " & Document.Name
EXEC_COMMAND="py -3 " & Document.Name
End Select


Case "m" 'Matlab
Case "pypy" 'PyPy
Select Case ENGINE(file_format)
TITLE="PyPy " & Document.Name
Case "matlab"
EXEC_COMMAND="pypy " & Document.Name
'環境不所持により、動作未確認。
TITLE="Matlab " & Document.Name
EXEC_COMMAND="matlab -nodisplay " & Document.Name


Case "octave"
Case "pypy3" 'PyPy3
TITLE="GNU Octave " & Document.Name
TITLE="PyPy3 " & Document.Name
EXEC_COMMAND="octave-cli " & Document.Name
EXEC_COMMAND="pypy3 " & Document.Name
End Select


Case "sce" 'Scilab
Case "jython" 'Jython
'最後にexitを実行しないとreplに移行します。
TITLE="Jython " & Document.Name
'また、日本語で文字化け注意。
EXEC_COMMAND="jython " & Document.Name
TITLE="Scilab " & Document.Name
EXEC_COMMAND="Scilex -nwni -nb -l ja -f " & Document.Name


Case "py" 'Python
Case "ipy" 'IronPython
Select Case ENGINE(file_format)
TITLE="IronPython " & Document.Name
Case "python" 'Python
EXEC_COMMAND="ipy " & Document.Name
'コンパイルオプション
'一行目に #pyc と加えることでコンパイルを行う。
If load_option("#pyc") Then
CMD_OPTION="-m compileall"
Else
CMD_OPTION=""
End If
TITLE="Python " & Document.Name
EXEC_COMMAND=Join(Array( _
"python ",CMD_OPTION," ",Document.Name _
),"")


Case "pypy" 'PyPy
Case "ipy64" 'IronPython
TITLE="PyPy " & Document.Name
TITLE="IronPython64 " & Document.Name
EXEC_COMMAND="pypy " & Document.Name
EXEC_COMMAND="ipy64 " & Document.Name
End Select


Case "jython" 'Jython
Case "coffee" 'CoffeeScript
TITLE="Jython " & Document.Name
'コンパイルオプション
EXEC_COMMAND="jython " & Document.Name
'一行目に #js と加えることでjsファイルにコンパイルを行う。
If load_option("#js") Then
CMD_OPTION="--compile"
Else
CMD_OPTION=""
BUILDED=""
End If


Case "ipy" 'IronPython
TITLE="CoffeeScript " & Document.Name
TITLE="IronPython " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND="ipy " & Document.Name
"""",ENGINE_PATH(file_format),"\coffee"" ",CMD_OPTION," ",Document.Name, _
Case "ipy64" 'IronPython
BUILDED _
TITLE="IronPython64 " & Document.Name
),"")
EXEC_COMMAND="ipy64 " & Document.Name
If load_option("#js") And load_option("comp") Then
End Select
'js圧縮モード
'一行目にコメントで #comp と加える。
TITLE="Uglify.js + " & TITLE
EXEC_COMMAND=Join(Array(EXEC_COMMAND,br,COMP_JS,BUILDED),"")
End If


Case "coffee" 'CoffeeScript
Case "nako" 'なでしこ
'コンパイルオプション
'起動オプション
'一行目に #js と加えることでjsファイルにコンパイルを行う。
'一行目にコメントで下記を含める。なしでコンソール実行
If load_option("#js") Then
' vnako: 標準GUI
CMD_OPTION="--compile"
' gnako: 簡易GUI
Else
' pad:  なでしこエディタ起動(コンパイルはエディタから行う)
CMD_OPTION=""
TITLE="なでしこ " & Document.Name
BUILDED=""
If load_option("vnako") Then
End If
EXEC_COMMAND="vnako " & Document.Name
ElseIf load_option("gnako") Then
EXEC_COMMAND="gnako " & Document.Name
ElseIf load_option("pad") Then
EXEC_COMMAND="nakopad " & Document.Name
Else
EXEC_COMMAND="cnako " & Document.Name
End If


TITLE="CoffeeScript " & Document.Name
Case "l","lisp","lsp","cl" 'LISP, CommonLisp
EXEC_COMMAND=Join(Array( _
Select Case ENGINE(file_format)
"""",ENGINE_PATH(file_format),"\coffee"" ",CMD_OPTION," ",Document.Name, _
Case "clisp" 'CLISP
BUILDED _
'コンパイルオプション
),"")
'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
If load_option(";fas") Then
CMD_OPTION="-c"
Else
CMD_OPTION=""
End If


Case "nako" 'なでしこ
TITLE="CLISP " & Document.Name
'起動オプション
EXEC_COMMAND=Join(Array("clisp ",CMD_OPTION," ",Document.Name),"")
'一行目にコメントで下記を含める。なしでコンソール実行
' vnako: 標準GUI
' gnako: 簡易GUI
' pad:  なでしこエディタ起動(コンパイルはエディタから行う)
TITLE="なでしこ " & Document.Name
If load_option("vnako") Then
EXEC_COMMAND="vnako " & Document.Name
ElseIf load_option("gnako") Then
EXEC_COMMAND="gnako " & Document.Name
ElseIf load_option("pad") Then
EXEC_COMMAND="nakopad " & Document.Name
Else
EXEC_COMMAND="cnako " & Document.Name
End If


Case "l","lisp","lsp","cl" 'LISP, CommonLisp
Case "sbcl" 'SteelBankCommonLisp
Select Case ENGINE(file_format)
'コンパイルオプション
Case "clisp" 'CLISP
'一行目に ;fasl と加えることでfaslファイルにコンパイルを行う。
'コンパイルオプション
'(Macros\exec_cmdフォルダにexec_sbcl_comp.lisp 必須)
'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
If load_option(";fas") Then
CMD_OPTION="-c"
Else
CMD_OPTION=""
End If


TITLE="CLISP " & Document.Name
'なお、SBCLのEXE化は以下の設定文をlispファイルに書き加えることで可能となる。
EXEC_COMMAND=Join(Array("clisp ",CMD_OPTION," ",Document.Name),"")
'(sb-ext:save-lisp-and-die "Hello.exe" ;ファイル名
' :toplevel #'main ;初期起動関数
' :executable t)


Case "sbcl" 'SteelBankCommonLisp
If load_option(";fasl") Then
'コンパイルオプション
Dim me_paths:me_paths=Split(Editor.FullName,"\")
'一行目に ;fasl と加えることでfaslファイルにコンパイルを行う。
me_paths(UBound(me_paths))=""
'(Macros\exec_cmdフォルダにexec_sbcl_comp.lisp 必須)
'Macrosフォルダのパス取得
If load_option(";fasl") Then
Dim me_path:me_path=Join(me_paths,"\") & "Macros\exec_cmd\"
Dim me_paths:me_paths=Split(Editor.FullName,"\")
me_paths(UBound(me_paths))=""
'Macrosフォルダのパス取得
Dim me_path:me_path=Join(me_paths,"\") & "Macros\exec_cmd\"


CMD_OPTION=me_path & "exec_sbcl_comp.lisp"
CMD_OPTION=me_path & "exec_sbcl_comp.lisp"
Else
Else
CMD_OPTION=""
CMD_OPTION=""
End If
End If
TITLE="SBCL " & Document.Name
EXEC_COMMAND=Join(Array( _
"sbcl --script ",CMD_OPTION," ",Document.Name _
),"")


Case "ccl" 'ClozureLisp
TITLE="SBCL " & Document.Name
'オプション無し。コンパイルはlispファイルに以下のような設定文を書き加える。
EXEC_COMMAND=Join(Array( _
'(ccl:save-application "hello.exe" ;ファイル名
"sbcl --script ",CMD_OPTION," ",Document.Name _
' :toplevel-function #'main ;初期起動関数
),"")
' :prepend-kernel t)
 
TITLE="ClozureLisp " & Document.Name
Case "ccl" 'ClozureLisp
EXEC_COMMAND="wx86cl --load " & Document.Name
'オプション無し。コンパイルはlispファイルに以下のような設定文を書き加える。
Case "ccl64" 'ClozureLisp64
'(ccl:save-application "hello.exe" ;ファイル名
TITLE="ClozureLisp64 " & Document.Name
' :toplevel-function #'main ;初期起動関数
EXEC_COMMAND="wx86cl64 --load " & Document.Name
' :prepend-kernel t)
TITLE="ClozureLisp " & Document.Name
EXEC_COMMAND="wx86cl -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'"
 
Case "ccl64" 'ClozureLisp64
TITLE="ClozureLisp64 " & Document.Name
EXEC_COMMAND="wx86cl64 -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'"
 
Case "mkcl" 'ManKaiCommonLisp
'コンパイルオプション
'一行目に ;fas でfasファイル生成。
' ;exe でexeファイル生成
If load_option(";fas") Then
CMD_OPTION="-compile " & Document.Name
ElseIf load_option(";exe") Then
TITLE="MKCL " & Document.Name
CMD_OPTION=Join(Array( _
"-not-fasl-p -compile ",Document.Name,br, _
"timeout /t 1 > nul",br, _
"mkcl -o ",DOC_NAME,".exe -link ",DOC_NAME,".o", _
BUILDED _
),"")
'mkcl -not-fasl-p -compile a.lisp & mkcl -o a.exe -link a.o
'exe化失敗を防ぐためにwaitの小細工
Else
CMD_OPTION="-shell " & Document.Name
End If


Case "mkcl" 'ManKaiCommonLisp
'コンパイルオプション
'一行目に ;fas でfasファイル生成。
' ;exe でexeファイル生成
If load_option(";fas") Then
CMD_OPTION="-compile " & Document.Name
ElseIf load_option(";exe") Then
TITLE="MKCL " & Document.Name
TITLE="MKCL " & Document.Name
CMD_OPTION=Join(Array( _
EXEC_COMMAND="mkcl " & CMD_OPTION
"-not-fasl-p -compile ",Document.Name,br, _
End Select
"timeout /t 1 > nul",br, _
 
"mkcl -o ",DOC_NAME,".exe -link ",DOC_NAME,".o", _
Case "el" 'EmacsLisp
BUILDED _
'コンパイルオプション
'一行目に ;elc でelcファイル生成。
If load_option(";elc") Then
CMD_OPTION="-batch -f batch-byte-compile"
Else
CMD_OPTION="-Q --script"
End If
TITLE="EmacsLisp " & Document.Name
EXEC_COMMAND=Join(Array( _
"emacs ",CMD_OPTION," ",Document.Name _
),"")
 
Case "scm" 'Scheme
Select Case ENGINE(file_format)
Case "gosh" 'Gauche
TITLE="Gauche " & Document.Name
EXEC_COMMAND="gosh " & Document.Name
Case "sash" 'SagittariusScheme
TITLE="Sagittarius Scheme " & Document.Name
EXEC_COMMAND="sash " & Document.Name
End Select
 
Case "clj","cljs" 'Clojure
Select Case ENGINE(file_format)
Case "clojure" 'Clojure(JVM)
Dim version
version=Split(ENGINE_PATH(ENGINE(file_format)),"-")
TITLE="Clojure " & Document.Name
EXEC_COMMAND=Join(Array( _
"java -jar """,ENGINE_PATH(ENGINE(file_format)), _
"\clojure-",version(UBound(version)),".jar"" ",Document.Name _
),"")
),"")
'mkcl -not-fasl-p -compile a.lisp & mkcl -o a.exe -link a.o
'exe化失敗を防ぐためにwaitの小細工
Else
CMD_OPTION="-shell " & Document.Name
End If
TITLE="MKCL " & Document.Name
EXEC_COMMAND="mkcl " & CMD_OPTION
End Select


Case "scm" 'Scheme
Case "boot" 'Boot(Clojure)
TITLE="Gauche " & Document.Name
TITLE="Boot(Clojure) " & Document.Name
EXEC_COMMAND="gosh " & Document.Name
EXEC_COMMAND="boot -f " & Document.Name
 
Case "clojure-clr" 'ClojureCLR
TITLE="ClojureCLR " & Document.Name
EXEC_COMMAND="Clojure.Main " & Document.Name


Case "clj" 'Clojure
Case "clojure-script" 'ClojureCLR
Select Case ENGINE(file_format)
TITLE="ClojureCLR " & Document.Name
Case "clojure" 'Clojure(JVM)
EXEC_COMMAND="cljs " & Document.Name
Dim version
version=Split(ENGINE_PATH(ENGINE(file_format)),"-")
TITLE="Clojure " & Document.Name
EXEC_COMMAND=Join(Array( _
"java -jar """,ENGINE_PATH(ENGINE(file_format)), _
"\clojure-",version(UBound(version)),".jar"" ",Document.Name _
),"")


Case "clojure-clr" 'ClojureCLR
Case "lumo" 'lumo(ClojureScript)
TITLE="ClojureCLR " & Document.Name
TITLE="Lumo(ClojureScript) " & Document.Name
EXEC_COMMAND="Clojure.Main " & Document.Name
EXEC_COMMAND="lumo " & Document.Name
End Select
End Select


Case "fs","ml","mli" 'F#
PKG_FILES=Document.Name
TITLE="F# "+ Document.Name
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(file_format),"\fsc""", _
" --nologo --out:",DOC_NAME,".exe ",PKG_FILES," --optimize+",br, _
DOC_NAME,".exe" _
),"")


Case "hs" 'Haskell
Case "tcl" 'Tcl
TITLE="GHC " & Document.Name
TITLE="Tcl " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND=Join(Array( _
"ghc --make ",Document.Name,br, _
"tclsh ",Document.Name _
DOC_NAME,".exe" _
),"")
),"")


Case "cas" 'CASL II
TITLE="Java CASL II " & Document.Name
EXEC_COMMAND=Join(Array( _
"java -jar """,ENGINE_PATH(file_format),"\casl2.jar"" ",Document.Name,br, _
"java -jar ",ENGINE(file_format),"\run.jar ",DOC_NAME,".obj" _
),"")


Case "asm" 'NASM
Case "fs","ml","mli" 'F#
TITLE="NAST " & Document.Name
PKG_FILES=Document.Name
EXEC_COMMAND=Join(Array("nasm -f win32 ",Document.Name,br, _
"""",ENGINE_PATH("link"),"\link"" /nologo /out:",DOC_NAME,".exe ",DOC_NAME,".obj ", _
TITLE="F# " & Document.Name
"""",ENGINE_PATH("msvcrt"),"\msvcrt.lib"" """,ENGINE_PATH("kernel32"),"\Kernel32.lib"" ", _
EXEC_COMMAND=Join(Array( _
ENGINE_PATH("addlib"),br, _
"""",ENGINE_PATH(file_format),"\fsc""", _
DOC_NAME,".exe" _
" --nologo --out:",DOC_NAME,".exe ",PKG_FILES," --optimize+",br, _
),"")
DOC_NAME,".exe" _
),"")


Case "il" '.NetILアセンブラ
Case "hs" 'Haskell
TITLE=".NetIL " & Document.Name
TITLE="GHC " & Document.Name
EXEC_COMMAND=Join(Array( _
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(file_format),"\ilasm"" /nologo /quiet ",Document.Name,br, _
"ghc --make ",Document.Name,br, _
DOC_NAME,".exe" _
DOC_NAME,".exe" _
),"")
),"")


Case "bat" 'BAT
Case "cas" 'CASL II
TITLE="BAT " & Document.Name
TITLE="Java CASL II " & Document.Name
EXEC_COMMAND=Document.Name
EXEC_COMMAND=Join(Array( _
"java -jar """,ENGINE_PATH(file_format),"\casl2.jar"" ",Document.Name,br, _
"java -jar ",ENGINE(file_format),"\run.jar ",DOC_NAME,".obj" _
),"")
'java -jar casl2.jar aaa.cas
'java -jar run.jar aaa.obj


Case "wsf" 'WSF
Case "asm" 'NASM
TITLE="WSF " & Document.Name
TITLE="NAST " & Document.Name
EXEC_COMMAND="cscript  //nologo " & Document.Name
EXEC_COMMAND=Join(Array("nasm -f win32 ",Document.Name,br, _
"""",ENGINE_PATH("link"),"\link"" /nologo /out:",DOC_NAME,".exe ",DOC_NAME,".obj ", _
"""",ENGINE_PATH("msvcrt"),"\msvcrt.lib"" """,ENGINE_PATH("kernel32"),"\Kernel32.lib"" ", _
ENGINE_PATH("addlib"),br, _
DOC_NAME,".exe" _
),"")
'nasm -f win32 aaa.asm
'link /nologo /out:aaa.exe aaa.obj msvcrt.lib Kernel32.lib
'aaa.exe


Case "ps1" 'PowerShell
Case "il" '.NetILアセンブラ
TITLE="PowerShell " & Document.Name
TITLE=".NetIL " & Document.Name
EXEC_COMMAND="powershell " & Document.Name
EXEC_COMMAND=Join(Array( _
"""",ENGINE_PATH(file_format),"\ilasm"" /nologo /quiet ",Document.Name,br, _
DOC_NAME,".exe" _
),"")


Case Else
Case "bat" 'BAT
TITLE=Document.Name
TITLE="BAT " & Document.Name
EXEC_COMMAND=Document.Name
EXEC_COMMAND=Document.Name
End Select
 
Case "wsf" 'WSF
TITLE="WSF " & Document.Name
EXEC_COMMAND="cscript  //nologo " & Document.Name
 
Case "ps1" 'PowerShell
TITLE="PowerShell " & Document.Name
EXEC_COMMAND="powershell " & Document.Name
 
Case "htm","xhtml","html" 'HTML
TITLE="HTML " & Document.Name
EXEC_COMMAND="start chrome " & Document.Name
 
Case Else 'Other
TITLE=Document.Name
EXEC_COMMAND=Document.Name
End Select
End If


'コマンドライン起動
'コマンドライン起動
Dim cmd:Set cmd = CreateObject("WScript.Shell")
cmd.Run Join(Array( _
cmd.Run Join(Array( _
"cmd /C """, _
"cmd /C """, _
720行目: 991行目:
End Function
End Function


'exe又はclassファイルを削除するかどうか
'exe、class、obj、min.js、jsファイルを削除するかどうか
Function DEL_BINARY()
Function DEL_BINARY()
If load_option("delexe") Then
DEL_BINARY=""
DEL_BINARY=Join(Array("del ",DOC_NAME,".exe",br),"")
If load_option("delexe") Then _
ElseIf load_option("delclass") Then
DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".exe",br),"")
DEL_BINARY=Join(Array("del ",DOC_NAME,".class",br),"")
If load_option("delclass") Then _
Else
DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".class",br),"")
DEL_BINARY=""
If load_option("delobj") Then _
End IF
DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".obj",br),"")
If load_option("deljs") And file_format<>"js" Then _
DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".js",br),"")
If load_option("delmin") Then _
DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".min.js",br),"")
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
<br>


;exec_sbcl_comp.lisp
=== exec_sbcl_comp.lisp ===
<syntaxhighlight lang=Lisp line>
<syntaxhighlight lang="lisp" copy>
;exec_sbcl_comp.lisp
;exec_sbcl_comp.lisp
;exec_cmd.vbs SBCLコンパイル用
;exec_cmd.vbs SBCLコンパイル用

2025年6月30日 (月) 00:42時点における最新版

概要[編集]

コンソール実行をVBSに移植して、1ファイルのみで多言語対応出来るように機能強化したものです。

拡張子からコマンドを判別するため、以前のように呼び出す時に設定する必要はありません。

足りない言語についても、Caseを追加して実行コマンドを設定することで使用できるようになります。

不具合要望などはMery コンソール実行改改まで。

対応済み言語・処理系一覧[編集]

C、C++(VC++/BCC32/GCC/G++)、D、C#(.NET framework/Mono/.NET Core/.NET)、C#Script(csi/Mono/scriptcs/dotnet-script)、
Java、Scala、Groovy、Perl、PHP(Phalanger)、Go、Dart、Rust、R言語、
JavaScript(Node.js/JScript/JScript.NET/Rhino)、TypeScript(tsc/ts-node)、Fortran(G)、
VBScript、VB.NET(.NET framework/Mono/.NET Core/.NET)、BASIC(FreeBasic)、HSP3(hspc)、Pascal(FPC)、Ada(GNAT)、Ruby(JRuby/IR)、Lua(JIT)、
Matlab(Octave)、Scilab、Python(CPython/PyPy/Jython/IPy)、なでしこ、CoffeeScript、
CommonLisp(CLISP/SBCL/MKCL/CCL)、EmacsLisp、Scheme(Gauche/Sagittarius)、Clojure(JVM/CLR/ClojureScript)、
F#、Haskell(GHC)、CASL II、NASM、.NetIL(ilasm)、BAT、WSF、PowerShell

※ただし、基本的にはパスが通っていることが前提。

HSPはコマンドラインコンパイラが標準で用意されていないため断念。

公式プラグインのHSPコンパイル実行プラグインをご利用ください。

 ⇒hspcを使うことで部分的に対応しました。
  コンソールアプリを使用する場合はこちらを使用した方が良いかと思います。

※2 処理系ではないけどjs系はUglify.jsがコメント追記で呼べるようになりました。

ダウンロード[編集]

ファイル:拡張子でコンソール実行inマクロ.zip

変換済みicoファイル込

アイコン[編集]

ソースコード[編集]

exec_cmd.vbs[編集]

#icon="exec_cmd.ico"
#title="コンソール実行"
' exec_cmd.vbs
' 2022-10-07 19:26

Dim cmd:Set cmd=CreateObject("WScript.Shell")

'ファイルの保存
Document.Save(document.FullName)

'保存してなければ終了。
If Document.Name="" Then
	MsgBox "ファイルが保存されてません。"
	Quit
End If

'タイトル名
Dim TITLE
'実行コマンド
Dim EXEC_COMMAND

'使用エンジン選択
Function ENGINE(file_format)
	Select Case LCase(file_format)
		'C言語
		Case "c"
			'ENGINE="bcc32"
			ENGINE="gcc"
		'C++
		Case "cpp"
			ENGINE="cl"
			'ENGINE="bcc32"
			'ENGINE="g++"
			'ENGINE="clang"
		'D言語
		Case "d"
			ENGINE="dmd"
			'ENGINE="gdc"
			'ENGINE="ldc"
		'C#
		Case "cs"
			ENGINE="csc"
			'ENGINE="mcs"
			'ENGINE="msbuild"
			'ENGINE="dotnet"
		'C#Script
		Case "csx"
			'ENGINE="csi"
			'ENGINE="csharp"
			'ENGINE="scriptcs"
			ENGINE="dotnet-script"
		'Perl
		Case "pl"
			ENGINE="perl"
			'ENGINE="perl6"
		'PHP
		Case "php"
			ENGINE="php"
			'ENGINE="phpc"
		'JavaScript
		Case "js"
			ENGINE="node"
			'ENGINE="jscript"
			'ENGINE="jsc"
			'ENGINE="rhino"
		'TypeScript
		Case "ts"
			ENGINE="tsc"
			'ENGINE="ts-node"
		'VB.NET
		Case "vb"
			ENGINE="vbc"
			'ENGINE="vbnc"
			'ENGINE="msbuild"
			'ENGINE="dotnet"
		'Ruby
		Case "rb"
			ENGINE="ruby"
			'ENGINE="jruby"
			'ENGINE="ir"
		'Lua
		Case "lua"
			ENGINE="lua"
			'ENGINE="luajit"
		'MATLAB
		Case "m"
			'ENGINE="matlab"
			ENGINE="octave"
		'Python
		Case "py"
			'ENGINE="python"
			'ENGINE="python2"
			ENGINE="python3"
			'ENGINE="pypy"
			'ENGINE="pypy3"
			'ENGINE="jython"
			'ENGINE="ipy"
			'ENGINE="ipy64"
		'LISP, CommonLisp
		Case "l","lisp","lsp","cl"
			'ENGINE="clisp"
			ENGINE="sbcl"
			'ENGINE="ccl"
			'ENGINE="ccl64"
			'ENGINE="mkcl"
		'LISP, CommonLisp
		Case "scm"
			'ENGINE="gosh"
			ENGINE="sash"
		'Clojure
		Case "clj","cljs"
			'ENGINE="clojure"
			'ENGINE="clojure-clr"
			'ENGINE="clojure-script"
			ENGINE="boot"
			'ENGINE="lumo"
	End Select
End Function

'使用するエンジンのパス	パスが通しにくかったり通らないものを記述
Function ENGINE_PATH(file_format)
	Select Case LCase(file_format)
		'VC++
		Case "cl"
			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 14.0\VC\bin"
			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\bin"
		'C#, VB.NET
		Case "csc","vbc"
			'ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
			'ENGINE_PATH="%ProgramFiles%\MSBuild\12.0\Bin"
			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\12.0\Bin"
			'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn"
			'ENGINE_PATH="%ProgramFiles%\Mono\bin"
			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
		'Mono C#, Mono VB.NET
		Case "mcs","vbnc"
			'ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
			ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
		'C#Script
		Case "csi"
			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn"
			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn"
			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn"
			'ENGINE_PATH="%ProgramFiles%\MSBuild\14.0\Bin"
			'ENGINE_PATH="%ProgramFiles(x86)%\MSBuild\14.0\Bin"
			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
		'Mono C#Script
		Case "csharp"
			ENGINE_PATH="%ProgramFiles%\Mono\lib\mono\4.5"
			'ENGINE_PATH="%ProgramFiles(x86)%\Mono\lib\mono\4.5"
		'JScript.NET
		Case "msbuild"
			'ENGINE_PATH="msbuild"
			'ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild"
			ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild"
			'ENGINE_PATH="%ProgramFiles%\Mono\bin\msbuild"
		Case "jsc"
			ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727"
		'Rhino
		Case "rhino"
			ENGINE_PATH="%HOMEDRIVE%\rhino"
		'TypeScript
		Case "ts"
			'ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\TypeScript\1.0"
			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\TypeScript\1.0"
			ENGINE_PATH="%APPDATA%\npm"
		'CoffeeScript
		Case "coffee"
			ENGINE_PATH="%APPDATA%\npm"
		'Clojure(JVM)
		Case "clojure"
			'clojure-x.x.xのバージョン表記"-x.x.x"を消すと動かなくなる。
			ENGINE_PATH="%HOMEDRIVE%\clojure-1.8.0"
		'F#
		Case "fs","ml","mli"
			ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\F#\3.1\Framework\v4.0"
			'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\F#\3.1\Framework\v4.0"
		'HSP
		Case "hsp"
			'HSPのバージョンによってパスを変更すること。
			ENGINE_PATH="%HOMEDRIVE%\hsp35"
		'CASL II
		Case "cas"
			ENGINE_PATH="%HOMEDRIVE%\javaCASL2"
		'NASM LINK用(VC++必須)
			Case "link"
				ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\bin"
				'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\bin"
			Case "msvcrt"
				ENGINE_PATH="%ProgramFiles%\Microsoft Visual Studio 12.0\VC\lib"
				'ENGINE_PATH="%ProgramFiles(x86)%Microsoft Visual Studio 12.0\VC\lib"
			Case "kernel32"
				ENGINE_PATH="%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib"
				'ENGINE_PATH="%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A\Lib"
			Case "addlib"
				'ライブラリが他に必要であれば空白区切りで与えてください。
				'(ファイルパスに空白を含む時は注意)
				ENGINE_PATH=""
		'NASM LINK用ここまで
		'.NetILアセンブラ
		Case "il"
			ENGINE_PATH="%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319"
	End Select
End Function

'js圧縮コマンド(uglifyjs)
Function COMP_JS()
	COMP_JS=Join(Array( _
		"uglifyjs -m -o ",DOC_NAME,".min.js ",DOC_NAME,".js",br, _
		"javascript-obfuscator ",DOC_NAME,".min.js --renameGlobals true --rotateStringArray true、--selfDefending true --stringArrayThreshold 0.75" _
	),"")
End Function

'パッケージファイル
Dim PKG_FILES
'コマンドオプション
Dim CMD_OPTION
'ビルドメッセージ
'頭の&は何も無い所に付け加えるため必須とする。
Dim BUILDED
BUILDED=" & Echo Complited."

Dim br:br=" & " '改行用

'Document.Name:現在のファイル名
Dim doc_names:doc_names=Split(Document.Name,".")

'拡張子
Dim file_format:file_format=doc_names(UBound(doc_names))
doc_names(UBound(doc_names))=""

'拡張子を除いたファイル名
Dim DOC_NAME
DOC_NAME=Join(doc_names,".")
DOC_NAME=Mid(DOC_NAME,1,Len(DOC_NAME)-1)

'実行時exe、class、obj、js、min.jsにコンパイルする形式の場合は一行目にコメントで
' delexe, delclass, delobj, deljs, delmin を含めることで
'事前にexe, class, obj, js, min.jsを削除することができます。

'タイトル、実行コマンド
If load_option("cmd:") Then
	'一行目に"cmd:"を含めるとそれ以降が実行コマンドになる。
	'ただし、既定の実行エンジンも指定されないため、
	'そこを含めてのコマンド設定が必要。
	EXEC_COMMAND=Split(LCase(Document.GetLine(1)),"cmd:")(1)

Else
	Select Case LCase(file_format)
		Case "c","cpp"	'C, C++
			Select Case ENGINE(file_format)
				Case "cl"	'Visual C++ 
					TITLE="Visual C++ " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"""",Replace(ENGINE_PATH(ENGINE(file_format)),"\bin",""),"\vcvarsall"" & ",_
						"""",ENGINE_PATH(ENGINE(file_format)),"\cl"" /nologo /EHsc  /openmp ",Document.Name,br, _
						DOC_NAME,".exe" _
					),"")

				Case "bcc32"	'Borland C++
					TITLE="Borland C++ " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"bcc32 ",Document.Name,br, _
						DOC_NAME,".exe" _
					),"")

				Case "gcc"	'GCC C
					TITLE="GCC C " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"gcc -o ",DOC_NAME,".exe ",Document.Name,br, _
						DOC_NAME,".exe" _
					),"")

				Case "g++"	'GCC C++
					'コンパイルオプション
					'一行目に //not11 と入力するとC++11以前のコンパイルを行う。
					If load_option("//not11") Then
						CMD_OPTION=""
					Else
						CMD_OPTION="-std=c++11 "
					End If
					TITLE="GCC C++ " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"g++ ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _
						DOC_NAME,".exe" _
					),"")

				Case "clang"	'clang C++
					TITLE="clang C++ " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"clang ",CMD_OPTION,"-o ",DOC_NAME,".exe ",Document.Name,br, _
						DOC_NAME,".exe" _
					),"")
			End Select

		Case "d"	'D言語
			Select Case ENGINE(file_format)
				Case "dmd"
					TITLE="D言語(dmd) " & Document.Name
					EXEC_COMMAND="dmd " & Document.Name & br & DOC_NAME & ".exe"
				Case "gdc"
					TITLE="D言語(gdc) " & Document.Name
					EXEC_COMMAND="gdc " & Document.Name & br & DOC_NAME & ".exe"
				Case "ldc"
					TITLE="D言語(ldc) " & Document.Name
					EXEC_COMMAND="ldc2 " & Document.Name & br & DOC_NAME & ".exe"
			End Select

		Case "cs"	'C#
			'コンパイルファイル選択
			'デフォルトでフォルダ内全てをコンパイル。
			'一行目に //only と加えることでそのファイルのみコンパイルを行う。
			If load_option("//only") Then
				PKG_FILES=Document.Name
			Else
				PKG_FILES="*.cs"
			End If

			Select Case ENGINE(file_format)
				Case "csc"	'C#
					TITLE="C# " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"""",ENGINE_PATH(ENGINE(file_format)),"\csc"" ", _
						"/nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
						DOC_NAME,".exe" _
					),"")

				Case "mcs"	'Mono C#
					TITLE="Mono C# " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"""",ENGINE_PATH(ENGINE(file_format)),"\mcs"" ", _
						"-out:",DOC_NAME,".exe ",PKG_FILES," -optimize+",br, _
						DOC_NAME,".exe" _
					),"")

				Case "msbuild"	'C# MSbuild
					TITLE="C# MSBuild" & Document.Name
					EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """"

				Case "dotnet"	'C# .NET Core/.NET
					TITLE="C# .NET" & Document.Name
					EXEC_COMMAND="dotnet run"
			End Select

		Case "csx"	'C#Script
			Select Case ENGINE(file_format)
				Case "csi"	'C#Script
					TITLE="C#Script " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"""",ENGINE_PATH(ENGINE(file_format)),"\csi"" ",Document.Name _
					),"")

				Case "csharp"	'Mono C#Script
					TITLE="Mono C#Script " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"""",ENGINE_PATH(ENGINE(file_format)),"\csharp"" ",Document.Name _
					),"")

				Case "scriptcs"	'ScriptCS
					TITLE="scriptcs " & Document.Name
					EXEC_COMMAND="scriptcs " & Document.Name

				Case "dotnet-script"		'dotnet script
					TITLE="detnet script " & Document.Name
					EXEC_COMMAND="dotnet-script " & Document.Name
			End Select

		Case "java"	'Java
			'jar化は手順が面倒そうなので保留
			TITLE="Java " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"javac ",Document.Name,br, _
				"java ",DOC_NAME _
			),"")

		Case "scala"	'Scala
			'コンパイルオプション
			'一行目に //class と加えることでclassファイルにコンパイルを行う。
			TITLE="Scala " & Document.Name
			If load_option("//class") Then
				EXEC_COMMAND="scalac " & Document.Name
			Else
				EXEC_COMMAND="scala " & Document.Name
			End If

		Case "groovy"	'Groovy
			'コンパイルオプション
			'一行目に //class と加えることでclassファイルにコンパイルを行う。
			TITLE="Groovy " & Document.Name
			If load_option("//class") Then
				EXEC_COMMAND="groovyc " & Document.Name
			Else
				EXEC_COMMAND="groovy " & Document.Name
			End If

		Case "pl"	'Perl
			Select Case ENGINE(file_format)
				Case "perl"	'Perl5まで
					TITLE="Perl " & Document.Name
					EXEC_COMMAND="perl " & Document.Name

				Case "perl6"	'Perl6
					TITLE="Perl6 " & Document.Name
					EXEC_COMMAND="perl6 " & Document.Name
			End Select

		Case "php"	'PHP
			Select Case ENGINE(file_format)
				Case "php"	'PHP
					TITLE="PHP " & Document.Name
					EXEC_COMMAND="php " & Document.Name

				Case "phpc"	'Phalanger
					TITLE="Phalanger " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"phpc /debug- /quiet ",Document.Name,br, _
						"bin\",DOC_NAME,".exe" _
					),"")
			End Select

		Case "go"	'Go
			'コンパイルオプション
			'一行目に//buildでビルドを行う。
			If load_option("//build") Then
				CMD_OPTION="build "
			Else
				CMD_OPTION="run "
			End If
			TITLE="Go " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"go ",CMD_OPTION,Document.Name _
			),"")

		Case "dart"	'Dart
			TITLE="Dart " & Document.Name
			EXEC_COMMAND="dart " & Document.Name _

		Case "rs"	'Rust
			TITLE="Rust " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"rustc  ",Document.Name,br, _
				DOC_NAME,".exe" _
			),"")

		Case "r","q","s"	'R言語
			TITLE="R言語 " & Document.Name
			EXEC_COMMAND="rscript " & Document.Name

		Case "js"	'JavaScript
			If load_option("//comp") Then
				'js圧縮モード
				'一行目にコメントで //compと加える。
				TITLE="Uglify.js " & Document.Name
				EXEC_COMMAND=COMP_JS & BUILDED
			Else
				Select Case ENGINE(file_format)
					Case "node"	'Node.js
						'デバッグオプション
						'一行目に、
						' //debug 又は //inspect
						'と加えることでデバッグモードでの実行を行う。
						If load_option("//debug") _
						Or load_option("//inspect") Then
							CMD_OPTION="--inspect"
						Else
							CMD_OPTION=""
						End If

						TITLE="Node.js " & Document.Name
						EXEC_COMMAND=Join(Array("node ",CMD_OPTION," ",Document.Name),"")

					Case "jscript"	'JScript
						TITLE="JScript " & Document.Name
						EXEC_COMMAND="cscript //nologo //E:JScript " & Document.Name

					Case "jsc"	'JScript.NET
						PKG_FILES=Document.Name
						TITLE="JScript.NET " & Document.Name
						EXEC_COMMAND=Join(Array( _
							"""",ENGINE_PATH(ENGINE(file_format)),"\jsc"" /nologo /out:", _
								DOC_NAME,".exe ",PKG_FILES,br, _
							DOC_NAME,".exe" _
						),"")

					Case "rhino"	'Rhino
						TITLE="Rhino " & Document.Name
						EXEC_COMMAND=Join(Array("java -jar ",ENGINE_PATH(ENGINE(file_format)),"\js.jar ",Document.Name),"")
				End Select
			End If

		Case "ts"	'TypeScript
			TITLE="TypeScript to " & ENGINE("js") & " " & Document.Name
			EXEC_COMMAND=Join(Array("tsc --locale ja-JP -t esnext ",Document.Name,br),"")
			
			If load_option("//comp") Then
				'js圧縮モード
				'一行目にコメントで //compと加える。
				TITLE="Uglify.js + " & TITLE
				EXEC_COMMAND=EXEC_COMMAND & COMP_JS & BUILDED
			Else
				Select Case ENGINE("ts")
					Case "tsc"
						'JavaScript実行
						Select Case ENGINE("js")
							Case "node"	'Node.js
								EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
									"node ",DOC_NAME,".js" _
								),"")

							Case "jscript"	'JScript
								EXEC_COMMAND=Join(Array(EXEC_COMMAND, _
									"cscript //nologo //E:JScript ",DOC_NAME,".js" _
								),"")
						End Select

					Case "ts-node"	'ts-node
						EXEC_COMMAND="ts-node " & Document.Name
				End Select
			End If

		Case "f","f90","f95","f03"	'Fortran
			TITLE="GFortran " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"gfortran -o ",DOC_NAME," ",Document.Name,br, _
				DOC_NAME,".exe" _
			),"")

		Case "vbs"	'VBScript
			TITLE="VBScript " & Document.Name
			EXEC_COMMAND="cscript  //nologo //E:VBScript " & Document.Name

		Case "vb"	'VB.NET
			'コンパイルファイル選択
			'デフォルトでフォルダ内全てをコンパイル。
			'一行目に 'only と加えることでそのファイルのみコンパイルを行う。
			If load_option("'only") Then
				PKG_FILES=Document.Name
			Else
				PKG_FILES="*.vb"
			End If

			Select Case ENGINE(file_format)
				Case "vbc"	'VB.Net
					TITLE="VB.Net " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"""",ENGINE_PATH(ENGINE(file_format)),"\vbc""", _
						" /removeintchecks /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
						DOC_NAME,".exe" _
					),"")

				Case "vbnc"	'Mono VB.NET
					TITLE="Mono VB.NET"
					EXEC_COMMAND=Join(Array( _
						"""",ENGINE_PATH(ENGINE(file_format)),"\vbnc""", _
						" /quiet /nologo /out:",DOC_NAME,".exe ",PKG_FILES," /optimize+",br, _
						DOC_NAME,".exe" _
					),"")

				Case "msbuild"	'VB.Net MSBuild
					TITLE="VB.Net MSBuild" & Document.Name
					EXEC_COMMAND="""" & ENGINE_PATH(ENGINE(file_format)) & """"

				Case "dotnet"	'VB.Net .NET Core/.NET
					TITLE="VB.Net .NET" & Document.Name
					EXEC_COMMAND="dotnet run"
			End Select

		Case "bas"	'BASIC
			TITLE="FreeBasic " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"fbc -lang deprecated ",Document.Name,br, _
				DOC_NAME,".exe" _
			),"")

		Case "hsp","as"	'HSP
			TITLE="HSP " & Document.Name
			EXEC_COMMAND=Join(Array( _
				ENGINE_PATH(file_format),"\hspc -mP -C ",Document.Name,br, _
				"(if exist start.ax ", _
					"cls",br, _
					"del start.ax",br, _
					"del packfile",br, _
					"move /y hsptmp.exe ",DOC_NAME,".exe > nul", _
				")",br, _
				DOC_NAME,".exe" _
			),"")

		Case "pas","pp"	'PASCAL
			TITLE="FreePascal " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"fpc ",Document.Name,br, _
				DOC_NAME,".exe" _
			),"")

		Case "adb"	'Ada
			TITLE="GNAT Ada " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"gnatmake ",Document.Name,br _
				,DOC_NAME,".exe" _
			),"")

		Case "rb"	'Ruby
			Select Case ENGINE(file_format)
				Case "ruby"	'Ruby
					TITLE="Ruby " & Document.Name
					EXEC_COMMAND="ruby " & Document.Name

				Case "jruby"	'JRuby
					TITLE="JRuby " & Document.Name
					EXEC_COMMAND="jruby " & Document.Name

				Case "ir"	'IronRuby
					TITLE="IronRuby " & Document.Name
					EXEC_COMMAND="ir " & Document.Name
			End Select

		Case "lua"	'Lua
			Select Case ENGINE(file_format)
				Case "lua"	'Lua
					TITLE="Lua " & Document.Name
					EXEC_COMMAND="lua " & Document.Name

				Case "luajit"	'LuaJIT
					TITLE="LuaJIT " & Document.Name
					EXEC_COMMAND="luajit " & Document.Name
			End Select

		Case "m"	'MATLAB
			Select Case ENGINE(file_format)
				Case "matlab"	'MATLAB
					'環境不所持により、動作未確認。
					TITLE="Matlab " & Document.Name
					EXEC_COMMAND="matlab -nodisplay " & Document.Name

				Case "octave"	'GNU Octave
					TITLE="GNU Octave " & Document.Name
					EXEC_COMMAND="octave-cli " & Document.Name
			End Select

		Case "sce"	'Scilab
			'最後にexitを実行しないとreplに移行します。
			'また、日本語で文字化け注意。
			TITLE="Scilab " & Document.Name
			EXEC_COMMAND="Scilex -nwni -nb -l ja -f " & Document.Name

		Case "py","pyw"	'Python
			Select Case ENGINE(file_format)
				Case "python"	'Python
					'コンパイルオプション
					'一行目に #pyc と加えることでコンパイルを行う。
					If load_option("#pyc") Then
						CMD_OPTION="-m compileall"
					Else
						CMD_OPTION=""
					End If

					TITLE="Python " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"python ",CMD_OPTION," ",Document.Name _
					),"")

				Case "python2"	'Python2
					TITLE="Python2 " & Document.Name
					EXEC_COMMAND="py -2 " & Document.Name

				Case "python3"	'Python3
					TITLE="Python3 " & Document.Name
					EXEC_COMMAND="py -3 " & Document.Name

				Case "pypy"	'PyPy
					TITLE="PyPy " & Document.Name
					EXEC_COMMAND="pypy " & Document.Name

				Case "pypy3"	'PyPy3
					TITLE="PyPy3 " & Document.Name
					EXEC_COMMAND="pypy3 " & Document.Name

				Case "jython"	'Jython
					TITLE="Jython " & Document.Name
					EXEC_COMMAND="jython " & Document.Name

				Case "ipy"	'IronPython
					TITLE="IronPython " & Document.Name
					EXEC_COMMAND="ipy " & Document.Name

				Case "ipy64"	'IronPython
					TITLE="IronPython64 " & Document.Name
					EXEC_COMMAND="ipy64 " & Document.Name
			End Select

		Case "coffee"	'CoffeeScript
			'コンパイルオプション
			'一行目に #js と加えることでjsファイルにコンパイルを行う。
			If load_option("#js") Then
				CMD_OPTION="--compile"
			Else
				CMD_OPTION=""
				BUILDED=""
			End If

			TITLE="CoffeeScript " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"""",ENGINE_PATH(file_format),"\coffee"" ",CMD_OPTION," ",Document.Name, _
				BUILDED _
			),"")
			If load_option("#js") And load_option("comp") Then
				'js圧縮モード
				'一行目にコメントで #comp と加える。
				TITLE="Uglify.js + " & TITLE
				EXEC_COMMAND=Join(Array(EXEC_COMMAND,br,COMP_JS,BUILDED),"")
			End If

		Case "nako"	'なでしこ
			'起動オプション
			'一行目にコメントで下記を含める。なしでコンソール実行
			'	vnako: 標準GUI
			'	gnako: 簡易GUI
			'	pad:   なでしこエディタ起動(コンパイルはエディタから行う)
			TITLE="なでしこ " & Document.Name
			If load_option("vnako") Then
				EXEC_COMMAND="vnako " & Document.Name
			ElseIf load_option("gnako") Then
				EXEC_COMMAND="gnako " & Document.Name
			ElseIf load_option("pad") Then
				EXEC_COMMAND="nakopad " & Document.Name
			Else
				EXEC_COMMAND="cnako " & Document.Name
			End If

		Case "l","lisp","lsp","cl"	'LISP, CommonLisp
			Select Case ENGINE(file_format)
				Case "clisp"	'CLISP
					'コンパイルオプション
					'一行目に ;fas と加えることでfasファイルにコンパイルを行う。
					If load_option(";fas") Then
						CMD_OPTION="-c"
					Else
						CMD_OPTION=""
					End If

					TITLE="CLISP " & Document.Name
					EXEC_COMMAND=Join(Array("clisp ",CMD_OPTION," ",Document.Name),"")

				Case "sbcl"	'SteelBankCommonLisp
					'コンパイルオプション
					'一行目に ;fasl と加えることでfaslファイルにコンパイルを行う。
					'(Macros\exec_cmdフォルダにexec_sbcl_comp.lisp 必須)

					'なお、SBCLのEXE化は以下の設定文をlispファイルに書き加えることで可能となる。
					'(sb-ext:save-lisp-and-die "Hello.exe"	;ファイル名
					'	:toplevel #'main					;初期起動関数
					'	:executable t)

					If load_option(";fasl") Then
						Dim me_paths:me_paths=Split(Editor.FullName,"\")
						me_paths(UBound(me_paths))=""
						'Macrosフォルダのパス取得
						Dim me_path:me_path=Join(me_paths,"\") & "Macros\exec_cmd\"

						CMD_OPTION=me_path & "exec_sbcl_comp.lisp"
					Else
						CMD_OPTION=""
					End If

					TITLE="SBCL " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"sbcl --script ",CMD_OPTION," ",Document.Name _
					),"")

				Case "ccl"	'ClozureLisp
					'オプション無し。コンパイルはlispファイルに以下のような設定文を書き加える。
					'(ccl:save-application "hello.exe"	;ファイル名
					'	:toplevel-function #'main		;初期起動関数
					'	:prepend-kernel t)
					TITLE="ClozureLisp " & Document.Name
					EXEC_COMMAND="wx86cl -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'"

				Case "ccl64"	'ClozureLisp64
					TITLE="ClozureLisp64 " & Document.Name
					EXEC_COMMAND="wx86cl64 -K CP932 --load " & Document.Name & " --eval '(ccl:quit)'"

				Case "mkcl"	'ManKaiCommonLisp
					'コンパイルオプション
					'一行目に ;fas でfasファイル生成。
					' ;exe でexeファイル生成
					If load_option(";fas") Then
						CMD_OPTION="-compile " & Document.Name
					ElseIf load_option(";exe") Then
						TITLE="MKCL " & Document.Name
						CMD_OPTION=Join(Array( _
							"-not-fasl-p -compile ",Document.Name,br, _
							"timeout /t 1 > nul",br, _
							"mkcl -o ",DOC_NAME,".exe -link ",DOC_NAME,".o", _
							BUILDED _
						),"")
						'mkcl -not-fasl-p -compile a.lisp & mkcl -o a.exe -link a.o
						'exe化失敗を防ぐためにwaitの小細工
					Else
						CMD_OPTION="-shell " & Document.Name
					End If

					TITLE="MKCL " & Document.Name
					EXEC_COMMAND="mkcl " & CMD_OPTION
			End Select

		Case "el"	'EmacsLisp
			'コンパイルオプション
			'一行目に ;elc でelcファイル生成。
			If load_option(";elc") Then
				CMD_OPTION="-batch -f batch-byte-compile"
			Else
				CMD_OPTION="-Q --script"
			End If
			TITLE="EmacsLisp " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"emacs ",CMD_OPTION," ",Document.Name _
			),"")

		Case "scm"	'Scheme
			Select Case ENGINE(file_format)
				Case "gosh"	'Gauche
					TITLE="Gauche " & Document.Name
					EXEC_COMMAND="gosh " & Document.Name
				Case "sash"	'SagittariusScheme
					TITLE="Sagittarius Scheme " & Document.Name
					EXEC_COMMAND="sash " & Document.Name
				End Select

		Case "clj","cljs"	'Clojure
			Select Case ENGINE(file_format)
				Case "clojure"	'Clojure(JVM)
					Dim version
					version=Split(ENGINE_PATH(ENGINE(file_format)),"-")
					TITLE="Clojure " & Document.Name
					EXEC_COMMAND=Join(Array( _
						"java -jar """,ENGINE_PATH(ENGINE(file_format)), _
						"\clojure-",version(UBound(version)),".jar"" ",Document.Name _
					),"")

				Case "boot"	'Boot(Clojure)
					TITLE="Boot(Clojure) " & Document.Name
					EXEC_COMMAND="boot -f " & Document.Name

				Case "clojure-clr"	'ClojureCLR
					TITLE="ClojureCLR " & Document.Name
					EXEC_COMMAND="Clojure.Main " & Document.Name

				Case "clojure-script"	'ClojureCLR
					TITLE="ClojureCLR " & Document.Name
					EXEC_COMMAND="cljs " & Document.Name

				Case "lumo"	'lumo(ClojureScript)
					TITLE="Lumo(ClojureScript) " & Document.Name
					EXEC_COMMAND="lumo " & Document.Name
			End Select


		Case "tcl"	'Tcl
			TITLE="Tcl " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"tclsh ",Document.Name _
			),"")


		Case "fs","ml","mli"	'F#
			PKG_FILES=Document.Name
			
			TITLE="F# " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"""",ENGINE_PATH(file_format),"\fsc""", _
				" --nologo --out:",DOC_NAME,".exe ",PKG_FILES," --optimize+",br, _
				DOC_NAME,".exe" _
			),"")

		Case "hs"	'Haskell
			TITLE="GHC " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"ghc --make ",Document.Name,br, _
				DOC_NAME,".exe" _
			),"")

		Case "cas"	'CASL II
			TITLE="Java CASL II " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"java -jar """,ENGINE_PATH(file_format),"\casl2.jar"" ",Document.Name,br, _
				"java -jar ",ENGINE(file_format),"\run.jar ",DOC_NAME,".obj" _
			),"")
			'java -jar casl2.jar aaa.cas
			'java -jar run.jar aaa.obj

		Case "asm"	'NASM
			TITLE="NAST " & Document.Name
			EXEC_COMMAND=Join(Array("nasm -f win32 ",Document.Name,br, _
				"""",ENGINE_PATH("link"),"\link"" /nologo /out:",DOC_NAME,".exe ",DOC_NAME,".obj ", _
				"""",ENGINE_PATH("msvcrt"),"\msvcrt.lib"" """,ENGINE_PATH("kernel32"),"\Kernel32.lib"" ", _
				ENGINE_PATH("addlib"),br, _
				DOC_NAME,".exe" _
			),"")
			'nasm -f win32 aaa.asm
			'link /nologo /out:aaa.exe aaa.obj msvcrt.lib Kernel32.lib
			'aaa.exe

		Case "il"	'.NetILアセンブラ
			TITLE=".NetIL " & Document.Name
			EXEC_COMMAND=Join(Array( _
				"""",ENGINE_PATH(file_format),"\ilasm"" /nologo /quiet ",Document.Name,br, _
				DOC_NAME,".exe" _
			),"")

		Case "bat"	'BAT
			TITLE="BAT " & Document.Name
			EXEC_COMMAND=Document.Name

		Case "wsf"	'WSF
			TITLE="WSF " & Document.Name
			EXEC_COMMAND="cscript  //nologo " & Document.Name

		Case "ps1"	'PowerShell
			TITLE="PowerShell " & Document.Name
			EXEC_COMMAND="powershell " & Document.Name

		Case "htm","xhtml","html"	'HTML
			TITLE="HTML " & Document.Name
			EXEC_COMMAND="start chrome " & Document.Name

		Case Else	'Other
			TITLE=Document.Name
			EXEC_COMMAND=Document.Name
	End Select
End If

'コマンドライン起動
cmd.Run Join(Array( _
	"cmd /C """, _
	"title ",TITLE,br, _
	"cd/d ",Document.Path,br, _
	DEL_BINARY(), _
	EXEC_COMMAND,br, _
	"pause > nul",br, _
	"exit"""),""),1

Set cmd=Nothing

'コマンドラインオプションの読込
Function load_option(opt)
	load_option=Instr(LCase(Document.GetLine(1)),opt)
End Function

'exe、class、obj、min.js、jsファイルを削除するかどうか
Function DEL_BINARY()
	DEL_BINARY=""
	If load_option("delexe") Then _
		DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".exe",br),"")
	If load_option("delclass") Then _
		DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".class",br),"")
	If load_option("delobj") Then _
		DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".obj",br),"")
	If load_option("deljs") And file_format<>"js" Then _
		DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".js",br),"")
	If load_option("delmin") Then _
		DEL_BINARY=DEL_BINARY & Join(Array("del ",DOC_NAME,".min.js",br),"")
End Function

exec_sbcl_comp.lisp[編集]

;exec_sbcl_comp.lisp
;exec_cmd.vbs SBCLコンパイル用
;Mery以下のMacro\exec_cmd\に配置してください。
(compile-file (elt *posix-argv* 1))
スポンサーリンク