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
|
||||
// (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
|
||||
}
|
||||
|
|
Reference in a new issue