Commit Graph

30 Commits

Author SHA1 Message Date
Jordan Woyak
785eb14432 ExpressionParser: Clean up string lexing and support numeric literals without tick delimiter: e.g. 0.75 2019-10-11 17:14:45 -05:00
Jordan Woyak
fa75ab404f ExpressionParser: operator precedence. 2019-10-11 17:14:45 -05:00
Jordan Woyak
46c0ae7d1f ExpressionParser: Add !while loop unary expression. Limited to 10000 reps to prevent infinite loops. Rhs is re-evaluated until it is < 0.5. Added comma operator, which behaves like it does in c++. Added subration operator. 2019-10-11 17:14:45 -05:00
Jordan Woyak
2c89b60298 ExpressionParser: cleanup. 2019-10-11 17:14:45 -05:00
Jordan Woyak
58efc93ed4 ExpressionParser: Conditional operator. A binary op that evals the rhs if lhs > 0.5 else 0.0. 2019-10-11 17:14:45 -05:00
Jordan Woyak
718efce1dc ExpressionParser: Add less-than and greater-than operators. 2019-10-11 17:14:45 -05:00
Jordan Woyak
e896835f86 ExpressionParser: Renamed ControlFinder to ControlEnvironment. Added support for variables and assignment operator. ControlExpression objects now reference a matching input and output so the two can me mixed in any expression. (you can set rumble directly from inputs) 2019-10-11 17:14:32 -05:00
Jordan Woyak
1efcf861ea ExpressionParser: Add mod operator, sin function, and timer "constant" which can be used for auto-fire and oscillators. 2019-10-11 17:13:58 -05:00
Jordan Woyak
a8f3e9585f ExpressionParser: Expand ! symbol to allow for named unary functions. Added !toggle function which toggles on/off with each activation of its inner expression. 2019-10-11 17:13:58 -05:00
Jordan Woyak
bf63f85d73 ExpressionParser: Add multiplication and division operators. (division by zero evaluates as zero). Don't clamp result of addition operator. Clamping will be done later. 2019-10-11 17:13:58 -05:00
Jordan Woyak
f3192ca06d ExpressionParser: Add support for literals. 2019-10-11 17:13:58 -05:00
Lioncash
ec60027f56 InputCommon: Use nested namespace specifiers where applicable 2019-06-17 16:51:41 -04:00
Jordan Woyak
48b69ca018 ControllerInterface: Input detection improvements. 2019-03-03 18:36:16 -06:00
Jordan Woyak
d5df56c677 ControllerInterface: Make CoalesceExpression not set the inactive child's value (rumble) to 0. This caused rumble to not enable when a control expression was both a valid "bareword" and "complex" expression. 2018-12-22 11:17:05 -06:00
spycrab
40bb9974f2 Reformat all the things! 2018-04-12 21:28:39 +02:00
Michael M
294b1895ef ExpressionParser: std::move() tokens vector to parser 2017-09-14 12:53:36 -07:00
Michael M
31f1c06226 ControlReference: don't reparse expression when references are updated 2017-09-14 12:53:35 -07:00
Michael M
c332580b83 ControlReference/ExpressionParser: separate parsing from binding 2017-09-14 12:53:35 -07:00
Michael M
ba87a50338 ExpressionParser: add FallbackExpression node type 2017-09-14 12:53:35 -07:00
Michael M
7e74961eb1 ExpressionParser: expose ExpressionNode directly 2017-09-14 12:53:35 -07:00
Michael M
85301e2bae ParseStatus: replace NoDevice with EmptyExpression 2017-09-14 12:53:35 -07:00
Michael M
754efd75c5 ExpressionParser: remove DummyExpression 2017-09-14 12:53:35 -07:00
Michael M
f1ff1e3d08 ExpressionParser: clean up ControlExpression 2017-09-14 12:53:35 -07:00
Michael M
3df945f8d0 ExpressionParser: replace bare pointers with unique_ptrs 2017-09-14 12:53:35 -07:00
Michael M
bbb7c17235 ExpressionParser: use internal ParseResult struct instead of out-params 2017-09-14 12:53:35 -07:00