MCPcopy Create free account
hub / github.com/bumptop/BumpTop / matchExpression

Function matchExpression

trunk/win/Source/LUpdateString/cpp.cpp:563–590  ·  view source on GitHub ↗

* match any expression that can return a number, which can be * 1. Literal number (e.g. '11') * 2. simple identifier (e.g. 'm_count') * 3. simple function call (e.g. 'size()' ) * 4. function call on an object (e.g. 'list.size()') * 5. function call on an object (e.g. 'list->size()') * * Other cases: * size(2,4) * list().size() * list(a,b).size(2,4) * etc... */

Source from the content-addressed store, hash-verified

561 * etc...
562 */
563static bool matchExpression()
564{
565 if (match(Tok_Integer))
566 return true;
567
568 int parenlevel = 0;
569 while (match(Tok_Ident) || parenlevel > 0) {
570 if (yyTok == Tok_RightParen) {
571 if (parenlevel == 0) break;
572 --parenlevel;
573 yyTok = getToken();
574 } else if (yyTok == Tok_LeftParen) {
575 yyTok = getToken();
576 if (yyTok == Tok_RightParen) {
577 yyTok = getToken();
578 } else {
579 ++parenlevel;
580 }
581 } else if (yyTok == Tok_Ident) {
582 continue;
583 } else if (yyTok == Tok_Arrow) {
584 yyTok = getToken();
585 } else if (parenlevel == 0) {
586 return false;
587 }
588 }
589 return true;
590}
591
592static QStringList resolveNamespaces(
593 const QStringList &namespaces, const QHash<QString, QStringList> &namespaceAliases)

Callers 1

parseFunction · 0.85

Calls 2

getTokenFunction · 0.85
matchFunction · 0.70

Tested by

no test coverage detected