diff options
Diffstat (limited to 'usr/gri/pretty/parser.go')
| -rw-r--r-- | usr/gri/pretty/parser.go | 100 |
1 files changed, 50 insertions, 50 deletions
diff --git a/usr/gri/pretty/parser.go b/usr/gri/pretty/parser.go index 5543d9eeb..7f1f887b8 100644 --- a/usr/gri/pretty/parser.go +++ b/usr/gri/pretty/parser.go @@ -236,7 +236,7 @@ func (P *Parser) noType(x AST.Expr) AST.Expr { lit, ok := x.(*AST.TypeLit); if ok { P.error(lit.Typ.Pos, "expected expression, found type"); - x = &AST.BasicLit{lit.Typ.Pos, Scanner.STRING, ""}; + x = &AST.BasicLit(lit.Typ.Pos, Scanner.STRING, ""); } } return x; @@ -244,7 +244,7 @@ func (P *Parser) noType(x AST.Expr) AST.Expr { func (P *Parser) newBinaryExpr(pos, tok int, x, y AST.Expr) *AST.BinaryExpr { - return &AST.BinaryExpr{pos, tok, P.noType(x), P.noType(y)}; + return &AST.BinaryExpr(pos, tok, P.noType(x), P.noType(y)); } @@ -273,13 +273,13 @@ func (P *Parser) parseIdent(scope *SymbolTable.Scope) *AST.Ident { } else { assert(obj.Kind != SymbolTable.NONE); } - x := &AST.Ident{P.pos, obj}; + x := &AST.Ident(P.pos, obj); P.next(); return x; } - + P.expect(Scanner.IDENT); // use expect() error handling - return &AST.Ident{P.pos, nil}; + return &AST.Ident(P.pos, nil); } @@ -344,7 +344,7 @@ func (P *Parser) parseQualifiedIdent() AST.Expr { pos := P.pos; P.next(); y := P.parseIdent(nil); - x = &AST.Selector{pos, x, y}; + x = &AST.Selector(pos, x, y); } return x; @@ -465,18 +465,18 @@ func (P *Parser) parseVarList(list *array.Array, ellipsis_ok bool) { continue; } } - list.Set(i, &AST.BadExpr{0}); + list.Set(i, &AST.BadExpr(0)); P.error(t.Pos, "identifier expected"); } // add type - list.Push(&AST.TypeLit{typ}); + list.Push(&AST.TypeLit(typ)); } else { // all list entries are types // convert all type entries into type expressions for i, n := i0, list.Len(); i < n; i++ { t := list.At(i).(*AST.Type); - list.Set(i, &AST.TypeLit{t}); + list.Set(i, &AST.TypeLit(t)); } } } @@ -544,7 +544,7 @@ func (P *Parser) parseResult(ftyp *AST.Type) *AST.Type { if typ != nil { t = AST.NewType(P.pos, AST.STRUCT); t.List = array.New(0); - t.List.Push(&AST.TypeLit{typ}); + t.List.Push(&AST.TypeLit(typ)); t.End = P.pos; } } @@ -597,7 +597,7 @@ func (P *Parser) parseMethodSpec(list *array.Array) { list.Push(P.parseIdentList()); t := P.parseSignature(); - list.Push(&AST.TypeLit{t}); + list.Push(&AST.TypeLit(t)); } @@ -677,7 +677,7 @@ func (P *Parser) parseStructType() *AST.Type { t.End = P.pos; P.expect(Scanner.RBRACE); - + // enter fields into struct scope for i, n := 0, t.List.Len(); i < n; i++ { if x, ok := t.List.At(i).(*AST.Ident); ok { @@ -826,7 +826,7 @@ func (P *Parser) parseFunctionLit() AST.Expr { P.scope_lev--; P.expr_lev--; - return &AST.FunctionLit{pos, typ, body}; + return &AST.FunctionLit(pos, typ, body); } @@ -848,7 +848,7 @@ func (P *Parser) parseOperand() AST.Expr { return x; case Scanner.INT, Scanner.FLOAT, Scanner.STRING: - x := &AST.BasicLit{P.pos, P.tok, P.val}; + x := &AST.BasicLit(P.pos, P.tok, P.val); P.next(); if x.Tok == Scanner.STRING { // TODO should remember the list instead of @@ -865,14 +865,14 @@ func (P *Parser) parseOperand() AST.Expr { default: t := P.tryType(); if t != nil { - return &AST.TypeLit{t}; + return &AST.TypeLit(t); } else { P.error(P.pos, "operand expected"); P.next(); // make progress } } - return &AST.BadExpr{P.pos}; + return &AST.BadExpr(P.pos); } @@ -885,11 +885,11 @@ func (P *Parser) parseSelectorOrTypeGuard(x AST.Expr) AST.Expr { P.expect(Scanner.PERIOD); if P.tok == Scanner.IDENT { - x = &AST.Selector{pos, x, P.parseIdent(nil)}; + x = &AST.Selector(pos, x, P.parseIdent(nil)); } else { P.expect(Scanner.LPAREN); - x = &AST.TypeGuard{pos, x, P.parseType()}; + x = &AST.TypeGuard(pos, x, P.parseType()); P.expect(Scanner.RPAREN); } @@ -909,7 +909,7 @@ func (P *Parser) parseIndex(x AST.Expr) AST.Expr { P.expr_lev--; P.expect(Scanner.RBRACK); - return &AST.Index{pos, x, i}; + return &AST.Index(pos, x, i); } @@ -920,7 +920,7 @@ func (P *Parser) parseCall(f AST.Expr) AST.Expr { defer un(trace(P, "Call")); } - call := &AST.Call{P.pos, f, nil}; + call := &AST.Call(P.pos, f, nil); P.expect(Scanner.LPAREN); if P.tok != Scanner.RPAREN { P.expr_lev++; @@ -931,13 +931,13 @@ func (P *Parser) parseCall(f AST.Expr) AST.Expr { } if t != nil { // we found a type - args := &AST.TypeLit{t}; + args := &AST.TypeLit(t); if P.tok == Scanner.COMMA { pos := P.pos; P.next(); y := P.parseExpressionList(); // create list manually because NewExpr checks for type expressions - args := &AST.BinaryExpr{pos, Scanner.COMMA, args, y}; + args := &AST.BinaryExpr(pos, Scanner.COMMA, args, y); } call.Args = args; } else { @@ -1012,7 +1012,7 @@ func (P *Parser) parseCompositeLit(t *AST.Type) AST.Expr { } P.expect(Scanner.RBRACE); - return &AST.CompositeLit{pos, t, elts}; + return &AST.CompositeLit(pos, t, elts); } @@ -1064,9 +1064,9 @@ func (P *Parser) parseUnaryExpr() AST.Expr { // pointer type t := AST.NewType(pos, AST.POINTER); t.Elt = lit.Typ; - return &AST.TypeLit{t}; + return &AST.TypeLit(t); } else { - return &AST.UnaryExpr{pos, tok, y}; + return &AST.UnaryExpr(pos, tok, y); } } @@ -1124,12 +1124,12 @@ func (P *Parser) parseSimpleStat(range_ok bool) AST.Stat { P.opt_semi = true; if AST.ExprLen(x) == 1 { if label, is_ident := x.(*AST.Ident); is_ident { - return &AST.LabelDecl{pos, label}; + return &AST.LabelDecl(pos, label); } } P.error(x.Pos(), "illegal label declaration"); return nil; - + case Scanner.DEFINE, Scanner.ASSIGN, Scanner.ADD_ASSIGN, Scanner.SUB_ASSIGN, Scanner.MUL_ASSIGN, Scanner.QUO_ASSIGN, @@ -1142,7 +1142,7 @@ func (P *Parser) parseSimpleStat(range_ok bool) AST.Stat { if range_ok && P.tok == Scanner.RANGE { range_pos := P.pos; P.next(); - y = &AST.UnaryExpr{range_pos, Scanner.RANGE, P.parseExpression(1)}; + y = &AST.UnaryExpr(range_pos, Scanner.RANGE, P.parseExpression(1)); if tok != Scanner.DEFINE && tok != Scanner.ASSIGN { P.error(pos, "expected '=' or ':=', found '" + Scanner.TokenString(tok) + "'"); } @@ -1153,21 +1153,21 @@ func (P *Parser) parseSimpleStat(range_ok bool) AST.Stat { } } // TODO changed ILLEGAL -> NONE - return &AST.ExpressionStat{x.Pos(), Scanner.ILLEGAL, P.newBinaryExpr(pos, tok, x, y)}; - + return &AST.ExpressionStat(x.Pos(), Scanner.ILLEGAL, P.newBinaryExpr(pos, tok, x, y)); + default: if AST.ExprLen(x) != 1 { P.error(x.Pos(), "only one expression allowed"); } - + if P.tok == Scanner.INC || P.tok == Scanner.DEC { - s := &AST.ExpressionStat{P.pos, P.tok, x}; + s := &AST.ExpressionStat(P.pos, P.tok, x); P.next(); // consume "++" or "--" return s; } - + // TODO changed ILLEGAL -> NONE - return &AST.ExpressionStat{x.Pos(), Scanner.ILLEGAL, x}; + return &AST.ExpressionStat(x.Pos(), Scanner.ILLEGAL, x); } unreachable(); @@ -1182,7 +1182,7 @@ func (P *Parser) parseInvocationStat(keyword int) *AST.ExpressionStat { pos := P.pos; P.expect(keyword); - return &AST.ExpressionStat{pos, keyword, P.parseExpression(1)}; + return &AST.ExpressionStat(pos, keyword, P.parseExpression(1)); } @@ -1198,7 +1198,7 @@ func (P *Parser) parseReturnStat() *AST.ExpressionStat { x = P.parseExpressionList(); } - return &AST.ExpressionStat{pos, Scanner.RETURN, x}; + return &AST.ExpressionStat(pos, Scanner.RETURN, x); } @@ -1207,7 +1207,7 @@ func (P *Parser) parseControlFlowStat(tok int) *AST.ControlFlowStat { defer un(trace(P, "ControlFlowStat")); } - s := &AST.ControlFlowStat{P.pos, tok, nil}; + s := &AST.ControlFlowStat(P.pos, tok, nil); P.expect(tok); if tok != Scanner.FALLTHROUGH && P.tok == Scanner.IDENT { s.Label = P.parseIdent(P.top_scope); @@ -1275,7 +1275,7 @@ func (P *Parser) parseIfStat() *AST.IfStat { // wrap in a block since we don't have one body := AST.NewBlock(0, Scanner.LBRACE); body.List.Push(else_); - else_ = &AST.CompositeStat{body}; + else_ = &AST.CompositeStat(body); } } else { P.error(P.pos, "'if' or '{' expected - illegal 'else' branch"); @@ -1283,7 +1283,7 @@ func (P *Parser) parseIfStat() *AST.IfStat { } P.closeScope(); - return &AST.IfStat{pos, init, cond, body, else_}; + return &AST.IfStat(pos, init, cond, body, else_); } @@ -1299,7 +1299,7 @@ func (P *Parser) parseForStat() *AST.ForStat { body := P.parseBlock(nil, Scanner.LBRACE); P.closeScope(); - return &AST.ForStat{pos, init, cond, post, body}; + return &AST.ForStat(pos, init, cond, post, body); } @@ -1318,7 +1318,7 @@ func (P *Parser) parseCaseClause() *AST.CaseClause { P.expect(Scanner.DEFAULT); } - return &AST.CaseClause{pos, expr, P.parseBlock(nil, Scanner.COLON)}; + return &AST.CaseClause(pos, expr, P.parseBlock(nil, Scanner.COLON)); } @@ -1341,7 +1341,7 @@ func (P *Parser) parseSwitchStat() *AST.SwitchStat { P.opt_semi = true; P.closeScope(); - return &AST.SwitchStat{pos, init, tag, body}; + return &AST.SwitchStat(pos, init, tag, body); } @@ -1371,7 +1371,7 @@ func (P *Parser) parseCommClause() *AST.CaseClause { P.expect(Scanner.DEFAULT); } - return &AST.CaseClause{pos, expr, P.parseBlock(nil, Scanner.COLON)}; + return &AST.CaseClause(pos, expr, P.parseBlock(nil, Scanner.COLON)); } @@ -1393,7 +1393,7 @@ func (P *Parser) parseSelectStat() *AST.SelectStat { P.opt_semi = true; P.closeScope(); - return &AST.SelectStat{pos, body}; + return &AST.SelectStat(pos, body); } @@ -1404,7 +1404,7 @@ func (P *Parser) parseStatement() AST.Stat { switch P.tok { case Scanner.CONST, Scanner.TYPE, Scanner.VAR: - return &AST.DeclarationStat{P.parseDeclaration()}; + return &AST.DeclarationStat(P.parseDeclaration()); case Scanner.FUNC: // for now we do not allow local function declarations, // instead we assume this starts a function literal @@ -1422,7 +1422,7 @@ func (P *Parser) parseStatement() AST.Stat { case Scanner.BREAK, Scanner.CONTINUE, Scanner.GOTO, Scanner.FALLTHROUGH: return P.parseControlFlowStat(P.tok); case Scanner.LBRACE: - return &AST.CompositeStat{P.parseBlock(nil, Scanner.LBRACE)}; + return &AST.CompositeStat(P.parseBlock(nil, Scanner.LBRACE)); case Scanner.IF: return P.parseIfStat(); case Scanner.FOR: @@ -1433,12 +1433,12 @@ func (P *Parser) parseStatement() AST.Stat { return P.parseSelectStat(); case Scanner.SEMICOLON: // don't consume the ";", it is the separator following the empty statement - return &AST.EmptyStat{P.pos}; + return &AST.EmptyStat(P.pos); } // no statement found P.error(P.pos, "statement expected"); - return &AST.BadStat{P.pos}; + return &AST.BadStat(P.pos); } @@ -1459,7 +1459,7 @@ func (P *Parser) parseImportSpec(d *AST.Decl) { if P.tok == Scanner.STRING { // TODO eventually the scanner should strip the quotes - d.Val = &AST.BasicLit{P.pos, Scanner.STRING, P.val}; + d.Val = &AST.BasicLit(P.pos, Scanner.STRING, P.val); P.next(); } else { P.expect(Scanner.STRING); // use expect() error handling @@ -1513,7 +1513,7 @@ func (P *Parser) parseVarSpec(d *AST.Decl) { func (P *Parser) parseSpec(d *AST.Decl) { kind := SymbolTable.NONE; - + switch d.Tok { case Scanner.IMPORT: P.parseImportSpec(d); kind = SymbolTable.PACKAGE; case Scanner.CONST: P.parseConstSpec(d); kind = SymbolTable.CONST; |
