2012-11-03 89 views
3

更具体完整的错误是LUA:1:邻近意外符号 'I'

../../Scripts/LuaTest.lua:1:邻近意外符号 'I'

我检查了LuaTest.lua文件与不同的编辑器,以包括记事本+ +和无法找到任何额外/隐藏字符。我对可能造成这种情况的原因感到不知所措。
侧面说明,我按照本指南:Godpatterns: Scripting with Lua in C#

这里是主代码块:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Lua lua = new Lua(); 
     Program program = new Program(); 

     // register our C# functions 
     lua.RegisterFunction("DanSays", program, program.GetType().GetMethod("DanSays")); 
     lua.RegisterFunction("ThorSays", program, program.GetType().GetMethod("ThorSays")); 

     lua.DoFile("../../Scripts/LuaTest.lua"); 
     Console.ReadLine(); 
    } 

    public void DanSays(string s) 
    { 
     Console.WriteLine("Dan Says > " + s); 
    } 
    public void ThorSays(string s) 
    { 
     Console.WriteLine("Thor says > " + s); 
    } 

} 

此外,这里是LuaTest.lua

DanSays("Hey, Thor!"); 
ThorSays("Hi Dan! You know Thursdays . . . "); 
DanSays("*sigh* yeah, Thor, I know Thursdays."); 
ThorSays("Named after me you know!"); 
DanSays("Yeah, I know."); 

回答

4

这可能是由Byte Order Mark引起这是由一些文本编辑器放置在Unicode文本文件的开头。 BOM的字节包括0xEF,这是ISO 8859-1 character code(带有变音符号的拉丁文小写字母)。

所以你的猜测是正确的,有在那里隐藏的字符。配置你的文本编辑器到而不是写入文本文件时使用BOM。

+0

谢谢格雷格,每天学点新东西。以下是Visual Studio中BOM的链接:[在Visual Studio 2010中没有BOM的utf-8](http://stackoverflow.com/questions/5406172/utf-8-without-bom-in-visual-studio-2010) – user1796217

+2

Lua 5.2跳过UTF8 BOM。 – lhf