簡単なスクリプトを実行するには?


たかみちえ  URL  2001-10-05 03:57:31  No: 74887

しばらく音沙汰なしでした^^;
  簡単なスクリプト機能のあるものを作りたいんですけど、
(A="text1",B="text2",print A+Bで"text1text2"と出力したり…)
その命令の読みこみ方にちょっと困ってます。
Select Case で地道に一個ずつ調べていくという方法もありますけど、
他になにか方法はないんでしょうか?
上のとおりだととっても無駄をしている気がするんですけど…。


Say  2001-10-10 19:58:57  No: 74888

こんなんでいいなら・・・

'microsoft Script Control を参照設定すること
Private Sub Command1_Click()
    Dim objVBS As New ScriptControl
    Dim strScript As String
    strScript = "Dim A,B :A=""text1"":B=""text2"":MsgBox A & B "
    objVBS.Language = "VBScript"
    objVBS.ExecuteStatement strScript
End Sub


Say  2001-10-10 20:08:27  No: 74889

P.S.
マルチステートメントがいやなら、たとえばこう。

Private Sub Command2_Click()
    Dim objVBS As New ScriptControl
    Dim strScript As String
    strScript = ""
    strScript = strScript & " Dim A , B       " & vbCrLf
    strScript = strScript & " A = ""text1""   " & vbCrLf
    strScript = strScript & " B = ""text2""   " & vbCrLf
    strScript = strScript & " MsgBox A & B    " & vbCrLf
    objVBS.Language = "VBScript"
    objVBS.ExecuteStatement strScript
End Sub


たかみちえ  2001-10-11 03:43:35  No: 74890

えと…。ScriptControlって、自作言語は無理なんでしょうか?
  スクリプトというか、自作エディタのマクロとして使いたいんですけど…。


Say  2001-10-11 18:30:43  No: 74891

言語の自作ということですね。
基本的にはトークンを切り出して、
予約語なら処理ルーチンにとんで、
予約語でなければ
シンボルテーブルに登録する・・・の
繰り返しになります。
前方参照考えると、最低2パスにしたほうが
いいでしょうし。
文字列処理の苦手なVBにはつらいかも・・・
スピード気にしないならいいですが。
単に、構文解析ツール(いわゆるパーサ)が
つくりたいなら、YACCなんてツールもありますが・・・。


たかみちえ  2001-10-12 05:09:58  No: 74892

んと、
line = print "message"
str = split(line," ")
Select case str(0)
case print
  main.maintext.seltext = str(1)
case …
  …
end Select
    とやるというかんじでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加