MCPcopy Create free account
hub / github.com/PerroEngine/Perro / parse_primary

Method parse_primary

perro_source/core/perro_particle_math/src/lib.rs:474–549  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

472 "life" => self.ops.push(Op::Life),
473 "lifetime" => self.ops.push(Op::Lifetime),
474 "age_left" => self.ops.push(Op::AgeLeft),
475 "age01" => self.ops.push(Op::Age01),
476 "spawn_time" => self.ops.push(Op::SpawnTime),
477 "emitter_time" => self.ops.push(Op::EmitterTime),
478 "speed" => self.ops.push(Op::Speed),
479 "id" => self.ops.push(Op::Id),
480 "dir_x" => self.ops.push(Op::DirX),
481 "dir_y" => self.ops.push(Op::DirY),
482 "dir_z" => self.ops.push(Op::DirZ),
483 "vel_x" => self.ops.push(Op::VelX),
484 "vel_y" => self.ops.push(Op::VelY),
485 "vel_z" => self.ops.push(Op::VelZ),
486 "rand" => self.ops.push(Op::Rand),
487 "rand2" => self.ops.push(Op::Rand2),
488 "rand3" => self.ops.push(Op::Rand3),
489 "seed" => self.ops.push(Op::Seed),
490 "ring_u" => self.ops.push(Op::RingU),
491 "index01" => self.ops.push(Op::Index01),
492 "emitter_x" => self.ops.push(Op::EmitterX),
493 "emitter_y" => self.ops.push(Op::EmitterY),
494 "emitter_z" => self.ops.push(Op::EmitterZ),
495 "prev_x" => self.ops.push(Op::PrevX),
496 "prev_y" => self.ops.push(Op::PrevY),
497 "prev_z" => self.ops.push(Op::PrevZ),
498 "pi" => self.ops.push(Op::Const(std::f32::consts::PI)),
499 "tau" => self.ops.push(Op::Const(std::f32::consts::TAU)),
500 _ => return Err(CompileError::UnknownIdentifier),
501 }
502 Ok(())
503 }
504
505 fn parse_args(&mut self) -> Result<usize, CompileError> {
506 let mut argc = 0usize;
507 self.skip_ws();
508 if self.eat(b')') {
509 return Ok(argc);
510 }
511 loop {
512 self.parse_expr()?;
513 argc += 1;
514 self.skip_ws();
515 if self.eat(b',') {
516 continue;
517 }
518 self.expect(b')')?;
519 break;
520 }
521 Ok(argc)
522 }
523
524 fn parse_ident(&mut self) -> Option<String> {
525 self.skip_ws();
526 let start = self.i;
527 while self.i < self.s.len()
528 && (self.s[self.i].is_ascii_alphanumeric() || self.s[self.i] == b'_')
529 {
530 self.i += 1;
531 }

Callers 1

parse_unaryMethod · 0.80

Calls 9

eatMethod · 0.80
parse_exprMethod · 0.80
parse_numberMethod · 0.80
parse_identMethod · 0.80
parse_argsMethod · 0.80
skip_wsMethod · 0.45
expectMethod · 0.45
pushMethod · 0.45
as_strMethod · 0.45

Tested by

no test coverage detected