litex/parse/by_stmt/
fn_tuple_by_stmt.rs1use crate::prelude::*;
2
3impl Runtime {
4 pub fn parse_by_fn_stmt(&mut self, tb: &mut TokenBlock) -> Result<Stmt, RuntimeError> {
5 tb.skip_token(FN_LOWER_CASE)?;
6 if tb.current_token_is_equal_to(SET) {
7 tb.skip_token(SET)?;
8 tb.skip_token(COLON)?;
9 return self.parse_by_fn_set_stmt(tb);
10 }
11 tb.skip_token(COLON)?;
12 let function = self.parse_obj(tb)?;
13 Ok(ByFnStmt::new(function, tb.line_file.clone()).into())
14 }
15
16 pub fn parse_by_fn_set_stmt(&mut self, tb: &mut TokenBlock) -> Result<Stmt, RuntimeError> {
17 let func = self.parse_obj(tb)?;
18 tb.skip_token(FACT_PREFIX)?;
19 tb.skip_token(IN)?;
20 tb.skip_token(FN_LOWER_CASE)?;
21 let fn_set = self.parse_fn_set(tb)?;
22 Ok(ByFnSetStmt::new(func, fn_set, tb.line_file.clone()).into())
23 }
24
25 pub fn parse_by_tuple_stmt(&mut self, tb: &mut TokenBlock) -> Result<Stmt, RuntimeError> {
27 tb.skip_token(TUPLE)?;
28 tb.skip_token(COLON)?;
29 let obj = self.parse_obj(tb)?;
30 Ok(ByTupleStmt::new(obj, tb.line_file.clone()).into())
31 }
32}