MCPcopy Create free account
hub / github.com/LPC4/Full-Stack / parse_postfix

Method parse_postfix

crates/hll-to-ir/src/parser.rs:1017–1124  ·  view source on GitHub ↗
(&mut self, mut expr: Expression)

Source from the content-addressed store, hash-verified

1015 left: Box::new(expr),
1016 right: Box::new(right),
1017 };
1018 }
1019 Ok(expr)
1020 }
1021
1022 fn parse_bitwise_xor(&mut self) -> Result<Expression, ParserError> {
1023 let mut expr = self.parse_bitwise_and()?;
1024 while self.match_bitwise_xor() {
1025 self.consume_terminators();
1026 let right = self.parse_bitwise_and()?;
1027 expr = Expression::Binary {
1028 op: BinaryOp::BitwiseXor,
1029 left: Box::new(expr),
1030 right: Box::new(right),
1031 };
1032 }
1033 Ok(expr)
1034 }
1035
1036 fn parse_bitwise_and(&mut self) -> Result<Expression, ParserError> {
1037 let mut expr = self.parse_shift()?;
1038 while self.match_bitwise_and() {
1039 self.consume_terminators();
1040 let right = self.parse_shift()?;
1041 expr = Expression::Binary {
1042 op: BinaryOp::BitwiseAnd,
1043 left: Box::new(expr),
1044 right: Box::new(right),
1045 };
1046 }
1047 Ok(expr)
1048 }
1049
1050 fn parse_equality(&mut self) -> Result<Expression, ParserError> {
1051 let mut expr = self.parse_comparison()?;
1052 loop {
1053 self.consume_terminators();
1054 let op = if self.match_eq() {
1055 Some(BinaryOp::Eq)
1056 } else if self.match_neq() {
1057 Some(BinaryOp::Neq)
1058 } else {
1059 None
1060 };
1061
1062 let Some(op) = op else { break };
1063 self.consume_terminators();
1064 let right = self.parse_comparison()?;
1065 expr = Expression::Binary {
1066 op,
1067 left: Box::new(expr),
1068 right: Box::new(right),
1069 };
1070 }
1071 Ok(expr)
1072 }
1073
1074 fn parse_comparison(&mut self) -> Result<Expression, ParserError> {

Callers 2

parse_multiplicativeMethod · 0.80
parse_prefixMethod · 0.80

Calls 13

match_dotMethod · 0.80
expect_identMethod · 0.80
match_lbracketMethod · 0.80
parse_subscriptMethod · 0.80
expect_rbracketMethod · 0.80
parse_typeMethod · 0.80
match_lparenMethod · 0.80
expect_rparenMethod · 0.80
advanceMethod · 0.45

Tested by

no test coverage detected