From a09c5024e75a7a838c2c689a52e29402b3a52bf5 Mon Sep 17 00:00:00 2001 From: primardj Date: Sat, 13 Jan 2024 20:52:07 +0000 Subject: [PATCH] debut reflexion nouveau parseur + ajout Structure::add_to_contents Entree::add_structure et mise public des methodes Structure::get_name et Structure::get_contents --- src/parser.rs | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index acf00e0..dd244ea 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -3,7 +3,7 @@ // s'utilise par l'appel de la fonction static parse, qui prends en param une ligne de commande // (Vect) et qui renvois une Entree. -struct Structure { +pub struct Structure { /* * Il y à 5 types de structs differentes. * - commande @@ -76,13 +76,21 @@ impl Structure { contents: cont, } } - fn get_name(&self) -> &String { + pub fn get_name(&self) -> &String { &self.name } + pub fn get_contents(&self) -> &Vec { + &self.contents + } + + fn add_to_contents(&mut self, word: &String) -> &Self { + let _ = &self.contents.push(word.to_string()); + self + } } -struct Entree { +pub struct Entree { /* * Correspond à une entrée. C'est ce que renvois le parser. */ @@ -154,3 +162,26 @@ pub fn parse(command_line: &String) -> Vec { argv } + +pub fn parse2(command_line: &String) -> Entree { + // prends en paramettre un ligne de commande, et retourne une Entree. + let mut jaaj: Entree = Entree::new(); + // Je vais fortement m'inspirer de ce qu'as fait hippolyte dans sa version de parser. + // Tout dabord, je vais couper ma chaine en caractères. + // puis, je vais appeler une fonction recursive qui vas faire comme ceci: + // + // parser_initial(entree: &mut Entree, Restant_à_parser: &mut Vec, stack_last_quote: &mut Vec, last_word: &mut String, struct_in_construct: &mut Structure) + // { si Restant_à_parser.pop() == ';' et stack_last_quote.len() == 0 et + // struct_in_construct == None et last_word == None => Rien faire + // { si Restant_à_parser.pop() == ';' et stack_last_quote.len() == 0 et + // struct_in_construct == None et last_word != None => + // struct_in_construct = genrer_struct_from_word(word); + // entree.add_structure(struct_in_construct); struct_in_construct = None + // { si Restant_à_parser.pop() == ';' et stack_last_quote.len() == 0 et + // parser_initial = { si Restant_à_parser.pop() == ';' et stack_last_quote.lec() == 0 et + // struct_in_construct != None => + // entree.add_structure(struct_in_construct); struct_in_construct = None + // { + // + jaaj +}