Created page with "<code>2 * (1 + min(10, x))</code> (x=2) evaluates to {{#invoke:ColinTheCat/Expression|Eval | 2 * (1 + min(10, x)) | {"x": 2} }}" |
|||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
<code>2 * (1 + min(10, x))</code> (x=2) evaluates to {{#invoke:ColinTheCat/Expression|Eval | == EBNF Grammar == | ||
''[https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form What's EBNF?]'' | |||
For a graphical representation, take a look at [https://rr.red-dove.com/ui this website]. | |||
<pre> | |||
Expr ::= Add | |||
Add ::= Mod (PlusMinus Add)? | |||
Mod ::= Mul ('%' Mul)? | |||
Mul ::= Pow (MulDiv Mul)? | |||
Pow ::= Minus ('^' Minus)? | |||
Minus ::= '-'? Call | |||
Call ::= Var | Name ('(' Args ')')? | |||
Var ::= Name | Num | Str | '(' Expr ')' | |||
Args ::= Expr (',' Expr)? | |||
PlusMinus ::= [+-] /* ws: explicit */ | |||
MulDiv ::= [*/] /* ws: explicit */ | |||
Num ::= ('0' | [1-9]+) ('.' [0-9]+)? /* ws: explicit */ | |||
Str ::= '"' [^"]* '"' /* ws: explicit */ | |||
Name ::= [a-z] [a-z0-9_]* /* ws: explicit */ | |||
</pre> | |||
== Example == | |||
<pre> | |||
{{#invoke:ColinTheCat/Expression|Eval | |||
| 2 * (1 + min(10, x)) | |||
| {"x": 2} | |||
}} | |||
</pre> | |||
<code>2 * (1 + min(10, x))</code> (x=2) evaluates to | |||
{{#invoke:ColinTheCat/Expression|Eval | |||
| 2 * (1 + min(10, x)) | | 2 * (1 + min(10, x)) | ||
| {"x": 2} | | {"x": 2} | ||
}} | }} | ||
Latest revision as of 20:05, 12 February 2024
EBNF Grammar
For a graphical representation, take a look at this website.
Expr ::= Add
Add ::= Mod (PlusMinus Add)?
Mod ::= Mul ('%' Mul)?
Mul ::= Pow (MulDiv Mul)?
Pow ::= Minus ('^' Minus)?
Minus ::= '-'? Call
Call ::= Var | Name ('(' Args ')')?
Var ::= Name | Num | Str | '(' Expr ')'
Args ::= Expr (',' Expr)?
PlusMinus ::= [+-] /* ws: explicit */
MulDiv ::= [*/] /* ws: explicit */
Num ::= ('0' | [1-9]+) ('.' [0-9]+)? /* ws: explicit */
Str ::= '"' [^"]* '"' /* ws: explicit */
Name ::= [a-z] [a-z0-9_]* /* ws: explicit */
Example
{{#invoke:ColinTheCat/Expression|Eval
| 2 * (1 + min(10, x))
| {"x": 2}
}}
2 * (1 + min(10, x)) (x=2) evaluates to
6