VBで独自言語を作るには?

解決


超初心者  2005-09-23 03:00:21  No: 125629

VB.netでWindowsプログラムが書ける独自言語を作ってみたいのですが、
Buttonなどを配置する命令を作るにはどうすればよいでしょうか?


やめたほうがいい  2005-09-23 03:25:01  No: 125630

初心者ができるようはなしではない。
>Buttonなどを配置する命令を作るにはどうすればよいでしょうか?
構文解析が容易にできるようになるのが先決。
正直やめたほうがいい。


Dental  2005-09-23 04:25:23  No: 125631

今月号の日経ソフトウェア誌を読んでみるとか。
http://software.nikkeibp.co.jp/software/backno/2005/0510indexc.html


魔界の仮面弁士  2005-09-23 04:40:20  No: 125632

本当に言語を実装する気があるなら、System.CodeDom 名前空間が使えるかも。

> 日経ソフトウェア
# 日経ソフトウエアですね。(ェ→エ)


超初心者  2005-09-23 23:00:48  No: 125633

System.CodeDomをヘルプで調べてみたのですが、
よく分かりません。
詳しく教えていただけないでしょうか?


dark  2005-09-23 23:26:55  No: 125634

とりあえず、本気で教えを請うつもりならば、
HNをかえたほうがいい。
捨てハンだと思われると、もらえる情報ももらえないから。


超初心者  2005-09-23 23:28:59  No: 125635

すみません・・・・・・・・・・・・
HNとはなんなのでしょうか?
本当に無知ですみません。


dark  2005-09-23 23:44:34  No: 125636

HN=ハンドルネーム=お名前

わからないならサイト検索しましょうぜ。


あん  2005-09-23 23:46:08  No: 125637

>HNとはなんなのでしょうか?
ハンドルネーム
この場合「超初心者」
まじめに聞く態度じゃないと思われる。


質問者  2005-09-23 23:50:27  No: 125638

質問者でいいでしょうか?


Dental  2005-09-24 00:46:39  No: 125639

>> 日経ソフトウェア
># 日経ソフトウエアですね。(ェ→エ)
_|‾|○  il||li

> ヘルプで調べてみたのですが
> よく分かりません。
質問は具体的に書きましょう。

どこを見ればよいのかわからなかったのですか?
それとも、ヘルプを見たけど、どのような機能を持つ物かわからなかったのですか?
それとも、機能はわかったけど、使い方の説明で分かりにくい記述があったとか?

どこを見たらよいかさえわからないなら、まずは、ヘルプの
[複数の言語でのソース コードの動的な生成とコンパイル]を。
http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpconGeneratingCompilingSourceCodeDynamicallyInMultipleLanguages.asp
その後で、名前空間下にどんなクラスがあるかを調べ、googleでサンプルを探しつつ、
実際に試してみる、というのが良いかな。

いずれにしても、CodeDomは高機能なので、自分で超をつけるほどの初心者なら、
多分、ヘルプだけみても理解しきれないんじゃ無いかと。
最低限、自分で試して調べられる程度のVB.NETの基礎知識は必要でしょう。

ま、独自言語を作るともなれば、その言語の文法仕様等をきっちりと
定義する必要があるので、その辺の設計能力も問われるかも。

ちなみに、[かけはし]などもCodeDomを利用しているそうです。
http://comets.half-done.net/kakehashi/summary.html

> 詳しく教えていただけないでしょうか?

そんな。「詳しく」というのは些か無茶な注文ではありますまいか。
どこが分からないのかも示さず、単に教えて欲しいとだけ書いても、
無視されるのがオチですよ。

どこがわからないのか書かれていないのだから、教えるとなれば、回答者は
「あらゆる点を、ヘルプや参考書以上に詳しく記述しなければならない」事になります。
それは、掲示板で答えられるようなボリュームじゃないですよ…。

まぁ、せめて概要だけ書いておくと。
CodeDomは、「ソース コードをモデル化」したものです。
先の[複数の言語でのソース コードの動的な生成とコンパイル]に
書いてある事の繰り返しになっちゃいますがね。

CodeDomを各言語用に実装したクラスを用意すれば、その言語の
プログラムコードを解釈して、実行させる事ができます。
またモデル化されたオブジェクトから、逆にソースコードを生成する事もできます。

