parseArgument parses either id = expr or just expr. It returns either ( , id, , expr) or (nil, nil, nil, expr) respectively.
()
| 95 | // It returns either (<f1>, id, <f2>, expr) or (nil, nil, nil, expr) |
| 96 | // respectively. |
| 97 | func (p *parser) parseArgument() (ast.Fodder, *ast.Identifier, ast.Fodder, ast.Node, errors.StaticError) { |
| 98 | var idFodder ast.Fodder |
| 99 | var id *ast.Identifier |
| 100 | var eqFodder ast.Fodder |
| 101 | if p.peek().kind == tokenIdentifier && p.doublePeek().kind == tokenOperator && p.doublePeek().data == "=" { |
| 102 | ident := p.pop() |
| 103 | var tmpID = ast.Identifier(ident.data) |
| 104 | id = &tmpID |
| 105 | idFodder = ident.fodder |
| 106 | eq := p.pop() |
| 107 | eqFodder = eq.fodder |
| 108 | } |
| 109 | expr, err := p.parse(iast.MaxPrecedence) |
| 110 | if err != nil { |
| 111 | return nil, nil, nil, nil, err |
| 112 | } |
| 113 | return idFodder, id, eqFodder, expr, nil |
| 114 | } |
| 115 | |
| 116 | // TODO(sbarzowski) - this returned bool is weird |
| 117 | func (p *parser) parseArguments(elementKind string) (*token, *ast.Arguments, bool, errors.StaticError) { |
no test coverage detected