1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 516
    Points : 897
    Points
    897

    Par défaut [Luainterface] unexpected symbol near 'ï'

    Bonjour.
    Je m'essaye à Lua en tant que langage de script dans une appli C#.
    J'ai un souci dû à l'erreur " unexpected symbol near 'ï' " qui se produit alors que j'essaye de jouer l'instruction DoFile. Voici les détails:
    - j'utilise la dernière version de Luainterface que j'ai trouvée, à savoir la 2.0.1 . J'ai testé aussi avec la 1.5.3 et la 1.5.2, les résultats sont identiques;
    - j'ajoute la référence vers luainterface.dll ;
    - je copie lua51.dll et luanet.dll dans le répertoire bin\debug où tout se passe (à noter que dans la 2.0.1 il n'y a pas de luanet.dll);
    - je code ce programme dément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    using System;
    using System.IO;
     
    using LuaInterface;
     
    namespace TestScript_Lua1
    {
    	class Program
    	{
    		static void Main(string[] args)
    		{
    			Lua lua = new Lua();
     
    			var ficlua = @"../../cmd.lua";
     
    			if (!File.Exists(ficlua)) Console.WriteLine("Fichier lua introuvable!");
    			else Console.WriteLine("Fichier lua trouvé!");
     
    			lua.DoFile(ficlua); //<<<======ICI L'ERREUR
     
    			Console.WriteLine("d = <" + lua["d"] + ">:");
     
    		}
    	}
    }
    - je crée ce non moins dément programme cmd.lua :
    (avec ou sans le ; les résultats sont identiques)
    - j'ai testé avec VC# 2008 ET Sharpdevelop 3.0 (béta) ET Sharpdevelop 2.2 et j'ai partout le même résultat!

    J'ai fouillé un peu sur le net: à chaque fois que ce problème a été soulevé, on a conseillé à l'auteur de corriger une erreur probable de copier/coller... Une seule fois il est question d'utf-8, mais bonje ne vois pas trop le sujet...

    Auriez-vous une idée? Merci d'avance

    PS: en mettant le d=5 dans un DoString, ça marche parfaitement!
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 516
    Points : 897
    Points
    897

    Par défaut


    J'ai réenregistré le fichier cmd.lua ( qui ne contient que d=5; ) en ANSI au lieu d'UTF-8 et ça marche !
    Y'a un truc pour forcer Lua à lire de l'utf-8 ?
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2008
    Messages : 217
    Points : 253
    Points
    253

    Par défaut

    Citation Envoyé par Thorna Voir le message
    J'ai réenregistré le fichier cmd.lua ( qui ne contient que d=5; ) en ANSI au lieu d'UTF-8 et ça marche !
    Y'a un truc pour forcer Lua à lire de l'utf-8 ?
    J'ai récupéré les memes elements que vous et je vous confirme : cette version de Lua semble avoir des problemes avec les encodings autres que ANSI (Unicode, Unicode big endian, et UTF-8) ; j'ai créé 4 programmes hello world identiques en Lua, dans 4 fichiers dans ces 4 encodings => la méthode DoFile n'accepte effectivement que ANSI, et provoque une exception sur les autres.

    Je vous propose donc le workaround ci-dessous en attendant que l'equipe Lua corrige le probleme pour Unicode little/big endian et UTF-8 ; cela vous permettra d'executer des fichiers de scripts Lua sans vous soucier de l'encoding de ces fichiers :

    (Lua)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    hello = 'Hello, world !'
    (notez le booléen à true en 2nd paramètre du constructeur du StreamReader : c'est ainsi qu'on demande au framework .NET de détecter le BOM -- "Byte Order Mark" -- des fichiers, pour déterminer quel encoding utiliser en lecture du flux d'octets depuis le système de fichiers)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #define WORKAROUND
     
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
     
    using LuaInterface;
     
    namespace TestLua
    {
        class Program
        {
            static void Main(string[] args)
            {
                Lua lua = new Lua();
                string encoding = "ansi"; // == "ansi", ou "unicode", ou "unicodeBig", ou "utf8"
                string filePath = String.Format(@"D:\POC\LuaNET\hello.{0}.lua", encoding);
    #if !WORKAROUND
                lua.DoFile(filePath);
    #endif
     
    #if WORKAROUND
                using (StreamReader reader = new StreamReader(filePath, true))
                {
                    lua.DoString(reader.ReadToEnd());
                }
    #endif
                Console.WriteLine(lua["hello"] as string);
                Console.ReadLine();
            }
        }
    }
    'HTH

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 516
    Points : 897
    Points
    897

    Par défaut

    Aha !
    Hé bien, je vais faire avec en attendant...
    C'est quand même moins beau d'utiliser un using...ReadToEnd qu'un simple doFile, mais d'un autre côté c'est plus pratique que de changer l'encoding du fichier texte à chaque fois que je veux écrire du Lua!
    Merci
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. -bash: syntax error near unexpected token `('
    Par carpe001 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 22/06/2015, 10h46
  2. syntax error near unexpected token `fichier'
    Par kass28 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 16/03/2010, 14h57
  3. erreur : syntax error near unexpected token
    Par lapinou8430 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 28/04/2009, 00h30
  4. [sh] syntax error near unexpected token `}'
    Par vercin dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/09/2007, 11h33
  5. Code ASCII du symbole Euro
    Par FW-S dans le forum Delphi
    Réponses: 9
    Dernier message: 03/04/2007, 01h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo