Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace compilateur
- {
- class Program
- {
- static void Main(string[] args)
- {
- // la variable qu on doit remplire avec la declaration de la structure
- string decla = null;
- Console.WriteLine("Entrez une declaration de structure valide : \n ");
- decla = Console.ReadLine();
- // Supprimer les espaces avant et apres la declaration pour bien tester les conditions
- decla = decla.Trim();
- //On verifie si la declaration est vide
- if (decla == string.Empty)
- {
- Console.WriteLine("\nErreur : La declaration est vide.\n");
- // Laisser la console en mode attente
- Console.ReadLine();
- // L instruction return pour ne pas executer le reste du code et finir le programme
- return;
- }
- // On verifie si la declaration commence par le mot clé struct
- bool test = decla.ToLower().StartsWith("struct ");
- if (!test)
- {
- Console.WriteLine("\nErreur : Verifier que vous avez utilise le mot struct\n");
- Console.ReadLine();
- return;
- }
- // Ici On verifie que le nom de la structure est correcte
- // Un nom est correcte s il comprend seulement des lettres A-Z
- int i = 0;
- for (i = 7; i<decla.Length; i++)
- {
- if (decla[i] == ' ') break;
- if (!char.IsLetter(decla[i]))
- {
- Console.WriteLine("\nErreur : Le nom de la structure doit etre A-Z\n");
- Console.ReadLine();
- return;
- }
- }
- // On verifie l acollade mais on try catch
- // Try catch pour tester si la declaration est complete ou manquante
- try
- {
- // On verifie l acollade ouvrante
- test = decla[++i].Equals('{');
- if (!test)
- {
- Console.WriteLine("Erreur : Verifier que vous avez ouvert une acollade");
- Console.ReadLine();
- return;
- }
- // Ici On verifie s il y a un espace apres l acollade sinn pas d erreur
- if (decla[++i] == ' ') i++;
- // Les types qu on accepte lors de la declaration dans une structure
- string[] list = {"int","char","float","double","string" };
- string tmp="";
- for (; i<decla.Length;i++ )
- {
- if (decla[i] == ' ') break;
- tmp += decla[i];
- }
- if (!list.Contains(tmp))
- {
- throw new Exception("Veuillez entrer un type valide dans la structure\n");
- }
- if (decla[i] != ' ') throw new Exception("Un espace doit separer le type du nom de la variable");
- // On doit verifier le nom de la variable
- ++i;
- int pos = decla.IndexOf(';');
- for (;i<decla.Length ; i++)
- {
- if (i == pos) break;
- if (!char.IsLetter(decla[i]))
- {
- throw new Exception("Le nom de la variable doit etre en lettre A-Z");
- }
- }
- // Verifier si l instruction se termine par un ;
- if (pos==-1) throw new Exception("Une Instruction doit se terminer par un ;");
- }
- catch (Exception e)
- {
- Console.WriteLine("\nErreur : La declaration est manquante\n");
- Console.WriteLine("Autre Info : " + e.Message+"\n");
- Console.ReadLine();
- return;
- }
- Console.WriteLine(i + " " + decla.Length);
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment