Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab

17 mai 2019 : accident de la base de données : plus d'infos

#1 2013-06-28 13:08:46 help : unterminated string constant

EricRG
membre
Lieu: Lorient
Date d'inscription: 2008-03-11
Messages: 170
Site web

help : unterminated string constant



Bonjour,

J'ai cette erreur ! Je sèche un peu là !

Vous auriez une idée ?

N.B. Je suis en train d'écrire du code processing pour gérer le format JSON
(dans le cadre de mon projet d'interface graphique blocks m ais ça pourrait servir en dehors de ça)
Je cherche à produire un code utilisable par les programmes java ou javaxript c'est pourquoi je n'utilise pas directement le json du javascript.

L'erreur apparait depuis l'écriture de la procédure "makeString"

merci ! smile

Le code :

class Json {
  char type='N';
}

class JsonError extends Json {
  JsonError() {
    type='E';
  }
}

class JsonBoolean extends Json {
  boolean value;
  JsonBoolean(boolean value) {
    type='B';
    this.value=value;
  }
}

class JsonInt extends Json {
  int value;
  JsonInt(int value) {
    type='I';
    this.value=value;
  }
}

class JsonString extends Json {
  String value;
  JsonString(String value) {
    type='S';
    this.value=value;
  }
}

class JsonArray extends Json {
  Json[] values;
  JsonArray() {
    type='A';
    values=new Json[0];
  }
  void appendJson(Json json) {
    values=(Json[]) append(values, json);
  }
}

class JsonObject extends Json {
  String [] names;
  Json [] values;

  JsonObject() {
    type='O';
    names=new String[0];
    values=new Json[0];
  }

  void appendJson(String name, Json json) {
    names=append(names, name);
    values=(Json[]) append(values, json);
  }
}

class JSON {
 
  String makeString(Json json) {
    String toReturn="";
    if (json.type=='E') toReturn="Error";
    else if (json.type=='N') toReturn="null";
    else if (json.type=='B') toReturn=str((JsonBoolean) json.value);
    else if (json.type='I') toReturn=str(((JsonInt) json.value);
    else if (json.type=='S') toReturn='"'+(JsonString) json.value+'"';
    else if (json.type=='A') {
      toReturn="[";
      if ((JsonArray) json.values.length!=0) {
        if (i!=0) toReturn+=",";
        for (int i=0;i<(JsonArray) json.values.length;i++) toReturn+=makeString((JsonArray) json.values[i]);
      }
      toreturn+="]";
    }
    else if (json.type=='O') {
      toReturn="{";
      if ((JsonObject) json.values.length!=0) {
        if (i!=0) toReturn+=",";
        for (int i=0;i<(JsonObject) json.values.length;i++) toReturn+=(JsonObject) json.names[i]+":"+makeString(json.values[i]);
      }
      toReturn+="}";
    }
    else {
      println("Type inconnu dans la méthode "makeString" de la classe "JSON");
      exit();
    }
    return toReturn;
  } // end makeString
 
  String toParse;

  Json parseValue(int indexLeft, int indexRight) { // Les String peuvent comporter des guillemets ou non : mots-clefs sans guillemets possibles
    Json toReturn;
    if (trim(toParse.substring(indexLeft,indexRight))=="null") toReturn=new Json();
    else if (trim(toParse.substring(indexLeft,indexRight))=="true") toReturn=(Json) new JsonBoolean(true);
    else if (trim(toParse.substring(indexLeft,indexRight))=="false") toReturn=(Json) new JsonBoolean(false);
    else {
   
   
   
    toReturn=new Json(); //blabla pour le compilateur
    }
   
    return toReturn;
  }

  Json parseArray(int indexLeft, int indexRight) {
    Json toReturn=new Json();//blabla pour le compilateur
    return toReturn;
  }

  Json parseObject(int indexLeft, int indexRight) {
    Json toReturn=new Json();//blabla pour le compilateur
    return toReturn;
  }

  Json read(String file) { // sans le .json
    toParse="";
    String[] lines=loadStrings(file+".json");
    for (int i=0;i<lines.length;i++) toParse+=lines[i];
    return parseValue(0, toParse.length()-1);
    // En cas d'erreur type='E' !
  }

  void write(String file, Json toWrite) { // sauvegarde avec .json en plus, toutes les String comportent des guillemets
  }
} // end class JSON

Hors ligne

 

#2 2013-06-30 14:45:33 Re : help : unterminated string constant

EricRG
membre
Lieu: Lorient
Date d'inscription: 2008-03-11
Messages: 170
Site web

Re: help : unterminated string constant



Bon, je suis arrivé à faire fonctionner ma méthode makeString !

Mes widgets exportent maintenant correctement leurs données dans les formats JsonBase, JsonInt ...
et la méthode makeString de ma classe Json écrit correctement le code Json correspondant

chouette !

Je vais pouvoir reprendre l'écriture de "parsing" des chaines Json en utilisant ma méthode makeString pour vérifier qu'elles fonctionnent correctement en voyant si cette dernière me renvoie bien la chaine Json originale.

quand je pourrai lire/Ecrire le code Json (simplifié pour l'instant mais suffisant au point où j'en suis) je pourrai envisager l'écriture des premiers widgets proprement dits leur description se faisant dans un fichier Json écrit par l'utilisateur de la bibliothèque "interne" Blocks puis, leur placement à la souris (les nouvelles coordonnées étant réécrites dans le fichier json des paramétrages des widgets).


code :

class JsonBase {
  char type='N';
}

class JsonError extends JsonBase {
  JsonError() {
    type='E';
  }
}

class JsonBoolean extends JsonBase {
  boolean value;
  JsonBoolean(boolean value) {
    type='B';
    this.value=value;
  }
}

class JsonInt extends JsonBase {
  int value;
  JsonInt(int value) {
    type='I';
    this.value=value;
  }
}

class JsonString extends JsonBase {
  String value;
  JsonString(String value) {
    type='S';
    this.value=value;
  }
}

class JsonArray extends JsonBase {
  JsonBase[] values;
  JsonArray() {
    type='A';
    values=new JsonBase[0];
  }
  void appendJson(JsonBase jsonBase) {
    values=(JsonBase[]) append(values, jsonBase);
  }
}

class JsonObject extends JsonBase {
  String [] names;
  JsonBase [] values;

  JsonObject() {
    type='O';
    names=new String[0];
    values=new JsonBase[0];
  }

  void appendJson(String name, JsonBase jsonBase) {
    names=append(names, name);
    values=(JsonBase[]) append(values, jsonBase);
  }
}
class Json {
 
  String toParse;
 
  String makeString(JsonBase jsonBase) {
    String toReturn="";
    if (jsonBase.type=='E') toReturn="Error";
    else if (jsonBase.type=='N') toReturn="null";
    else if (jsonBase.type=='B') {
      JsonBoolean jsonB;
      jsonB=(JsonBoolean) jsonBase;
      toReturn=str(jsonB.value);
    } else if (jsonBase.type=='I') {
      JsonInt jsonI;
      jsonI=(JsonInt) jsonBase;
      toReturn=str(jsonI.value);
    } else if (jsonBase.type=='S') {
      JsonString jsonS;
      jsonS=(JsonString) jsonBase;
      toReturn='"'+jsonS.value+'"';
    } else if (jsonBase.type=='A') {
      toReturn="[";
      JsonArray jsonA;
      jsonA=(JsonArray) jsonBase;
      if (jsonA.values.length!=0) {
        for (int i=0;i<jsonA.values.length;i++) {
          if (i!=0) toReturn+=",";
          toReturn+=makeString(jsonA.values[i]);
        }
      }
      toReturn+="]";
    } else if (jsonBase.type=='O') {
      toReturn="{";
      JsonObject jsonO;
      jsonO=(JsonObject) jsonBase;
      if (jsonO.values.length!=0) {
        for (int i=0;i<jsonO.values.length;i++) {
          if (i!=0) toReturn+=",";
          toReturn+=jsonO.names[i]+":"+makeString(jsonO.values[i]);
        }
      }
      toReturn+="}";
    }
    else {
      println("Type inconnu dans la méthode 'makeString' de la classe 'Json'");
      exit();
    }
    return toReturn;
  } // end makeString


  JsonBase parseValue(int indexLeft, int indexRight) { // Les String peuvent comporter des guillemets ou non : mots-clefs sans guillemets possibles
    JsonBase toReturn;
    if (trim(toParse.substring(indexLeft,indexRight))=="null") toReturn=new JsonBase();
    else if (trim(toParse.substring(indexLeft,indexRight))=="true") toReturn=(JsonBase) new JsonBoolean(true);
    else if (trim(toParse.substring(indexLeft,indexRight))=="false") toReturn=(JsonBase) new JsonBoolean(false);
    else {
   
   
   
    }
    toReturn=new JsonBase(); //blabla pour le compilateur
   
    return toReturn;
  } // end parseValue

  JsonBase parseArray(int indexLeft, int indexRight) {
    JsonBase toReturn=new JsonBase();//blabla pour le compilateur
    return toReturn;
  }

  JsonBase parseObject(int indexLeft, int indexRight) {
    JsonBase toReturn=new JsonBase();//blabla pour le compilateur
    return toReturn;
  }

  JsonBase read(String file) { // sans le .jsonBase
    toParse="";
    String[] lines=loadStrings(file+".jsonBase");
    for (int i=0;i<lines.length;i++) toParse+=lines[i];
    return parseValue(0, toParse.length()-1);
    // En cas d'erreur type='E' !
  }

  void write(String file, JsonBase toWrite) { // sauvegarde avec .jsonBase en plus, toutes les String comportent des guillemets
  }

} // end class JSON

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2020