aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jed/plurals.jison
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/jed/plurals.jison
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
downloadwallet-core-de98e0b232509d5f40c135d540a70e415272ff85.tar.xz
node_modules
Diffstat (limited to 'node_modules/jed/plurals.jison')
-rw-r--r--node_modules/jed/plurals.jison72
1 files changed, 72 insertions, 0 deletions
diff --git a/node_modules/jed/plurals.jison b/node_modules/jed/plurals.jison
new file mode 100644
index 000000000..9364f994e
--- /dev/null
+++ b/node_modules/jed/plurals.jison
@@ -0,0 +1,72 @@
+/* description: Parses end executes mathematical expressions. */
+
+/* lexical grammar */
+%lex
+%%
+
+\s+ /* skip whitespace */
+[0-9]+("."[0-9]+)?\b return 'NUMBER'
+"n" return 'n'
+"||" return '||'
+"&&" return '&&'
+"?" return '?'
+":" return ':'
+"<=" return '<='
+">=" return '>='
+"<" return '<'
+">" return '>'
+"!=" return '!='
+"==" return '=='
+"%" return '%'
+"(" return '('
+")" return ')'
+<<EOF>> return 'EOF'
+. return 'INVALID'
+
+/lex
+
+/* operator associations and precedence */
+
+%right <code> '?' ':'
+%left '||'
+%left '&&'
+%left '<=' '>=' '<' '>' '!=' '=='
+%left '%'
+
+%start expressions
+
+%% /* language grammar */
+
+expressions
+ : e EOF
+ { return { type : 'GROUP', expr: $1 }; }
+ ;
+
+e
+ : e '?' e ':' e
+ {$$ = { type: 'TERNARY', expr: $1, truthy : $3, falsey: $5 }; }
+ | e '||' e
+ {$$ = { type: "OR", left: $1, right: $3 };}
+ | e '&&' e
+ {$$ = { type: "AND", left: $1, right: $3 };}
+ | e '<' e
+ {$$ = { type: 'LT', left: $1, right: $3 }; }
+ | e '<=' e
+ {$$ = { type: 'LTE', left: $1, right: $3 };}
+ | e '>' e
+ {$$ = { type: 'GT', left: $1, right: $3 };}
+ | e '>=' e
+ {$$ = { type: 'GTE', left: $1, right: $3 };}
+ | e '!=' e
+ {$$ = { type: 'NEQ', left: $1, right: $3 };}
+ | e '==' e
+ {$$ = { type: 'EQ', left: $1, right: $3 };}
+ | e '%' e
+ {$$ = { type: 'MOD', left: $1, right: $3 };}
+ | '(' e ')'
+ {$$ = { type: 'GROUP', expr: $2 }; }
+ | 'n'
+ {$$ = { type: 'VAR' }; }
+ | NUMBER
+ {$$ = { type: 'NUM', val: Number(yytext) }; }
+ ;