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:
parent
2f6d4ea4e1
commit
a09c5024e7
1 changed files with 34 additions and 3 deletions
|
@ -3,7 +3,7 @@
|
||||||
// s'utilise par l'appel de la fonction static parse, qui prends en param une ligne de commande
|
// 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.
|
// (Vect<String>) et qui renvois une Entree.
|
||||||
|
|
||||||
struct Structure {
|
pub struct Structure {
|
||||||
/*
|
/*
|
||||||
* Il y à 5 types de structs differentes.
|
* Il y à 5 types de structs differentes.
|
||||||
* - commande
|
* - commande
|
||||||
|
@ -76,13 +76,21 @@ impl Structure {
|
||||||
contents: cont,
|
contents: cont,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn get_name(&self) -> &String {
|
pub fn get_name(&self) -> &String {
|
||||||
&self.name
|
&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.
|
* Correspond à une entrée. C'est ce que renvois le parser.
|
||||||
*/
|
*/
|
||||||
|
@ -154,3 +162,26 @@ pub fn parse(command_line: &String) -> Vec<String> {
|
||||||
|
|
||||||
argv
|
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
|
||||||
|
}
|
||||||
|
|
Reference in a new issue