fixed bugs with multiple nested loops/words

This commit is contained in:
Goren Barak 2024-01-02 11:49:59 -05:00
parent 703f395998
commit 1fe196b405
2 changed files with 52 additions and 193 deletions

View file

@ -15,7 +15,6 @@ struct Dictionary {
words: HashMap<String, String>
}
// fn paren_matching(source: &str, left: impl Fn(&str) -> bool, right: impl Fn(&str) -> bool) {}
impl<'a> Vm {
pub fn new() -> Self {
@ -39,6 +38,36 @@ impl<'a> Vm {
}
}
}
macro_rules! paren_matching {
($start:expr, $end:expr) => {{
let start = $start;
let end = $end;
let mut depth = 1;
let mut content = String::new();
let item = {
loop {
if let Some(item) = parser.inner_next() {
content.push_str(item);
content.push_str(" ");
if start(item) {
depth += 1;
}
if end(item) {
depth -= 1;
}
if depth == 0 {
break Some(item);
}
} else {
break None;
}
}
};
(item, content)
}}
}
while let Some(item) = parser.next() {
match item {
@ -96,6 +125,16 @@ impl<'a> Vm {
let rem = stack_second.wrapping_rem(stack_top);
self.stack.push(rem);
},
"*/" => {
let n3 = unwrap!();
let n2 = unwrap!();
let n1 = unwrap!();
let d = n1 * n2;
let n4 = d/n3;
self.stack.push(n4);
},
"TRACE"|"trace" => {
match parser.inner_next() {
Some("stack") => {
@ -170,13 +209,7 @@ impl<'a> Vm {
},
"IF"|"if" => {
let expr = unwrap!();
let mut content = String::new();
let mut next = parser.inner_next_back();
while !matches!(next, Some("THEN")|Some("then")|None) {
content.push_str(next.unwrap());
content.push_str(" ");
next = parser.inner_next_back();
}
let (_, content) = paren_matching!(|x| matches!(x, "IF"|"if"), |x| matches!(x, "THEN"|"then"));
if expr == 0 {
// Do nothing.
@ -187,7 +220,7 @@ impl<'a> Vm {
"THEN"|"then" => {}
"(" => {
let mut next = parser.inner_next_back();
let mut next = parser.inner_next();
while next != Some(")") && next != None {
next = parser.inner_next_back();
}
@ -198,14 +231,7 @@ impl<'a> Vm {
"DO"|"do" => {
let start = unwrap!();
let limit = unwrap!();
let mut action = String::new();
let mut next = parser.inner_next_back();
while !matches!(next, Some("LOOP")|Some("loop")|None) {
action.push_str(next.unwrap());
action.push_str(" ");
next = parser.inner_next_back();
}
let (_, action) = paren_matching!(|x| matches!(x, "DO"|"do"), |x| matches!(x, "LOOP"|"loop"));
for i in start..limit {
self.dictionary.words.insert("I".to_string(), i.to_string());
@ -222,14 +248,7 @@ impl<'a> Vm {
},
"LOOP"|"loop" => {},
"BEGIN"|"begin" => {
let mut action = String::new();
let mut next = parser.inner_next_back();
while !matches!(next, Some("UNTIL")|Some("until")|Some("WHILE")|Some("while")|None) {
action.push_str(next.unwrap());
action.push_str(" ");
next = parser.inner_next_back();
}
let (next, action) = paren_matching!(|x| matches!(x, "BEGIN"|"begin"), |x| matches!(x, "UNTIL"|"until"|"WHILE"|"while"));
match next {
Some("UNTIL")|Some("until") => {
@ -241,7 +260,7 @@ impl<'a> Vm {
},
Some("WHILE")|Some("while") => {
let mut condition = String::new();
let mut next = parser.inner_next_back();
let mut next = parser.inner_next();
while !matches!(next, Some("REPEAT")|Some("repeat")|None) {
condition.push_str(next.unwrap());
condition.push_str(" ");
@ -265,14 +284,8 @@ impl<'a> Vm {
"WHILE"|"while" => {},
"REPEAT"|"repeat" => {},
":" => {
let mut word_content = String::new();
let Some(Word(word_name)) = parser.next() else { println!("ERROR: Word name not given."); std::process::exit(1); };
let mut next = parser.inner_next_back();
while next != Some(";") && next != None {
word_content.push_str(next.unwrap());
word_content.push_str(" ");
next = parser.inner_next_back();
}
let (_, word_content) = paren_matching!(|x| matches!(x, ":"), |x| matches!(x, ";"));
self.dictionary.words.insert(word_name.to_string(), word_content);
},
@ -285,11 +298,12 @@ impl<'a> Vm {
},
word => {
let words = self.dictionary.words.clone();
let Some(word_content) = words.get(word) else {
println!("word {:?} does not exist", word);
std::process::exit(1);
};
self.vmrun(&mut Parser::new(word_content));
if let Some(word_content) = words.get(word) {
self.vmrun(&mut Parser::new(word_content));
} else {
println!("WARNING: word {:?} does not exist, will clear stack.", word);
self.stack = Vec::new();
}
}
}
}

155
tags
View file

@ -1,155 +0,0 @@
!_TAG_EXTRA_DESCRIPTION anonymous /Include tags for non-named objects like lambda/
!_TAG_EXTRA_DESCRIPTION fileScope /Include tags of file scope/
!_TAG_EXTRA_DESCRIPTION pseudo /Include pseudo tags/
!_TAG_EXTRA_DESCRIPTION subparser /Include tags generated by subparsers/
!_TAG_FIELD_DESCRIPTION epoch /the last modified time of the input file (only for F\/file kind tag)/
!_TAG_FIELD_DESCRIPTION file /File-restricted scoping/
!_TAG_FIELD_DESCRIPTION input /input file/
!_TAG_FIELD_DESCRIPTION name /tag name/
!_TAG_FIELD_DESCRIPTION pattern /pattern/
!_TAG_FIELD_DESCRIPTION typeref /Type and name of a variable or typedef/
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_KIND_DESCRIPTION!D M,module /modules/
!_TAG_KIND_DESCRIPTION!D T,template /templates/
!_TAG_KIND_DESCRIPTION!D V,version /version statements/
!_TAG_KIND_DESCRIPTION!D X,mixin /mixins/
!_TAG_KIND_DESCRIPTION!D a,alias /aliases/
!_TAG_KIND_DESCRIPTION!D c,class /classes/
!_TAG_KIND_DESCRIPTION!D e,enumerator /enumerators (values inside an enumeration)/
!_TAG_KIND_DESCRIPTION!D f,function /function definitions/
!_TAG_KIND_DESCRIPTION!D g,enum /enumeration names/
!_TAG_KIND_DESCRIPTION!D i,interface /interfaces/
!_TAG_KIND_DESCRIPTION!D m,member /class, struct, and union members/
!_TAG_KIND_DESCRIPTION!D n,namespace /namespaces/
!_TAG_KIND_DESCRIPTION!D s,struct /structure names/
!_TAG_KIND_DESCRIPTION!D u,union /union names/
!_TAG_KIND_DESCRIPTION!D v,variable /variable definitions/
!_TAG_KIND_DESCRIPTION!JSON a,array /arrays/
!_TAG_KIND_DESCRIPTION!JSON b,boolean /booleans/
!_TAG_KIND_DESCRIPTION!JSON n,number /numbers/
!_TAG_KIND_DESCRIPTION!JSON o,object /objects/
!_TAG_KIND_DESCRIPTION!JSON s,string /strings/
!_TAG_KIND_DESCRIPTION!JSON z,null /nulls/
!_TAG_KIND_DESCRIPTION!Rust C,constant /A constant/
!_TAG_KIND_DESCRIPTION!Rust M,macro /Macro Definition/
!_TAG_KIND_DESCRIPTION!Rust P,method /A method/
!_TAG_KIND_DESCRIPTION!Rust c,implementation /implementation/
!_TAG_KIND_DESCRIPTION!Rust e,enumerator /An enum variant/
!_TAG_KIND_DESCRIPTION!Rust f,function /Function/
!_TAG_KIND_DESCRIPTION!Rust g,enum /Enum/
!_TAG_KIND_DESCRIPTION!Rust i,interface /trait interface/
!_TAG_KIND_DESCRIPTION!Rust m,field /A struct field/
!_TAG_KIND_DESCRIPTION!Rust n,module /module/
!_TAG_KIND_DESCRIPTION!Rust s,struct /structural type/
!_TAG_KIND_DESCRIPTION!Rust t,typedef /Type Alias/
!_TAG_KIND_DESCRIPTION!Rust v,variable /Global variable/
!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/
!_TAG_OUTPUT_FILESEP slash /slash or backslash/
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
!_TAG_OUTPUT_VERSION 0.0 /current.age/
!_TAG_PARSER_VERSION!D 0.0 /current.age/
!_TAG_PARSER_VERSION!JSON 0.0 /current.age/
!_TAG_PARSER_VERSION!Rust 0.0 /current.age/
!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/
!_TAG_PROC_CWD /home/goren/Code/fourth/ //
!_TAG_PROGRAM_AUTHOR Universal Ctags Team //
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL https://ctags.io/ /official site/
!_TAG_PROGRAM_VERSION 6.0.0 /p6.0.20221218.0/
0 target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" o array:local
0 target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" o array:local
0 target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" o array:local
0 target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" o array:local
15729799797837862367 target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" o object:outputs
4614504638168534921 target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" o object:outputs
CheckDepInfo target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" o object:local.0
CheckDepInfo target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" o object:local.0
CheckDepInfo target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" o object:local.0
CheckDepInfo target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" o object:local.0
Dictionary src/backend.rs /^struct Dictionary {$/;" s
Item src/parse.rs /^ type Item = TokenType<'a>;$/;" t implementation:Parser
Number src/parse.rs /^ Number(u64),$/;" e enum:TokenType
Parser src/parse.rs /^impl<'a> Iterator for Parser<'a> {$/;" c
Parser src/parse.rs /^impl<'a> Parser<'a> {$/;" c
Parser src/parse.rs /^pub struct Parser<'a> {$/;" s
TokenType src/parse.rs /^pub enum TokenType<'a> {$/;" g
Vm src/backend.rs /^impl<'a> Vm {$/;" c
Vm src/backend.rs /^pub struct Vm {$/;" s
Word src/parse.rs /^ Word(&'a str),$/;" e enum:TokenType
backend src/main.rs /^pub mod backend;$/;" n
code target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" n object:outputs.15729799797837862367
code target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" n object:outputs.4614504638168534921
compile_kind target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" n
compile_kind target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" n
compile_kind target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" n
compile_kind target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" n
config target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" n
config target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" n
config target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" n
config target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" n
data src/backend.rs /^ data: HashMap<u64, u64>,$/;" m struct:Dictionary
dep_info target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" s object:local.0.CheckDepInfo
dep_info target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" s object:local.0.CheckDepInfo
dep_info target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" s object:local.0.CheckDepInfo
dep_info target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" s object:local.0.CheckDepInfo
deps target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" a
deps target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" a
deps target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" a
deps target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" a
dictionary src/backend.rs /^ dictionary: Dictionary$/;" m struct:Vm
dp src/backend.rs /^ dp: u64,$/;" m struct:Dictionary
features target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" s
features target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" s
features target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" s
features target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" s
inner_next src/parse.rs /^ pub fn inner_next(&mut self) -> Option<&'a str> {$/;" P implementation:Parser
local target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" a
local target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" a
local target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" a
local target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" a
main src/main.rs /^fn main() -> std::io::Result<()> {$/;" f
metadata target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" n
metadata target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" n
metadata target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" n
metadata target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" n
new src/backend.rs /^ pub fn new() -> Self {$/;" P implementation:Vm
new src/parse.rs /^ pub fn new(source: &'a str) -> Parser {$/;" P implementation:Parser
next src/parse.rs /^ fn next(&mut self) -> Option<TokenType<'a>> {$/;" P implementation:Parser
outputs target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" o
parse src/main.rs /^pub mod parse;$/;" n
path target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" n
path target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" n
path target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" n
path target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" n
profile target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" n
profile target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" n
profile target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" n
profile target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" n
rustc target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" n
rustc target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" n
rustc target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" n
rustc target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" n
rustc_fingerprint target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" n
rustflags target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" a
rustflags target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" a
rustflags target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" a
rustflags target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" a
split_whitespace src/parse.rs /^ pub(crate) split_whitespace: SplitWhitespace<'a>$/;" m struct:Parser
stack src/backend.rs /^ stack: Vec<u64>,$/;" m struct:Vm
status target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" s object:outputs.15729799797837862367
status target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" s object:outputs.4614504638168534921
stderr target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" s object:outputs.15729799797837862367
stderr target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" s object:outputs.4614504638168534921
stdout target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" s object:outputs.15729799797837862367
stdout target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" s object:outputs.4614504638168534921
success target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" b object:outputs.15729799797837862367
success target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" b object:outputs.4614504638168534921
successes target/.rustc_info.json /^{"rustc_fingerprint":15313746258697816560,"outputs":{"4614504638168534921":{"success":true,"stat/;" o
target target/debug/.fingerprint/fourth-0eb22537b83d0b36/test-bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":183265222628/;" n
target target/debug/.fingerprint/fourth-c58712c3665fe72a/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":110397424744/;" n
target target/debug/.fingerprint/fourth-d5bfd771d6ea8237/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":131263742483/;" n
target target/release/.fingerprint/fourth-96ade2603d15be13/bin-fourth.json /^{"rustc":3462548589188548201,"features":"[]","target":6449572106981162502,"profile":356732962844/;" n
unwrap src/backend.rs /^ macro_rules! unwrap {$/;" M method:Vm::vmrun
vmrun src/backend.rs /^ pub fn vmrun(&mut self, parser: &mut Parser) {$/;" P implementation:Vm
words src/backend.rs /^ words: HashMap<String, String>$/;" m struct:Dictionary