MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/OpenShadingLanguage / parseModifier

Method parseModifier

src/liboslexec/lpeparse.cpp:395–423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

393
394
395LPexp *
396Parser::parseModifier(LPexp *e)
397{
398 if (hasInput()) {
399 if (head() == '*') {
400 next();
401 return new lpexp::Repeat(e);
402 } else if (head() == '{') {
403 std::pair<int, int> range = parseRange();
404 if (error()) return NULL;
405 if (range.second < 0) {
406 lpexp::Cat *cat = new lpexp::Cat();
407 cat->append(new lpexp::NRepeat(e, range.first, range.first));
408 cat->append(new lpexp::Repeat(e->clone()));
409 return cat;
410 } else
411 return new lpexp::NRepeat(e, range.first, range.second);
412 } else if (head() == '+') {
413 next();
414 lpexp::Cat *cat = new lpexp::Cat();
415 cat->append(e);
416 cat->append(new lpexp::Repeat(e->clone()));
417 return cat;
418 } else
419 return e;
420 }
421 else
422 return e;
423}
424
425
426

Callers

nothing calls this directly

Calls 3

errorFunction · 0.70
appendMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected