Add ternary operator

master
Vitaliy Filippov 2019-12-22 02:29:47 +03:00
parent 56ef120056
commit 7643be39f0
3 changed files with 1748 additions and 1512 deletions

View File

@ -7,8 +7,8 @@
*
* Homepage: http://yourcmc.ru/wiki/VMX::Template
* License: GNU GPLv3 or later
* Author: Vitaliy Filippov, 2006-2018
* Version: V3 (LALR), 2018-08-03
* Author: Vitaliy Filippov, 2006-2019
* Version: V3 (LALR), 2019-12-28
*
* The template engine is split into two parts:
* (1) This file - always used when running templates

File diff suppressed because it is too large Load Diff

View File

@ -50,6 +50,8 @@
%token ">" "greater than operator '>'"
%token "<=" "less or equal operator '<='"
%token ">=" "greater or equal operator '>='"
%token "?" "ternary operator '? :'"
%token ":" "ternary operator '? :'"
%token "+" "plus operator '+'"
%token "-" "minus operator '-'"
%token "*" "multiply operator '*'"
@ -73,7 +75,7 @@
%left ".."
%left "||" "OR" "XOR"
%left "&&" "AND"
%nonassoc "==" "!=" "<" ">" "<=" ">="
%nonassoc "==" "!=" "<" ">" "<=" ">=" "?"
%left "+" "-"
%left "&"
%left "*" "/" "%"
@ -196,6 +198,9 @@ exp: exp/a ".." exp/b {
| exp/a "AND" exp/b {
$$ = [ '(' . $a[0] . ' && ' . $b[0] . ')', true ];
}
| exp/a "?" exp/b ":" exp/c {
$$ = [ '(' . $a[0] . ' ? ' . $b[0] . ' : ' . $c[0] . ')', $b[1] && $c[1] ];
}
| exp/a "==" exp/b {
$$ = [ '(' . $a[0] . ' == ' . $b[0] . ')', true ];
}