http://www.microsoft.com/japan/msdn/library/ja/dv_vjsample/html/vjsamcodedomsampleusecodedomprovider.asp
http://support.microsoft.com/default.aspx?scid=kb;ja;304654
http://www.users.gr.jp/blogs/fukui/archive/2004/02/07/1135.aspx
http://dobon.net/vb/dotnet/programing/incodecompiler.html


通ってみた  2005-09-24 01:05:53  No: 125640

VBの中で言語をつくるっていうことは、VBを完璧にマスターしていないと無理だと思うのですが
正直、超初心者の方にできるようなことではないと思いますよ

ボタンを配置する命令をこちらが提示したら、次は○○をお願いします、○○ができたら××をお願いします…と延々と質問して完成できると思っているのなら、そんなに甘い場所ではないです

実際にVBで独自言語をつくっている「ていこくさん」にでも相談してみては?
同じような返答が来ると思いますが


魔界の仮面弁士  2005-09-24 01:33:43  No: 125641

「独自言語」と肩肘を張らなくても良いなら、
> Buttonなどを配置する命令を作るにはどうすればよいでしょうか?
という程度の処理は、CodeDomとか使わなくても書けますよね。

とりあえず、とっても手抜きなサンプルをば。

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  'この場合、ボタンが左上(20,50)の位置に、200x100のサイズで配置されます。
  TextBox1.Text = "Button 0020,0050,0200,0100"
End Sub

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  Dim Code As String = TextBox1.Text
  If Code Like "Button ####,####,####,####" Then
    Dim Pos() As String = Code.Substring(7).Split(","c)
    Dim Btn As New Button
    Btn.Text   = "ぼたん"
    Btn.Left   = Integer.Parse(Pos(0))
    Btn.Top    = Integer.Parse(Pos(1))
    Btn.Width  = Integer.Parse(Pos(2))
    Btn.Height = Integer.Parse(Pos(3))
    Me.Controls.Add(Btn)
  ElseIf Code Like "TextBox ####,####,####,####" Then
    Dim Pos() As String = Code.Substring(8).Split(","c)
    Dim Txt As New TextBox
    Txt.Text = "ぼたん"
    Txt.Left   = Integer.Parse(Pos(0))
    Txt.Top    = Integer.Parse(Pos(1))
    Txt.Width  = CInt(Pos(2))
    Txt.Height = CInt(Pos(3))
    Me.Controls.Add(Txt)
  Else
    MessageBox.Show("構文エラー")
  End If
End Sub

ただしボタン配置だけでなく、配置した後のクリックイベントの
処理なども必要というなら、解釈も処理も、かなり複雑になってきます。
で、本気でそこまで言語として実装させる気があるなら、
CodeDomの使用を検討してみるのも良いでしょう。
# 言語を作りこむわけですから、実装は大変でしょうけど。

ちなみに、Visual Studio.NET 2003には、C++言語のためのCodeDOMが
存在しており、これを使うとC++コードを解析したり生成したり
できるそうです。(MCppCodeDomProviderアセンブリとMCppCodeDomParserアセンブリ)


名無し  2005-09-24 02:08:38  No: 125642

>質問者でいいでしょうか?

撤収〜


質問者  2005-09-24 06:00:08  No: 125643

皆さんにご迷惑をおかけして本当にもうしわけありませんでした。
おかげさまで無事解決しました。
ありがとうございました。


dark  2005-09-24 07:09:43  No: 125644

> おかげさまで無事解決しました。
どのように?あきらめたということですか?


名無し  2005-09-24 09:13:10  No: 125645

もういいじゃないか…
そっとしておこうよw


  2005-09-24 09:23:04  No: 125646

無事解決しました
なんて嘘の報告しか出来ないなら
ちょっとそれは社会に出たとき致命的にマズイよ
知り合いにいるけど
こう言ったいい加減な考えをする人が
横領や粉飾をする


回答者  2005-09-30 04:16:35  No: 125647

そもそも、どう作るのか自分で解決できない人が言語を作ったところで、一体どんな素敵な言語ができることやら・・・w

解決済みスレ上げてすいません、かなり面白いので、このスレw


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

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






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