debut reflexion nouveau parseur + ajout Structure::add_to_contents Entree::add_structure et mise public des methodes Structure::get_name et Structure::get_contents

This commit is contained in:
primardj 2024-01-13 20:52:07 +00:00
parent 2f6d4ea4e1
commit a09c5024e7

View file

@ -3,7 +3,7 @@
// s'utilise par l'appel de la fonction static parse, qui prends en param une ligne de commande
// (Vect<String>) 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<String> {
&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<String> {
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<char>, stack_last_quote: &mut Vec<char>, 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
}