将逻辑表达式保存到可以在以后评估的文件中

时间:2014-07-11 18:50:45

标签: vb.net

我正在创建一个允许用户汇总逻辑表达式的应用。同一个应用程序也将在以后评估这些逻辑表达式,引用内存中的变量。解决这种问题的一般方法是什么?

Variables in memory (example)
Variable   Type      Value
height     string    tall
plans      integer   3

Examples of logical expressions a user may have entered:
height = "tall"
plans > 3
Left(height, 1) = "s"
height = "tall" AND plans > 3

我考虑过使用正则表达式,反射或编写编译器或解析器。 因为所有这些选择都很困难"对于我的经验,我想知道哪个会对我的问题最有意义,或者是否有更合适的方法?

1 个答案:

答案 0 :(得分:1)

以Excel的语法存储表达式并使用Excel.Evaluate

使用布尔值标记哪些变量值是数字,并且应该省略逻辑字符串中的引号。

使用元字符表示变量(即" @" char),并在评估之前用它们的值替换它们。 这种方法易于实现,并且允许用户访问Excel的公式。

 Imports Microsoft.Office.Interop

 Dim xlApp As Excel.Application
 Dim variables As DataTable
 Dim initialString As String 'this is the logic string
    For Each row As DataRow In variables.Rows
        If DirectCast(row.Item("Numeric"), Boolean) Then
            initialString = Strings.Replace(initialString, _
                "@" & DirectCast(row.Item("Variable"), String), _
                DirectCast(row.Item("VarValue"), String))
        Else
            initialString = Strings.Replace(initialString, _
                "@" & DirectCast(row.Item("Variable"), String), _
                """" & DirectCast(row.Item("VarValue"), String) & """")
        End If
    Next
    MsgBox(xlApp.Evaluate(initialString))