Module: Fdlint::Parser::JS::Expr::Expr
- Included in:
- JsParser
- Defined in:
- lib/fdlint/parser/js/expr/expr.rb
Constant Summary
Constants included from Primary
Primary::RESERVED_WORDS, Primary::R_HEX, Primary::R_IDENTIFY, Primary::R_NUMBERIC, Primary::R_REGEXP, Primary::R_STRING, Primary::R_THIS_NULL_BOOLEAN
Instance Method Summary collapse
- #parse_expr_assignment ⇒ Object
- #parse_expr_condition ⇒ Object
- #parse_expr_with_operate(left, pattern = nil, &block) ⇒ Object
- #parse_expression ⇒ Object
Methods included from Operate
#expr_operate_not_in=, #expr_operate_not_in?, #parse_expr_add, #parse_expr_bit_and, #parse_expr_bit_or, #parse_expr_bit_xor, #parse_expr_equal, #parse_expr_logical_and, #parse_expr_logical_or, #parse_expr_mul, #parse_expr_postfix, #parse_expr_relation, #parse_expr_shift, #parse_expr_unary
Methods included from LeftHand
#parse_expr_lefthand, #parse_expr_member, #parse_expr_new
Methods included from Primary
#parse_expr_array, #parse_expr_identifier, #parse_expr_literal_hex, #parse_expr_literal_number, #parse_expr_literal_regexp, #parse_expr_literal_string, #parse_expr_literal_this_null_boolean, #parse_expr_object, #parse_expr_object_item, #parse_expr_parentheses, #parse_expr_primary
Instance Method Details
#parse_expr_assignment ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/fdlint/parser/js/expr/expr.rb', line 22 def parse_expr_assignment log 'parse expr assignment' expr = parse_expr_condition r = /=|\*=|\/=|%=|\+=|-=|<<=|>>=|>>>=|&=|\^=|\|=/ if expr.left_hand? && check(r) op = scan r expr = create_element Expression, op.text, expr, parse_expr_assignment end expr end |
#parse_expr_condition ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/fdlint/parser/js/expr/expr.rb', line 35 def parse_expr_condition log 'parse expr condition' expr = parse_expr_logical_or if check /\?/ skip /\?/ left = parse_expr_assignment skip /:/ right = parse_expr_assignment expr = create_element ConditionExpression, expr, left, right end expr end |
#parse_expr_with_operate(left, pattern = nil, &block) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fdlint/parser/js/expr/expr.rb', line 49 def parse_expr_with_operate(left, pattern = nil, &block) block = block || lambda { if check pattern skip_empty before_pos = scanner_pos op = scan pattern [op.text, self.send(left), before_pos] end } expr = self.send left while (ret = block.call) expr = create_element Expression, ret[0], expr, ret[1], ret[2] end expr end |
#parse_expression ⇒ Object
17 18 19 20 |
# File 'lib/fdlint/parser/js/expr/expr.rb', line 17 def parse_expression log 'parse expression' parse_expr_with_operate :parse_expr_assignment, /,/ end |