mirror of https://github.com/rm-dr/daisy
Comments
parent
97b64e6bef
commit
b913eb2cf0
|
@ -23,7 +23,7 @@ fn treeify_binary(
|
||||||
Token::Operator(l, _) => l,
|
Token::Operator(l, _) => l,
|
||||||
_ => panic!()
|
_ => panic!()
|
||||||
};
|
};
|
||||||
return Err((*l, ParserError::Syntax));
|
return Err((*l, ParserError::Syntax)); // left argument is empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ fn treeify_binary(
|
||||||
Token::Operator(l, _) => l,
|
Token::Operator(l, _) => l,
|
||||||
_ => panic!()
|
_ => panic!()
|
||||||
};
|
};
|
||||||
return Err((*l, ParserError::Syntax));
|
return Err((*l, ParserError::Syntax)); // Left argument is empty
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ fn treeify_binary(
|
||||||
Token::Operator(l, _) => l,
|
Token::Operator(l, _) => l,
|
||||||
_ => panic!()
|
_ => panic!()
|
||||||
};
|
};
|
||||||
return Err((*l, ParserError::Syntax));
|
return Err((*l, ParserError::Syntax)); // right argument is empty
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ fn treeify_binary(
|
||||||
|
|
||||||
if let Token::Operator(l, s) = left {
|
if let Token::Operator(l, s) = left {
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // Bad string
|
||||||
let o = o.unwrap();
|
let o = o.unwrap();
|
||||||
|
|
||||||
if {
|
if {
|
||||||
|
@ -66,17 +66,14 @@ fn treeify_binary(
|
||||||
} {
|
} {
|
||||||
return Ok(false);
|
return Ok(false);
|
||||||
} else {
|
} else {
|
||||||
let tl = *this.get_line_location();
|
let tl = *this.get_line_location() + *l;
|
||||||
return Err((
|
return Err((tl, ParserError::Syntax)); // left operator isn't valid
|
||||||
LineLocation{pos: l.pos, len: tl.pos - l.pos + tl.len},
|
|
||||||
ParserError::Syntax
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Token::Operator(l, s) = right {
|
if let Token::Operator(l, s) = right {
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // Bad string
|
||||||
let o = o.unwrap();
|
let o = o.unwrap();
|
||||||
|
|
||||||
if {
|
if {
|
||||||
|
@ -86,7 +83,7 @@ fn treeify_binary(
|
||||||
return Ok(false);
|
return Ok(false);
|
||||||
} else {
|
} else {
|
||||||
let tl = *this.get_line_location() + *l;
|
let tl = *this.get_line_location() + *l;
|
||||||
return Err((tl, ParserError::Syntax));
|
return Err((tl, ParserError::Syntax)); // right operator isn't valid (two operators next to each other)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +92,7 @@ fn treeify_binary(
|
||||||
let this_op = {
|
let this_op = {
|
||||||
let Token::Operator(l, s) = this else {panic!()};
|
let Token::Operator(l, s) = this else {panic!()};
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // bad operator string
|
||||||
o.unwrap()
|
o.unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -103,14 +100,14 @@ fn treeify_binary(
|
||||||
let left_op = if i > 1 {
|
let left_op = if i > 1 {
|
||||||
let Token::Operator(l, s) = &g_inner[i-2] else {panic!()};
|
let Token::Operator(l, s) = &g_inner[i-2] else {panic!()};
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // Bad operator string
|
||||||
Some(o.unwrap())
|
Some(o.unwrap())
|
||||||
} else { None };
|
} else { None };
|
||||||
|
|
||||||
let right_op = if i < g_inner.len()-2 {
|
let right_op = if i < g_inner.len()-2 {
|
||||||
let Token::Operator(l, s) = &g_inner[i+2] else {panic!()};
|
let Token::Operator(l, s) = &g_inner[i+2] else {panic!()};
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // Bad operator string
|
||||||
Some(o.unwrap())
|
Some(o.unwrap())
|
||||||
} else { None };
|
} else { None };
|
||||||
|
|
||||||
|
@ -175,7 +172,7 @@ fn treeify_unary(
|
||||||
Token::Operator(l, _) => l,
|
Token::Operator(l, _) => l,
|
||||||
_ => panic!()
|
_ => panic!()
|
||||||
};
|
};
|
||||||
return Err((*l, ParserError::Syntax));
|
return Err((*l, ParserError::Syntax)); // argument is missing
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
@ -187,7 +184,7 @@ fn treeify_unary(
|
||||||
Token::Operator(l, _) => l,
|
Token::Operator(l, _) => l,
|
||||||
_ => panic!()
|
_ => panic!()
|
||||||
};
|
};
|
||||||
return Err((*l, ParserError::Syntax));
|
return Err((*l, ParserError::Syntax)); // argument is missing
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -204,6 +201,7 @@ fn treeify_unary(
|
||||||
if prev.is_some() {
|
if prev.is_some() {
|
||||||
if let Token::Operator(_,_) = prev.unwrap() {
|
if let Token::Operator(_,_) = prev.unwrap() {
|
||||||
} else {
|
} else {
|
||||||
|
// Previous operator is invalid
|
||||||
return Err((
|
return Err((
|
||||||
*this.get_line_location(),
|
*this.get_line_location(),
|
||||||
ParserError::Syntax
|
ParserError::Syntax
|
||||||
|
@ -213,6 +211,7 @@ fn treeify_unary(
|
||||||
|
|
||||||
if let Token::Operator(l, _) = next {
|
if let Token::Operator(l, _) = next {
|
||||||
let tl = *this.get_line_location() + *l;
|
let tl = *this.get_line_location() + *l;
|
||||||
|
// Argument is invalid
|
||||||
return Err((tl, ParserError::Syntax));
|
return Err((tl, ParserError::Syntax));
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -220,7 +219,7 @@ fn treeify_unary(
|
||||||
let this_op = {
|
let this_op = {
|
||||||
let Token::Operator(l, s) = this else {panic!()};
|
let Token::Operator(l, s) = this else {panic!()};
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // Bad string
|
||||||
o.unwrap()
|
o.unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -229,14 +228,14 @@ fn treeify_unary(
|
||||||
if i > 1 {
|
if i > 1 {
|
||||||
let Token::Operator(l, s) = &g_inner[i-2] else {panic!()};
|
let Token::Operator(l, s) = &g_inner[i-2] else {panic!()};
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // Bad string
|
||||||
Some(o.unwrap())
|
Some(o.unwrap())
|
||||||
} else { None }
|
} else { None }
|
||||||
} else {
|
} else {
|
||||||
if i < g_inner.len()-2 {
|
if i < g_inner.len()-2 {
|
||||||
let Token::Operator(l, s) = &g_inner[i+2] else {panic!()};
|
let Token::Operator(l, s) = &g_inner[i+2] else {panic!()};
|
||||||
let o = Operator::from_string(s);
|
let o = Operator::from_string(s);
|
||||||
if o.is_none() { return Err((*l, ParserError::Syntax)); }
|
if o.is_none() { return Err((*l, ParserError::Syntax)); } // Bad string
|
||||||
Some(o.unwrap())
|
Some(o.unwrap())
|
||||||
} else { None }
|
} else { None }
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue