Преглед изворни кода

zkas/parser: Check if parenthesis pairs are correct in statements.

parazyd пре 4 година
родитељ
комит
f87c5c7baa
1 измењених фајлова са 15 додато и 2 уклоњено
  1. 15 2
      zkas/src/parser.rs

+ 15 - 2
zkas/src/parser.rs

@@ -431,8 +431,21 @@ impl Parser {
         let mut stmts = vec![];
 
         for statement in statements {
-            // TODO: If there are parentheses, verify that there are both
-            //       openings and closings.
+            let (mut left_paren, mut right_paren) = (0, 0);
+            for i in &statement {
+                match i.token.as_str() {
+                    "(" => left_paren += 1,
+                    ")" => right_paren += 1,
+                    _ => {}
+                }
+            }
+            if left_paren != right_paren {
+                self.error(
+                    "Incorrect number of left and right parenthesis for statement.".to_string(),
+                    statement[0].line,
+                    statement[0].column,
+                );
+            }
 
             // C = poseidon_hash(pub_x, pub_y, value, token, serial, coin_blind)
             // | |         |                     |