From c87949bc4b3af01a3d13596d5aecffb696018f45 Mon Sep 17 00:00:00 2001 From: deadvey Date: Mon, 6 Apr 2026 03:21:28 +0100 Subject: [PATCH] Added some basic parsing ability, need to add the network calls --- .~lock.report.odt# | 1 + Cargo.lock | 7 +++ report.odt | Bin 12034 -> 12875 bytes src/.parsing.rs.swp | Bin 0 -> 12288 bytes src/character.rs | 14 ++++++ src/etiquette.txt | 4 ++ src/main.rs | 18 +++++++- src/parsing.rs | 85 ++++++++++++++++++++++++++++++++++++ src/parsing/.strings.rs.swp | Bin 0 -> 12288 bytes src/parsing/strings.rs | 25 +++++++++++ stories/story.ha | 2 + 11 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 .~lock.report.odt# create mode 100644 Cargo.lock create mode 100644 src/.parsing.rs.swp create mode 100644 src/character.rs create mode 100644 src/etiquette.txt create mode 100644 src/parsing.rs create mode 100644 src/parsing/.strings.rs.swp create mode 100644 src/parsing/strings.rs create mode 100644 stories/story.ha diff --git a/.~lock.report.odt# b/.~lock.report.odt# new file mode 100644 index 0000000..64ba272 --- /dev/null +++ b/.~lock.report.odt# @@ -0,0 +1 @@ +,deadvey,linux-pc,05.04.2026 21:48,file:///home/deadvey/.config/libreoffice/4; \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..9096bc9 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "happening-server" +version = "0.1.0" diff --git a/report.odt b/report.odt index b8a2537d2873013233424278f822b988eee1a522..18ffc8234f4f934279e9e3bb5b4e8c6e843cac6d 100644 GIT binary patch delta 11257 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 diff --git a/src/.parsing.rs.swp b/src/.parsing.rs.swp new file mode 100644 index 0000000000000000000000000000000000000000..9a669e01459201d543d3546885e832cea9e2b400 GIT binary patch literal 12288 zcmYc?2=nw+u+%eRU|?VnU|^^fznuB2Glb!LI|D;XYGO)RY9&YpFV4x#E3MEiNXDy( zfq|h8YM_2{eoCr-QE73Benw(JL26!RUb=p9QL=tPVo`BsUbIK|Jvu$P~KVGln8!#sWlh6;WL zh7^7V27i7A20?xXh7WuU4Da|D7%uZMFzn)EVA#UPz_5{zfnh2i14APp1A{*w1A{Uj z1A{Cd1H&y|28PAF3=9Rl3=EmP3=A^73=DU97#ObcFfjD5&A@Pi zn}J~=Hv_{gZU%-a+zbpw+zbr9+zbrv+zbrH+zbr5+zbq|+zbrj+zbr&xfmF3b1^X7 z;9_97#>K#Jm5YI4H5UVeA{PS#6Bh#m0~Z6sT}}pu>zoV>S2!6ME^;z3Z02NOSkKA8 zFq@Nsp_r3_A(xYZL6wt%fuECsfq|2O;U@3NyOsVNGH#R`cK zL!i!rdXAHm6RQV9^AeMCQWZ+_LB32;C@v|=%u9zm5$-vV_995Q_-AV%0#H{09FUrz zKm@7bLp{A%aMW;eLXA)=POL0ef}5@gk+>5MM`F|LUCecW?s5Naei)UNk(Q~x{g9|zCwCYViGte zN>VFI6cY1N6bcfHixn~<=0L23xEbs;y^{R+oc!|CqU6NlR1HnN#9~l*Xn%tX>n#%s)8*fW~>>i z88j4vQj1G-N^HO~I%?|0C5a`O$)L!#Q_y5c%R_iM9<)F+RRbKUP?K~Nz|JeSQcw#^ zO}0@hE-A9pLDG?zn44;)5DZQ@Na7&%AcuJ*7H9Y-7Fb!?U?{P&a)zaUJ52>$I|hAy zg#gF`QH1#lMX5Q7C8;UMslJ$j0h*OT*%@oPCL!a3Jqs@i;Q0lS+%+_z2^SPIoSdLs z2ug8i(W+o;tDuycm!bqtO#1o?zL~|zsW~~Rd8zrO#i-5)Wfic~;kI#tiksA;qWmIo zI)GY^5QLT)oc`GwnR&@Ysky0nC190s9#jRyjht{#K~fUDph1pcZ9^ReXy!qRxOh;6 z>L{pzA`h;u7?kWdIYA{8D2qT$&jk4j>K0J(n6HqS1}e+I`3e@Z>L5k%@~RjdI7o$r zOFl~WQYgTm-CMFF7YaFI7WR zCoi=;9xeql1)PUaWE5316%vb5;aRmLAIa|^9au^^NVw9LHBl2irMQV*;LT23k0Dj0xDJ5WiY059@1G%?CMPSlib1xe~emQxIz5GSLQ zh71LzNeXFskl=>qFi>F@1gA+HCVK`B*n@K8n2o8dBs*% JQ2$sn008}@4@dw2 literal 0 HcmV?d00001 diff --git a/src/character.rs b/src/character.rs new file mode 100644 index 0000000..50c2517 --- /dev/null +++ b/src/character.rs @@ -0,0 +1,14 @@ +pub struct Character +{ + name: String, +} +impl Character +{ + pub fn new(new_name: String) -> Character + { + Character + { + name: new_name, + } + } +} diff --git a/src/etiquette.txt b/src/etiquette.txt new file mode 100644 index 0000000..ed2782e --- /dev/null +++ b/src/etiquette.txt @@ -0,0 +1,4 @@ +Indentation style: Allman +Indentation characters: Tabs +Maximum indents: 8 +Maximum lines per file: 200 diff --git a/src/main.rs b/src/main.rs index e7a11a9..b8527b9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,19 @@ +use std::fs; +use std::collections::HashMap; + +mod parsing; +mod character; + fn main() { - println!("Hello, world!"); + let mut characters = HashMap::::new(); + let file_contents: String = fs::read_to_string("stories/story.ha").unwrap(); + // Split the file contents into tokens + let tokens: Vec<&str> = file_contents + .split_whitespace() + .collect(); + // Run the parsing process + match parsing::token_parse(&tokens, &mut characters) { + Ok(()) => println!("Program exited successfully"), + Err(error) => println!("{}", error), + } } diff --git a/src/parsing.rs b/src/parsing.rs new file mode 100644 index 0000000..b10af6d --- /dev/null +++ b/src/parsing.rs @@ -0,0 +1,85 @@ +use std::collections::HashMap; +use crate::character; + +mod strings; + +// Parse the tokens in a file +// Returns success or an error string +pub fn token_parse( + tokens: &Vec<&str>, + mut characters: &mut HashMap:: +) -> ( Result<(),&'static str> ) +{ + let mut index: usize = 0; + // Run an infinite loop + loop + { + match tokens.get(index) { + Some(token) => { + // The instructions are related to characters + if token.chars().next().unwrap() == '@' + { + let character_name: String = token.chars().skip(1).collect(); + // If the character doesn't exist, then create it + if ! characters.contains_key(&character_name) + { + let new_character = character::Character::new(character_name.clone()); + characters.insert(character_name.clone(),new_character); + } + println!("Doing something with a character: {}", character_name); + // The index is incremented to after the character's instructions + index += match character_parse(index+1, &tokens, character_name, &mut characters) + { + Ok(increment) => increment, + Err(error) => return Err(error), + } + } + // Miscelleneous instructions + if token.to_lowercase() == "end" + { + return Ok(()); + } + index += 1; + }, + None => return Err("File reached termination point") + } + } +} + +// Parsing character related instructions +fn character_parse(index: usize, tokens: &Vec<&str>, character_name: String, characters: &mut HashMap::) -> +( Result ) +{ + let mut sum_index: usize = index; + loop + { + + match tokens.get(sum_index) + { + Some(token) => { + match token.to_lowercase().as_str() + { + // The character is saying something, so grab the text and pass it + // to the client + "says" => + { + match strings::extract_quoted(&tokens[sum_index+1..]) + { + Some(output_string) => + { + println!("{}", output_string); + return Ok(sum_index - index); + }, + None => return Err("Unable to read string"), + } + }, + // Catch all condition, if the instruction is unrecognised as a + // character command + &_ => return Err("Invalid command"), + } + }, + None => return Err("File reached termination point") + } + sum_index += 1; + } +} diff --git a/src/parsing/.strings.rs.swp b/src/parsing/.strings.rs.swp new file mode 100644 index 0000000000000000000000000000000000000000..e5337a835e29e8fd884d403a6bc5c6428b7d6ec0 GIT binary patch literal 12288 zcmYc?2=nw+u+%eRU|?VnU|^UhaXIsBUKm4F9|J>5YGO)RY9&YpFV4x#E3MEiNXDy( zfq|h8YM_2{eoCr-QE73Benw(JL26!RUb=p9QL=tPVo@=eT~d^pmtL$_R7}XoQTfpj z7!3iULx7jT*vQZTq+D4^Q9)QJ6vQ0GqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0wW{@ zN(vYm>KPaqn4tcZgwl*?G?Y6^jfTKz2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-R~z!4ODHVPKfX%fKMS2buqe_5Y9YGcYXSXJDAf&%n^f&%jX5&%ofx&%ofy&%mI? z&%p4FkAdMd9|OZaJ_d%3d<+cB_!t;^_!t-}`4|{7`4||y`4|}7`4|`+_!t;$_!t-z z`4|{v`4||a_!t;O_#pNP@-Z;{=Vf5{#KXYwfro+N9S;M;8y*IRS3C?1FL{PwV2(O@ zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU~q&$Z7l-~Dkvx@_~qxNGBAKxwO|s$g0L~= zaEU7@Kx9C=K^VbSHMv9s$_ELQ=9Oq@D(EU0X)n*UU7D2 zfrcSe97$15YKa1}0agmZV0SCnq6mWw!J`z(zghX2c^XOzN)QJlNni zmzP>m5}%ZqoUNg$SDIH|lvtplsbFiXpsu9Oz{y!ql$lqOlc%VmR9&m21JVexqnd#; zEx!nCjzVT0m@a1E1i3Z0v_t`6zk;noSZcDBRbFa2C@>33lN8eO6jCcniV~Ac;tNaj nOHxxbK!z4uDX2xO6_*snYAWd3DfkzZWaj7DKtjb%p_%~zCo%tU literal 0 HcmV?d00001 diff --git a/src/parsing/strings.rs b/src/parsing/strings.rs new file mode 100644 index 0000000..c18c84e --- /dev/null +++ b/src/parsing/strings.rs @@ -0,0 +1,25 @@ +pub fn extract_quoted(parts: &[&str]) -> Option { + let mut vec_string = Vec::new(); + for part in parts + { + println!("{}",part); + if part.chars().next_back().unwrap() == '"' + { + vec_string.push(*part); + let final_string: String = vec_string.join(" "); + let final_string: String = final_string + .chars() + .skip(1) + .take( + final_string.chars() + .count() - 2) + .collect(); + return Some(final_string); + } + else + { + vec_string.push(*part); + } + } + None +} diff --git a/stories/story.ha b/stories/story.ha new file mode 100644 index 0000000..dce32b6 --- /dev/null +++ b/stories/story.ha @@ -0,0 +1,2 @@ +@tim says "this text is outputted" +END