mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
ExpressionParser: Support bare words for simple control names
Using backticks for all control names can get a bit grating, so support "A & B" instead of requiring "`A` & `B`".
This commit is contained in:
@ -108,7 +108,7 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Token GetControlQualifier()
|
Token GetFullyQualifiedControl()
|
||||||
{
|
{
|
||||||
ControlQualifier qualifier;
|
ControlQualifier qualifier;
|
||||||
std::string value;
|
std::string value;
|
||||||
@ -126,6 +126,24 @@ public:
|
|||||||
return Token(TOK_CONTROL, qualifier);
|
return Token(TOK_CONTROL, qualifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Token GetBarewordsControl(char c)
|
||||||
|
{
|
||||||
|
std::string name;
|
||||||
|
name += c;
|
||||||
|
|
||||||
|
while (it != expr.end()) {
|
||||||
|
c = *it;
|
||||||
|
if (!isalpha(c))
|
||||||
|
break;
|
||||||
|
name += c;
|
||||||
|
it++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ControlQualifier qualifier;
|
||||||
|
qualifier.control_name = name;
|
||||||
|
return Token(TOK_CONTROL, qualifier);
|
||||||
|
}
|
||||||
|
|
||||||
Token NextToken()
|
Token NextToken()
|
||||||
{
|
{
|
||||||
if (it == expr.end())
|
if (it == expr.end())
|
||||||
@ -152,9 +170,12 @@ public:
|
|||||||
case '+':
|
case '+':
|
||||||
return Token(TOK_ADD);
|
return Token(TOK_ADD);
|
||||||
case '`':
|
case '`':
|
||||||
return GetControlQualifier();
|
return GetFullyQualifiedControl();
|
||||||
default:
|
default:
|
||||||
return Token(TOK_INVALID);
|
if (isalpha(c))
|
||||||
|
return GetBarewordsControl(c);
|
||||||
|
else
|
||||||
|
return Token(TOK_INVALID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user