I've sent it in as a bug report. I've taken all the other stuff out as much as possible from this script while still maintaining the error condition. Posted below (the script itself now does pretty much nothing: its just to show the compilation error).
This is more an fyi than anything else. I had a larger script I was delivering to a client, who was unable to change the value of a global without getting errors. After quite a lot of debugging, it turned out it was because it would not compile when logged in with the windows SL client, but did compile with mac.
CODE
// This compiles on the mac client, but Syntax errors on the Windows client
//
// 20070716 RJ Source Initial Coding
string g_Config = "test";
string g_Comment = "test";
key g_QueryID;
string g_MenuCmd = "0";
string g_ButtonCmd = "0";
string g_GiveCmd = "0";
string g_AutoCmd = "0";
string g_IdleCmd = "0";
string g_LoopOpt = "0";
string g_SoundOpt = "0";
string g_AnimOpt = "0";
string g_SitCmd = "0";
string g_InvCmd = "0";
string g_MoveCmd = "0";
string g_HelpCmd = "0";
string g_UpCmd = "0";
list g_Tools = [];
string g_AutoAnim = "0";
string g_IdleAnim = "0";
string g_Sittext = "0";
integer g_Invisible = TRUE;
vector g_pos = <0.0,0,0.0>;
rotation g_rot = <0,0,0,1>;
vector g_newpos;
string g_Mute = "0";
string g_TopMenu = "0";
string g_Idle = "0";
list g_RepeatButtons = [g_Idle, g_Mute];
float g_Timer = 3.0;
float g_MoveInc = 0.0;
string g_HelpCard = "";
string AnimControl = "0";
string AnimStart = "0";
string AnimStop = "0";
float g_Volume = 0.0;
list g_Menus = [];
list g_MenuTexts = [];
list g_MenuStartptr = [];
list g_MenuEndptr = [];
integer g_Bptr1;
integer g_Bptr2;
integer g_Menuptr;
list g_MenuStack;
list g_Buttons = [];
integer g_ButtonCount = 0;
list g_Anims = [];
string g_Anim = "";
list g_Sounds = [];
list g_Sloops = [];
string g_Sound = "";
list g_Texts = [];
integer g_x;
key g_Agent = NULL_KEY;
integer g_Channel;
integer g_ListenID;
list g_TempMenu;
list g_TempRepeat;
string g_MenuText;
float g_Alpha1;
integer g_Worn = FALSE;
integer g_Sit = FALSE;
string g_PageCmd = "Page ";
integer g_Page = 1;
integer g_Marked = -1;
string g_Marker = "*";
string UnComment(string text1, string text2)
{
return "";
}
AddMenu(string menu, string text)
{
}
AddButton(string menu, string button, string text, string anim, string sound, integer loop)
{
}
// ParseCommand
// Parse the given command
//
ParseCommand(string command)
{
list tokens = llParseString2List(command, [","], []);
string cmd;
string opt1;
integer ptr;
string opt2;
string opt3;
string opt4;
string text;
cmd = llToUpper(llStringTrim(llList2String(tokens, 0), STRING_TRIM));
if (cmd == "") return;
opt1 = llStringTrim(llList2String(tokens, 1), STRING_TRIM);
if (cmd == g_GiveCmd) g_Tools = (g_Tools = []) + g_Tools + opt1;
else if (cmd == g_HelpCmd) g_HelpCard = opt1;
else if (cmd == g_SitCmd) g_Sittext = opt1;
else if (cmd == g_InvCmd) // Turn seat invisible
{
opt1 == llToUpper(opt1);
if (opt1 == "YES") g_Invisible = TRUE;
else g_Invisible = FALSE;
}
else if (cmd == g_AutoCmd) g_AutoAnim = opt1;
else if (cmd == g_IdleCmd) g_IdleAnim = opt1;
else if (cmd == g_MoveCmd) g_MoveInc = (float)opt1;
else if (cmd == g_MenuCmd) // Menu command
{
AddMenu(opt1, opt1);
opt2 = llToUpper(llList2String(tokens, 2)); // Sub command
opt3 = llList2String(tokens, 3);
opt4 = llList2String(tokens, 4);
if (opt2 == g_MenuCmd)
{
AddButton(opt1, opt3, opt4, "", "", 0);
AddMenu(opt3, opt4);
}
else if (opt2 == g_ButtonCmd)
{
AddButton(opt1, opt3, llList2String(tokens, 7), opt4, llList2String(tokens, 5), llList2Integer(tokens, 6));
}
}
else llSay(0, "Unknown Command: " + command);
}
//
default
{
state_entry()
{
llOwnerSay("Testing.");
}
}
: variable `menu' declared but never used.