mirror of
https://github.com/jashkenas/coffeescript.git
synced 2022-11-09 12:23:24 -05:00
42 lines
1.4 KiB
JSON
42 lines
1.4 KiB
JSON
{
|
|
"comment": "Parses end executes mathematical expressions.",
|
|
|
|
"lex": {
|
|
"rules": [
|
|
["\\s+", "/* skip whitespace */"],
|
|
["[0-9]+(?:\\.[0-9]+)?\\b", "return 'NUMBER';"],
|
|
["\\*", "return '*';"],
|
|
["\\/", "return '/';"],
|
|
["-", "return '-';"],
|
|
["\\+", "return '+';"],
|
|
["\\^", "return '^';"],
|
|
["\\(", "return '(';"],
|
|
["\\)", "return ')';"],
|
|
["PI\\b", "return 'PI';"],
|
|
["E\\b", "return 'E';"],
|
|
["$", "return 'EOF';"]
|
|
]
|
|
},
|
|
|
|
"operators": [
|
|
["left", "+", "-"],
|
|
["left", "*", "/"],
|
|
["left", "^"],
|
|
["left", "UMINUS"]
|
|
],
|
|
|
|
"bnf": {
|
|
"S" :[[ "e EOF", "print($1); return $1;" ]],
|
|
|
|
"e" :[[ "e + e", "$$ = $1+$3;" ],
|
|
[ "e - e", "$$ = $1-$3;" ],
|
|
[ "e * e", "$$ = $1*$3;" ],
|
|
[ "e / e", "$$ = $1/$3;" ],
|
|
[ "e ^ e", "$$ = Math.pow($1, $3);" ],
|
|
[ "- e", "$$ = -$2;", {"prec": "UMINUS"} ],
|
|
[ "( e )", "$$ = $2;" ],
|
|
[ "NUMBER", "$$ = Number(yytext);" ],
|
|
[ "E", "$$ = Math.E;" ],
|
|
[ "PI", "$$ = Math.PI;" ]]
|
|
}
|
|
}
|