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

Method parseTerminal

internal/parser/parser.go:869–977  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

867}
868
869func (p *parser) parseTerminal() (ast.Node, errors.StaticError) {
870 tok := p.pop()
871 switch tok.kind {
872 case tokenAssert, tokenBraceR, tokenBracketR, tokenComma, tokenDot, tokenElse,
873 tokenError, tokenFor, tokenFunction, tokenIf, tokenIn, tokenImport, tokenImportStr, tokenImportBin,
874 tokenLocal, tokenOperator, tokenParenR, tokenSemicolon, tokenTailStrict, tokenThen:
875 return nil, makeUnexpectedError(tok, "parsing terminal")
876
877 case tokenEndOfFile:
878 return nil, errors.MakeStaticError("Unexpected end of file", tok.loc)
879
880 case tokenBraceL:
881 obj, _, err := p.parseObjectRemainder(tok)
882 return obj, err
883
884 case tokenBracketL:
885 return p.parseArray(tok)
886
887 case tokenParenL:
888 inner, err := p.parse(iast.MaxPrecedence)
889 if err != nil {
890 return nil, err
891 }
892 tokRight, err := p.popExpect(tokenParenR)
893 if err != nil {
894 return nil, err
895 }
896 return &ast.Parens{
897 NodeBase: ast.NewNodeBaseLoc(locFromTokens(tok, tokRight), tok.fodder),
898 Inner: inner,
899 CloseFodder: tokRight.fodder,
900 }, nil
901
902 // Literals
903 case tokenNumber:
904 return &ast.LiteralNumber{
905 NodeBase: ast.NewNodeBaseLoc(tok.loc, tok.fodder),
906 OriginalString: tok.data,
907 }, nil
908 case tokenStringDouble, tokenStringSingle,
909 tokenStringBlock, tokenVerbatimStringDouble, tokenVerbatimStringSingle:
910 return tokenStringToAst(tok)
911 case tokenFalse:
912 return &ast.LiteralBoolean{
913 NodeBase: ast.NewNodeBaseLoc(tok.loc, tok.fodder),
914 Value: false,
915 }, nil
916 case tokenTrue:
917 return &ast.LiteralBoolean{
918 NodeBase: ast.NewNodeBaseLoc(tok.loc, tok.fodder),
919 Value: true,
920 }, nil
921 case tokenNullLit:
922 return &ast.LiteralNull{
923 NodeBase: ast.NewNodeBaseLoc(tok.loc, tok.fodder),
924 }, nil
925
926 // Variables

Callers 1

parseMethod · 0.95

Calls 9

popMethod · 0.95
parseObjectRemainderMethod · 0.95
parseArrayMethod · 0.95
parseMethod · 0.95
popExpectMethod · 0.95
MakeStaticErrorFunction · 0.92
makeUnexpectedErrorFunction · 0.85
locFromTokensFunction · 0.85
tokenStringToAstFunction · 0.85

Tested by

no test coverage detected