MCPcopy
hub / github.com/google/go-jsonnet / parse

Method parse

internal/parser/parser.go:983–1379  ·  view source on GitHub ↗
(prec iast.Precedence)

Source from the content-addressed store, hash-verified

981}
982
983func (p *parser) parse(prec iast.Precedence) (ast.Node, errors.StaticError) {
984 begin := p.peek()
985
986 switch begin.kind {
987 // These cases have effectively iast.MaxPrecedence as the first
988 // call to parse will parse them.
989 case tokenAssert:
990 p.pop()
991 cond, err := p.parse(iast.MaxPrecedence)
992 if err != nil {
993 return nil, err
994 }
995 var msg ast.Node
996 var colonFodder ast.Fodder
997 if p.peek().kind == tokenOperator && p.peek().data == ":" {
998 colon := p.pop()
999 colonFodder = colon.fodder
1000 msg, err = p.parse(iast.MaxPrecedence)
1001 if err != nil {
1002 return nil, err
1003 }
1004 }
1005 semicolon, err := p.popExpect(tokenSemicolon)
1006 if err != nil {
1007 return nil, err
1008 }
1009 rest, err := p.parse(iast.MaxPrecedence)
1010 if err != nil {
1011 return nil, err
1012 }
1013 return &ast.Assert{
1014 NodeBase: ast.NewNodeBaseLoc(locFromTokenAST(begin, rest), begin.fodder),
1015 Cond: cond,
1016 ColonFodder: colonFodder,
1017 Message: msg,
1018 SemicolonFodder: semicolon.fodder,
1019 Rest: rest,
1020 }, nil
1021
1022 case tokenError:
1023 p.pop()
1024 expr, err := p.parse(iast.MaxPrecedence)
1025 if err != nil {
1026 return nil, err
1027 }
1028 return &ast.Error{
1029 NodeBase: ast.NewNodeBaseLoc(locFromTokenAST(begin, expr), begin.fodder),
1030 Expr: expr,
1031 }, nil
1032
1033 case tokenIf:
1034 p.pop()
1035 cond, err := p.parse(iast.MaxPrecedence)
1036 if err != nil {
1037 return nil, err
1038 }
1039 thenToken, err := p.popExpect(tokenThen)
1040 if err != nil {

Callers 10

parseArgumentMethod · 0.95
parseParameterMethod · 0.95
parseBindMethod · 0.95
parseArrayMethod · 0.95
parseTerminalMethod · 0.95
ParseFunction · 0.80

Calls 14

peekMethod · 0.95
popMethod · 0.95
popExpectMethod · 0.95
parseParametersMethod · 0.95
parseBindMethod · 0.95
parseTerminalMethod · 0.95
unexpectedTokenErrorMethod · 0.95
parsingFailureMethod · 0.95
parseArgumentsMethod · 0.95
parseObjectRemainderMethod · 0.95
MakeStaticErrorFunction · 0.92
locFromTokenASTFunction · 0.85

Tested by

no test coverage detected