aboutsummaryrefslogtreecommitdiff
path: root/vb/step0_repl.vb
blob: f53f3785247f06cdcc646cc5b45f9fb6eb25d044 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Imports System
Imports Mal

Namespace Mal
    Class step0_repl
        ' read
        Shared Function READ(str As String) As String
            Return str
        End Function

        ' eval
        Shared Function EVAL(ast As String, env As String) As String
            Return ast
        End Function
        
        ' print
        Shared Function PRINT(exp As String) As String
            Return exp
        End Function

        ' repl
        Shared Function REP(str As String, env As String) As String
            Return PRINT(EVAL(READ(str), env))
        End Function

        Shared Function Main As Integer
            Dim prompt As String = "user> "
            Dim line As String

            Do
                line = Mal.readline.Readline(prompt)
                If line is Nothing Then
                    Exit Do
                End If
                If line = "" Then
                    Continue Do
                End If
                Console.WriteLine(REP(line, ""))
            Loop While True
            Return 0
        End function
    End Class
End Namespace