Skip to content

Instantly share code, notes, and snippets.

@windymelt
Last active November 20, 2015 11:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save windymelt/ade54169699d0e6e5b61 to your computer and use it in GitHub Desktop.
Save windymelt/ade54169699d0e6e5b61 to your computer and use it in GitHub Desktop.
swi-prologを秀丸で走らせるマクロ

インストール

  1. 秀丸にこのマクロを登録する(登録方法はググってね)
    1. auto-install.batをダウンロード(拡張子は.batのまま:ファイルの種類を「すべてのファイル」とする)して起動する
    2. 秀丸を開き[マクロ]→[マクロ登録]を開く
    3. 空いている適当なスロットに適当な名前(例えば「run swipl」)をつける
    4. 「ファイル名」隣の[▼]をクリックするとrun-swipl.macが表示されているはず(されていなかったらそのフォルダにrun-swipl.macを持ってくる)ので選択する
    5. [OK]をクリックする

使い方

  1. マクロを登録する
  2. 実行したいソースコードを開く
  3. マクロを起動させる
  4. 実行結果が新しいウィンドウに出てくる

トラブルシューティング

何も表示されないゾ……

swipl-qオプションを渡しているので明示的にwrite(ほげ).などとしないと出力されません。マクロファイルの中に実行コマンドの記述があるので-qをはずすと全部出力してくれます。

思った箇所からプログラムが動かない

ダウンロードしたままの状態では述語[go]を実行します。したがって実行したいソース上に以下のような記述が必要です。 go:- write("このような記述"). goを使いたくないときはマクロファイルを編集することで対応できます。ファイル上に以下のような記述があるので、そこを書き換えてください。 $goal = "ここに適当なゴール名を指定する";

SWI-Prologが走らない

swiplの実行ファイルがあるフォルダの設定が間違っているので、ファイル上の以下の記述を書き換えてください。 $swipl_dir = "swipl.exeがあるフォルダへのパス"; パス指定にあたって以下のような注意点があります。

  • パスにスペースが含まれる場合はさらに二重引用符で囲みます。
    • $swipl_dir = "\"スペースが含まれるパス\""のように記述してください。
    • \"は文字列の中で二重引用符自体を入力する際に使う記法です。

そのほかのトラブル

@windymeltまでどうぞ

  • このマクロとインストーラに関係のない質問をしないでください
  • 出来る範囲でお答えします
  • 私は人間です
@echo off
set macro_dir="C:\Users\%USERNAME%\AppData\Roaming\Hidemaruo\Hidemaru\Macro"
set run_swipl_mac_uri="https://gist.githubusercontent.com/windymelt/ade54169699d0e6e5b61/raw/e8547ebc066e4a5f6df8b5b6958f2b6cd09004b6/run-swipl.mac"
set jobname="download_hidemaru_swipl_macro"
set readme_uri="https://gist.github.com/windymelt/ade54169699d0e6e5b61#file-readme-md"
if exist %macro_dir% (
echo Folder existence check: OK
goto ok
) else (
echo No folder found.
echo Check out Hidemaru Macro Folder.
pause
rundll32.exe url.dll,FileProtocolHandler "https://www.google.co.jp/search?q=%%8fG%%8a%%db%%20%%83%%7d%%83N%%83%%8d%%20%%83t%%83H%%83%%8b%%83_%%20%%8f%%ea%%8f%%8a"
exit /B 1
)
:ok
pause
bitsadmin.exe /TRANSFER %jobname% %run_swipl_mac_uri% %macro_dir%\run-swipl.mac
echo Install complete!
rundll32.exe url.dll,FileProtocolHandler %readme_uri%
echo Press any key to exit.
@pause
// 秀丸でswiplを走らせるやつ v0.1 by @windymelt
// Copyright (c) 2015 @windymelt
// This code is under MIT License.
// このコードはMITライセンスのもと提供されます。
$goal = "go"; // 実行するゴールを指定
$swipl_dir = "\"c:\\Program Files\\swipl\\bin\\swipl\"";
// 変数初期化
$fname = basename2;
// swiplの実行コマンドを設定する
$swipl = $swipl_dir + " -q -s " + $fname + " -t " + $goal;
// 走らせる
runex $swipl, 1, 1,"", 4, "", 4, "", 1, "", 1, 0, 6;
title "実行結果: $ " + $swipl + " // マクロファイルを書き換えることでゴールやswiplの設定ができます";
title -1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment