VB.netでWindowsプログラムが書ける独自言語を作ってみたいのですが、
Buttonなどを配置する命令を作るにはどうすればよいでしょうか?
初心者ができるようはなしではない。
>Buttonなどを配置する命令を作るにはどうすればよいでしょうか?
構文解析が容易にできるようになるのが先決。
正直やめたほうがいい。
今月号の日経ソフトウェア誌を読んでみるとか。
http://software.nikkeibp.co.jp/software/backno/2005/0510indexc.html
本当に言語を実装する気があるなら、System.CodeDom 名前空間が使えるかも。
> 日経ソフトウェア
# 日経ソフトウエアですね。(ェ→エ)
System.CodeDomをヘルプで調べてみたのですが、
よく分かりません。
詳しく教えていただけないでしょうか?
とりあえず、本気で教えを請うつもりならば、
HNをかえたほうがいい。
捨てハンだと思われると、もらえる情報ももらえないから。
すみません・・・・・・・・・・・・
HNとはなんなのでしょうか?
本当に無知ですみません。
HN=ハンドルネーム=お名前
わからないならサイト検索しましょうぜ。
>HNとはなんなのでしょうか?
ハンドルネーム
この場合「超初心者」
まじめに聞く態度じゃないと思われる。
質問者でいいでしょうか?
>> 日経ソフトウェア
># 日経ソフトウエアですね。(ェ→エ)
_|‾|○ 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
VBの中で言語をつくるっていうことは、VBを完璧にマスターしていないと無理だと思うのですが
正直、超初心者の方にできるようなことではないと思いますよ
ボタンを配置する命令をこちらが提示したら、次は○○をお願いします、○○ができたら××をお願いします…と延々と質問して完成できると思っているのなら、そんなに甘い場所ではないです
実際にVBで独自言語をつくっている「ていこくさん」にでも相談してみては?
同じような返答が来ると思いますが
「独自言語」と肩肘を張らなくても良いなら、
> 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アセンブリ)
>質問者でいいでしょうか?
撤収〜
皆さんにご迷惑をおかけして本当にもうしわけありませんでした。
おかげさまで無事解決しました。
ありがとうございました。
> おかげさまで無事解決しました。
どのように?あきらめたということですか?
もういいじゃないか…
そっとしておこうよw
無事解決しました
なんて嘘の報告しか出来ないなら
ちょっとそれは社会に出たとき致命的にマズイよ
知り合いにいるけど
こう言ったいい加減な考えをする人が
横領や粉飾をする
そもそも、どう作るのか自分で解決できない人が言語を作ったところで、一体どんな素敵な言語ができることやら・・・w
解決済みスレ上げてすいません、かなり面白いので、このスレw
ツイート | ![]() |