unary minus

This commit is contained in:
Dmitry Vasilev
2022-12-07 05:52:13 +08:00
parent 7e2f2d82b9
commit 3d4bcbf66e
3 changed files with 8 additions and 5 deletions

View File

@@ -902,6 +902,8 @@ const do_eval_frame_expr = (node, scope, callsleft) => {
value = !expr.result.value
} else if(node.operator == 'typeof') {
value = typeof(expr.result.value)
} else if(node.operator == '-') {
value = - expr.result.value
} else {
throw new Error('unknown op')
}

View File

@@ -101,7 +101,7 @@ const tokenize_js = (str) => {
.join('|')},
{name: 'keyword' , re: reserved.map(r => '\\b' + r + '\\b').join('|')},
// TODO all possible notatins for js numbers
{name: 'number' , re: '-?\\d*\\.?\\d+'},
{name: 'number' , re: '\\d*\\.?\\d+'},
{name: 'identifier' , re: '[A-Za-z_$][A-Za-z0-9_$]*'},
{name: 'punctuation' ,
@@ -1012,13 +1012,13 @@ const primary = if_fail(
)
// operator precedence https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
// TODO unary minus
// TODO instanceof
const expr =
[
grouping,
function_call_or_member_access,
unary('!'),
unary('-'),
unary('typeof'),
binary(['**']),
binary(['*','/','%']),