{"version":3,"sources":["parser.js"],"names":[],"mappings":"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","file":"angular2/src/change_detection/parser/parser.es6","sourcesContent":["import {Injectable} from 'angular2/di';\nimport {int, isBlank, isPresent,  BaseException, StringWrapper, RegExpWrapper} from 'angular2/src/facade/lang';\nimport {ListWrapper, List} from 'angular2/src/facade/collection';\nimport {Lexer, EOF, Token, $PERIOD, $COLON, $SEMICOLON, $LBRACKET, $RBRACKET,\n  $COMMA, $LBRACE, $RBRACE, $LPAREN, $RPAREN} from './lexer';\nimport {reflector, Reflector} from 'angular2/src/reflection/reflection';\nimport {\n  AST,\n  EmptyExpr,\n  ImplicitReceiver,\n  AccessMember,\n  LiteralPrimitive,\n  Expression,\n  Binary,\n  PrefixNot,\n  Conditional,\n  Pipe,\n  Assignment,\n  Chain,\n  KeyedAccess,\n  LiteralArray,\n  LiteralMap,\n  Interpolation,\n  MethodCall,\n  FunctionCall,\n  TemplateBindings,\n  TemplateBinding,\n  ASTWithSource\n  } from './ast';\n\nvar _implicitReceiver = new ImplicitReceiver();\n// TODO(tbosch): Cannot make this const/final right now because of the transpiler...\nvar INTERPOLATION_REGEXP = RegExpWrapper.create('\\\\{\\\\{(.*?)\\\\}\\\\}');\nvar QUOTE_REGEXP = RegExpWrapper.create(\"'\");\n\n@Injectable()\nexport class Parser {\n  _lexer:Lexer;\n  _reflector:Reflector;\n  constructor(lexer:Lexer, providedReflector:Reflector = null){\n    this._lexer = lexer;\n    this._reflector = isPresent(providedReflector) ? providedReflector : reflector;\n  }\n\n  parseAction(input:string, location:any):ASTWithSource {\n    var tokens = this._lexer.tokenize(input);\n    var ast = new _ParseAST(input, location, tokens, this._reflector, true).parseChain();\n    return new ASTWithSource(ast, input, location);\n  }\n\n  parseBinding(input:string, location:any):ASTWithSource {\n    var tokens = this._lexer.tokenize(input);\n    var ast = new _ParseAST(input, location, tokens, this._reflector, false).parseChain();\n    return new ASTWithSource(ast, input, location);\n  }\n\n  addPipes(bindingAst:ASTWithSource, pipes:List<String>):ASTWithSource {\n    if (ListWrapper.isEmpty(pipes)) return bindingAst;\n\n    var res = ListWrapper.reduce(pipes,\n      (result, currentPipeName) => new Pipe(result, currentPipeName, [], false),\n      bindingAst.ast);\n    return new ASTWithSource(res, bindingAst.source, bindingAst.location);\n  }\n\n  parseTemplateBindings(input:string, location:any):List<TemplateBinding> {\n    var tokens = this._lexer.tokenize(input);\n    return new _ParseAST(input, location, tokens, this._reflector, false).parseTemplateBindings();\n  }\n\n  parseInterpolation(input:string, location:any):ASTWithSource {\n    var parts = StringWrapper.split(input, INTERPOLATION_REGEXP);\n    if (parts.length <= 1) {\n      return null;\n    }\n    var strings = [];\n    var expressions = [];\n\n    for (var i=0; i<parts.length; i++) {\n      var part = parts[i];\n      if (i%2 === 0) {\n        // fixed string\n        ListWrapper.push(strings, part);\n      } else {\n        var tokens = this._lexer.tokenize(part);\n        var ast = new _ParseAST(input, location, tokens, this._reflector, false).parseChain();\n        ListWrapper.push(expressions, ast);\n      }\n    }\n    return new ASTWithSource(new Interpolation(strings, expressions), input, location);\n  }\n\n  wrapLiteralPrimitive(input:string, location:any):ASTWithSource {\n    return new ASTWithSource(new LiteralPrimitive(input), input, location);\n  }\n\n}\n\nclass _ParseAST {\n  input:string;\n  location:any;\n  tokens:List<Token>;\n  reflector:Reflector;\n  parseAction:boolean;\n  index:int;\n  constructor(input:string, location:any, tokens:List, reflector:Reflector, parseAction:boolean) {\n    this.input = input;\n    this.location = location;\n    this.tokens = tokens;\n    this.index = 0;\n    this.reflector = reflector;\n    this.parseAction = parseAction;\n  }\n\n  peek(offset:int):Token {\n    var i = this.index + offset;\n    return i < this.tokens.length ? this.tokens[i] : EOF;\n  }\n\n  get next():Token {\n    return this.peek(0);\n  }\n\n  get inputIndex():int {\n    return (this.index < this.tokens.length) ? this.next.index : this.input.length;\n  }\n\n  advance() {\n    this.index ++;\n  }\n\n  optionalCharacter(code:int):boolean {\n    if (this.next.isCharacter(code)) {\n      this.advance();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  optionalKeywordVar():boolean {\n    if (this.peekKeywordVar()) {\n      this.advance();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  peekKeywordVar():boolean {\n    return this.next.isKeywordVar() || this.next.isOperator('#');\n  }\n\n  expectCharacter(code:int) {\n    if (this.optionalCharacter(code)) return;\n    this.error(`Missing expected ${StringWrapper.fromCharCode(code)}`);\n  }\n\n\n  optionalOperator(op:string):boolean {\n    if (this.next.isOperator(op)) {\n      this.advance();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  expectOperator(operator:string) {\n    if (this.optionalOperator(operator)) return;\n    this.error(`Missing expected operator ${operator}`);\n  }\n\n  expectIdentifierOrKeyword():string {\n    var n = this.next;\n    if (!n.isIdentifier() && !n.isKeyword()) {\n      this.error(`Unexpected token ${n}, expected identifier or keyword`)\n    }\n    this.advance();\n    return n.toString();\n  }\n\n  expectIdentifierOrKeywordOrString():string {\n    var n = this.next;\n    if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\n      this.error(`Unexpected token ${n}, expected identifier, keyword, or string`)\n    }\n    this.advance();\n    return n.toString();\n  }\n\n  parseChain():AST {\n    var exprs = [];\n    while (this.index < this.tokens.length) {\n      var expr = this.parsePipe();\n      ListWrapper.push(exprs, expr);\n\n      if (this.optionalCharacter($SEMICOLON)) {\n        if (! this.parseAction) {\n          this.error(\"Binding expression cannot contain chained expression\");\n        }\n        while (this.optionalCharacter($SEMICOLON)){} //read all semicolons\n      } else if (this.index < this.tokens.length) {\n        this.error(`Unexpected token '${this.next}'`);\n      }\n    }\n    if (exprs.length == 0) return new EmptyExpr();\n    if (exprs.length == 1) return exprs[0];\n    return new Chain(exprs);\n  }\n\n  parsePipe() {\n    var result = this.parseExpression();\n    if (this.optionalOperator(\"|\")) {\n      return this.parseInlinedPipe(result);\n    } else {\n      return result;\n    }\n  }\n\n  parseExpression() {\n    var start = this.inputIndex;\n    var result = this.parseConditional();\n\n    while (this.next.isOperator('=')) {\n      if (!result.isAssignable) {\n        var end = this.inputIndex;\n        var expression = this.input.substring(start, end);\n        this.error(`Expression ${expression} is not assignable`);\n      }\n\n      if (!this.parseAction) {\n        this.error(\"Binding expression cannot contain assignments\");\n      }\n\n      this.expectOperator('=');\n      result = new Assignment(result, this.parseConditional());\n    }\n\n    return result;\n  }\n\n  parseConditional() {\n    var start = this.inputIndex;\n    var result = this.parseLogicalOr();\n\n    if (this.optionalOperator('?')) {\n      var yes = this.parseExpression();\n      if (!this.optionalCharacter($COLON)) {\n        var end = this.inputIndex;\n        var expression = this.input.substring(start, end);\n        this.error(`Conditional expression ${expression} requires all 3 expressions`);\n      }\n      var no = this.parseExpression();\n      return new Conditional(result, yes, no);\n    } else {\n      return result;\n    }\n  }\n\n  parseLogicalOr() {\n    // '||'\n    var result = this.parseLogicalAnd();\n    while (this.optionalOperator('||')) {\n      result = new Binary('||', result, this.parseLogicalAnd());\n    }\n    return result;\n  }\n\n  parseLogicalAnd() {\n    // '&&'\n    var result = this.parseEquality();\n    while (this.optionalOperator('&&')) {\n      result = new Binary('&&', result, this.parseEquality());\n    }\n    return result;\n  }\n\n  parseEquality() {\n    // '==','!='\n    var result = this.parseRelational();\n    while (true) {\n      if (this.optionalOperator('==')) {\n        result = new Binary('==', result, this.parseRelational());\n      } else if (this.optionalOperator('!=')) {\n        result = new Binary('!=', result, this.parseRelational());\n      } else {\n        return result;\n      }\n    }\n  }\n\n  parseRelational() {\n    // '<', '>', '<=', '>='\n    var result = this.parseAdditive();\n    while (true) {\n      if (this.optionalOperator('<')) {\n        result = new Binary('<', result, this.parseAdditive());\n      } else if (this.optionalOperator('>')) {\n        result = new Binary('>', result, this.parseAdditive());\n      } else if (this.optionalOperator('<=')) {\n        result = new Binary('<=', result, this.parseAdditive());\n      } else if (this.optionalOperator('>=')) {\n        result = new Binary('>=', result, this.parseAdditive());\n      } else {\n        return result;\n      }\n    }\n  }\n\n  parseAdditive() {\n    // '+', '-'\n    var result = this.parseMultiplicative();\n    while (true) {\n      if (this.optionalOperator('+')) {\n        result = new Binary('+', result, this.parseMultiplicative());\n      } else if (this.optionalOperator('-')) {\n        result = new Binary('-', result, this.parseMultiplicative());\n      } else {\n        return result;\n      }\n    }\n  }\n\n  parseMultiplicative() {\n    // '*', '%', '/'\n    var result = this.parsePrefix();\n    while (true) {\n      if (this.optionalOperator('*')) {\n        result = new Binary('*', result, this.parsePrefix());\n      } else if (this.optionalOperator('%')) {\n        result = new Binary('%', result, this.parsePrefix());\n      } else if (this.optionalOperator('/')) {\n        result = new Binary('/', result, this.parsePrefix());\n      } else {\n        return result;\n      }\n    }\n  }\n\n  parsePrefix() {\n    if (this.optionalOperator('+')) {\n      return this.parsePrefix();\n    } else if (this.optionalOperator('-')) {\n      return new Binary('-', new LiteralPrimitive(0), this.parsePrefix());\n    } else if (this.optionalOperator('!')) {\n      return new PrefixNot(this.parsePrefix());\n    } else {\n      return this.parseCallChain();\n    }\n  }\n\n  parseCallChain():AST {\n    var result = this.parsePrimary();\n    while (true) {\n      if (this.optionalCharacter($PERIOD)) {\n        result = this.parseAccessMemberOrMethodCall(result);\n\n      } else if (this.optionalCharacter($LBRACKET)) {\n        var key = this.parseExpression();\n        this.expectCharacter($RBRACKET);\n        result = new KeyedAccess(result, key);\n\n      } else if (this.optionalCharacter($LPAREN)) {\n        var args = this.parseCallArguments();\n        this.expectCharacter($RPAREN);\n        result = new FunctionCall(result, args);\n\n      } else {\n        return result;\n      }\n    }\n  }\n\n  parsePrimary() {\n    if (this.optionalCharacter($LPAREN)) {\n      var result = this.parsePipe();\n      this.expectCharacter($RPAREN);\n      return result;\n\n    } else if (this.next.isKeywordNull() || this.next.isKeywordUndefined()) {\n      this.advance();\n      return new LiteralPrimitive(null);\n\n    } else if (this.next.isKeywordTrue()) {\n      this.advance();\n      return new LiteralPrimitive(true);\n\n    } else if (this.next.isKeywordFalse()) {\n      this.advance();\n      return new LiteralPrimitive(false);\n\n    } else if (this.optionalCharacter($LBRACKET)) {\n      var elements = this.parseExpressionList($RBRACKET);\n      this.expectCharacter($RBRACKET);\n      return new LiteralArray(elements);\n\n    } else if (this.next.isCharacter($LBRACE)) {\n      return this.parseLiteralMap();\n\n    } else if (this.next.isIdentifier()) {\n      return this.parseAccessMemberOrMethodCall(_implicitReceiver);\n\n    } else if (this.next.isNumber()) {\n      var value = this.next.toNumber();\n      this.advance();\n      return new LiteralPrimitive(value);\n\n    } else if (this.next.isString()) {\n      var value = this.next.toString();\n      this.advance();\n      return new LiteralPrimitive(value);\n\n    } else if (this.index >= this.tokens.length) {\n      this.error(`Unexpected end of expression: ${this.input}`);\n\n    } else {\n      this.error(`Unexpected token ${this.next}`);\n    }\n  }\n\n  parseExpressionList(terminator:int):List {\n    var result = [];\n    if (!this.next.isCharacter(terminator)) {\n      do {\n        ListWrapper.push(result, this.parseExpression());\n      } while (this.optionalCharacter($COMMA));\n    }\n    return result;\n  }\n\n  parseLiteralMap() {\n    var keys = [];\n    var values = [];\n    this.expectCharacter($LBRACE);\n    if (!this.optionalCharacter($RBRACE)) {\n      do {\n        var key = this.expectIdentifierOrKeywordOrString();\n        ListWrapper.push(keys, key);\n        this.expectCharacter($COLON);\n        ListWrapper.push(values, this.parseExpression());\n      } while (this.optionalCharacter($COMMA));\n      this.expectCharacter($RBRACE);\n    }\n    return new LiteralMap(keys, values);\n  }\n\n  parseAccessMemberOrMethodCall(receiver):AST {\n    var id = this.expectIdentifierOrKeyword();\n\n    if (this.optionalCharacter($LPAREN)) {\n      var args = this.parseCallArguments();\n      this.expectCharacter($RPAREN);\n      var fn = this.reflector.method(id);\n      return new MethodCall(receiver, id, fn, args);\n\n    } else {\n      var getter = this.reflector.getter(id);\n      var setter = this.reflector.setter(id);\n      var am = new AccessMember(receiver, id, getter, setter);\n\n      if (this.optionalOperator(\"|\")) {\n        return this.parseInlinedPipe(am);\n      } else {\n        return am;\n      }\n    }\n  }\n\n  parseInlinedPipe(result) {\n    do  {\n      if (this.parseAction) {\n        this.error(\"Cannot have a pipe in an action expression\");\n      }\n      var name = this.expectIdentifierOrKeyword();\n      var args = ListWrapper.create();\n      while (this.optionalCharacter($COLON)) {\n        ListWrapper.push(args, this.parseExpression());\n      }\n      result = new Pipe(result, name, args, true);\n    } while(this.optionalOperator(\"|\"));\n\n    return result;\n  }\n\n  parseCallArguments() {\n    if (this.next.isCharacter($RPAREN)) return [];\n    var positionals = [];\n    do {\n      ListWrapper.push(positionals, this.parseExpression());\n    } while (this.optionalCharacter($COMMA))\n    return positionals;\n  }\n\n  /**\n   * An identifier, a keyword, a string with an optional `-` inbetween.\n   */\n  expectTemplateBindingKey() {\n    var result = '';\n    var operatorFound = false;\n    do {\n      result += this.expectIdentifierOrKeywordOrString();\n      operatorFound = this.optionalOperator('-');\n      if (operatorFound) {\n        result += '-';\n      }\n    } while (operatorFound);\n\n    return result.toString();\n  }\n\n  parseTemplateBindings() {\n    var bindings = [];\n    while (this.index < this.tokens.length) {\n      var keyIsVar:boolean = this.optionalKeywordVar();\n      var key = this.expectTemplateBindingKey();\n      this.optionalCharacter($COLON);\n      var name = null;\n      var expression = null;\n      if (this.next !== EOF) {\n        if (keyIsVar) {\n          if (this.optionalOperator(\"=\")) {\n            name = this.expectTemplateBindingKey();\n          } else {\n            name = '\\$implicit';\n          }\n        } else if (!this.peekKeywordVar()) {\n          var start = this.inputIndex;\n          var ast = this.parsePipe();\n          var source = this.input.substring(start, this.inputIndex);\n          expression = new ASTWithSource(ast, source, this.location);\n        }\n      }\n      ListWrapper.push(bindings, new TemplateBinding(key, keyIsVar, name, expression));\n      if (!this.optionalCharacter($SEMICOLON)) {\n        this.optionalCharacter($COMMA);\n      };\n    }\n    return bindings;\n  }\n\n  error(message:string, index:int = null) {\n    if (isBlank(index)) index = this.index;\n\n    var location = (index < this.tokens.length)\n      ? `at column ${this.tokens[index].index + 1} in`\n      : `at the end of the expression`;\n\n    throw new BaseException(`Parser Error: ${message} ${location} [${this.input}] in ${this.location}`);\n  }\n}\n"]}