mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-09 14:08:58 +01:00
ExpressionParser: Support unary plus operator.
This commit is contained in:
parent
2011c7a448
commit
5039072ae9
@ -830,6 +830,12 @@ private:
|
|||||||
// Interpret it as a unary minus function.
|
// Interpret it as a unary minus function.
|
||||||
return ParseFunctionArguments("minus", MakeFunctionExpression("minus"), tok);
|
return ParseFunctionArguments("minus", MakeFunctionExpression("minus"), tok);
|
||||||
}
|
}
|
||||||
|
case TOK_ADD:
|
||||||
|
{
|
||||||
|
// An atom was expected but we got an addition symbol.
|
||||||
|
// Interpret it as a unary plus.
|
||||||
|
return ParseFunctionArguments("plus", MakeFunctionExpression("plus"), tok);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
return ParseResult::MakeErrorResult(tok, _trans("Expected start of expression."));
|
return ParseResult::MakeErrorResult(tok, _trans("Expected start of expression."));
|
||||||
|
@ -375,6 +375,22 @@ private:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// usage: plus(expression)
|
||||||
|
class UnaryPlusExpression : public FunctionExpression
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
ArgumentValidation
|
||||||
|
ValidateArguments(const std::vector<std::unique_ptr<Expression>>& args) override
|
||||||
|
{
|
||||||
|
if (args.size() == 1)
|
||||||
|
return ArgumentsAreValid{};
|
||||||
|
else
|
||||||
|
return ExpectedArguments{"expression"};
|
||||||
|
}
|
||||||
|
|
||||||
|
ControlState GetValue() const override { return GetArg(0).GetValue(); }
|
||||||
|
};
|
||||||
|
|
||||||
// usage: deadzone(input, amount)
|
// usage: deadzone(input, amount)
|
||||||
class DeadzoneExpression : public FunctionExpression
|
class DeadzoneExpression : public FunctionExpression
|
||||||
{
|
{
|
||||||
@ -689,6 +705,8 @@ std::unique_ptr<FunctionExpression> MakeFunctionExpression(std::string_view name
|
|||||||
return std::make_unique<ToggleExpression>();
|
return std::make_unique<ToggleExpression>();
|
||||||
if (name == "minus")
|
if (name == "minus")
|
||||||
return std::make_unique<UnaryMinusExpression>();
|
return std::make_unique<UnaryMinusExpression>();
|
||||||
|
if (name == "plus")
|
||||||
|
return std::make_unique<UnaryPlusExpression>();
|
||||||
if (name == "deadzone")
|
if (name == "deadzone")
|
||||||
return std::make_unique<DeadzoneExpression>();
|
return std::make_unique<DeadzoneExpression>();
|
||||||
if (name == "smooth")
|
if (name == "smooth")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user