-3
Imports System.IO
Public Class ReadAndInterpret
'File dialog part
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
OpenFileDialog1.ShowDialog()
TextBox1.Text = OpenFileDialog1.FileName
End Sub
'Set up the interpretator
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim ClowsReader As New StreamReader(TextBox1.Text)
Do While ClowsReader.Peek() <> -1
Dim TextLine As String
TextLine = ClowsReader.ReadLine() & vbNewLine
'The function/variable interpreter part
If TextLine.Contains("var") Then
Dim CheckVarName As String = TextLine.Split(" ")(1)
Dim CheckVarVal As String = TextLine.Split(CheckVarName & "=")(1)
ElseIf TextLine.Contains("MsgBox") Then
Dim CheckLine As String = TextLine.Split(">")(1)
MsgBox(CheckLine)
If CheckLine.Contains(CheckVarName) Then
MsgBox(CheckVarName)
End If
End If
Loop
End Sub
End Class
これは私がVB.NETで作成しているスクリプト言語解釈プログラムのコードです。メッセージボックスと変数関数のみが存在する(まだ行われていない。)このコードでは、それがコード内ローカル変数が定義されていません - VB.Net
Dim CheckVarName As String = TextLine.Split(" ")(1)
に定義されていても、定義されていないCheckVarNameの誤差を与えます。
CheckVarNameが定義されていないと誰が知っていますか? (これは、コードのこの部分でエラーが発生します):
If CheckLine.Contains(CheckVarName) Then
MsgBox(CheckVarName)
End If
プログラミング101 - 変数の範囲https://msdn.microsoft.com/en-us/library/1t0wsc67.aspx私は否定的ではありませんが、言語インタープリタを書く前に言語の仕組みを完全に理解する必要があります – Steve
適切な字下げは、別のブロック( 'If'の最初の部分)で' CheckVarName'を定義したことを確認するのに役立ちます。 –
'定義されていても 'ですが、ifブロックの中で定義されています*。したがって、* elseブロックには表示されません*。 **ファンダメンタルズを学んでください**。 –