nl_tokens: 11 . 4 Unary Operators
pl_tokens: function parseUnaryExpression ( ) { var marker , token , expr ; if ( lookahead . <mask> !== Token . Punctuator && lookahead . type !== Token . Keyword ) { return parsePostfixExpression ( ) ; } if ( match ( '++' ) || match ( '--' ) ) { marker = markerCreate ( ) ; token = lex ( ) ; expr = parseUnaryExpression ( ) ; // 11.4.4, 11.4.5 if ( strict && expr . type === Syntax . Identifier && isRestrictedWord ( expr . name ) ) { throwErrorTolerant ( { } , Messages . StrictLHSPrefix ) ; } if ( ! isLeftHandSide ( expr ) ) { throwError ( { } , Messages . InvalidLHSInAssignment ) ; } return markerApply ( marker , delegate . createUnaryExpression ( token . value , expr ) ) ; } if ( match ( '+' ) || match ( '-' ) || match ( '~' ) || match ( '!' ) ) { marker = markerCreate ( ) ; token = lex ( ) ; expr = parseUnaryExpression ( ) ; return markerApply ( marker , delegate . createUnaryExpression ( token . value , expr ) ) ; } if ( matchKeyword ( 'delete' ) || matchKeyword ( 'void' ) || matchKeyword ( 'typeof' ) ) { marker = markerCreate ( ) ; token = lex ( ) ; expr = parseUnaryExpression ( ) ; expr = markerApply ( marker , delegate . createUnaryExpression ( token . value , expr ) ) ; if ( strict && expr . operator === 'delete' && expr . argument . type === Syntax . Identifier ) { throwErrorTolerant ( { } , Messages . StrictDelete ) ; } return expr ; } return parsePostfixExpression ( ) ; }