在C#/ .Net中解析Lua数据结构的最简单方法

Fra*_*man 11 c# lua parsing

有人知道在C#或任何.Net库中解析Lua数据结构的简单方法吗?这与JSON解码类似,除了Lua而不是javascript.

在这一点上看起来我需要自己编写,但希望已经有了一些东西.

Fra*_*man 9

感谢你们两位,我用LuaInterface找到了我想要的东西

这是Lua想要阅读的数据结构("c:\ sample.lua"):

TestValues = {
    NumbericOneMillionth = 1e-006,
    NumbericOnehalf = 0.5,
    NumbericOne = 1,
    AString = "a string"
}
Run Code Online (Sandbox Code Playgroud)

这里是一些使用LuaInterface读取Lua数据结构的示例代码:

Lua lua = new Lua();

var result = lua.DoFile("C:\\sample.lua");

foreach (DictionaryEntry member in lua.GetTable("TestValues")) {
    Console.WriteLine("({0}) {1} = {2}", 
        member.Value.GetType().ToString(), 
        member.Key, 
        member.Value);
}
Run Code Online (Sandbox Code Playgroud)

以下是示例代码写入控制台的内容:

(System.String) AString = a string
(System.Double) NumbericOneMillionth = 1E-06
(System.Double) NumbericOnehalf = 0.5
(System.Double) NumbericOne = 1
Run Code Online (Sandbox Code Playgroud)

为了弄清楚如何使用库,我在Reflector中打开了LuaInterface.dll,并对成员函数进行了google.


RBe*_*eig 5

亚历山大说的话.毕竟,实验室是Lua的故乡.

具体来说,LuaInterface可以允许Lua解释器嵌入到您的应用程序中,以便您可以使用Lua自己的解析器来读取数据.这类似于将Lua嵌入C/C++应用程序中以用作配置/数据文件语言.该LuaCLR项目可能会在某些时候卓有成效的为好,但它可能不是很成熟.


Rom*_*kov 5

LsonLib可以解析 Lua 数据结构,操作它们并将结果序列化回 Lua 文本。完全披露:我是作者。它是纯 C# 并且没有依赖项。

鉴于:

MY_VAR = { "Foo", ["Bar"] = "Baz" }
ANOTHER = { 235, nil }
Run Code Online (Sandbox Code Playgroud)

基本用法:

var d = LsonVars.Parse(File.ReadAllText(somefile));

d["MY_VAR"][1].GetString()     // returns "Foo"
d["MY_VAR"]["Bar"].GetString() // returns "Baz"
d["MY_VAR"][2]                 // throws

d["ANOTHER"][1].GetString()    // throws because it's an int
d["ANOTHER"][1].GetInt()       // returns 235
d["ANOTHER"][2]                // returns null
d["ANOTHER"][1].GetStringLenient() // returns "235"

d["ANOTHER"][1] = "blah";      // now { "blah", nil }
d["ANOTHER"].Remove(2);        // now { "blah" }

File.WriteAllText(somefile, LsonVars.ToString(d)); // save changes
Run Code Online (Sandbox Code Playgroud)

(它实际上是我们内部使用的 JSON 库的一个相当简单的端口,因此它具有相当多的功能,并且可能会留下一些 JSON 痕迹)