1// This file describes structure of jsonnet source code2// It is also used to generate files in src/generated34// Token names ending with `!` are considered meta, and handled specifically56SourceFile = Expr78ExprBinary =9 lhs:LhsExpr10 BinaryOperator11 rhs:Expr12ExprUnary =13 UnaryOperator14 rhs:Expr15ExprSlice =16 Expr17 SliceDesc18ExprIndex =19 Expr20 '.'21 index:Name22ExprIndexExpr =23 base:LhsExpr24 '['25 index:Expr26 ']'27ExprApply =28 Expr29 ArgsDesc30 'tailstrict'?31ExprObjExtend =32 LhsExpr33 Expr34ExprParened =35 '('36 Expr37 ')'3839ExprLiteral =40 Literal41ExprIntrinsicThisFile =42 '$intrinsicThisFile'43ExprIntrinsicId =44 '$intrinsicId'45ExprIntrinsic =46 '$intrinsic'47 '('48 name:Name49 ')'50ExprString =51 Text52ExprNumber =53 Number54ExprArray =55 '['56 (Expr (',' Expr)* ','?)?57 ']'58ExprObject =59 ObjBody60ExprArrayComp =61 '['62 Expr63 ','?64 CompSpec*65 ']'6667ExprImport =68 ImportKind Text6970ImportKind =71 'importstr'72| 'importbin'73| 'import'7475ExprVar =76 name:Name77ExprLocal =78 'local'79 (Bind (',' Bind)* ','?)80 ';'81 Expr8283ExprIfThenElse =84 'if'85 cond:Expr86 'then'87 then:TrueExpr88 ('else' else_:FalseExpr)?8990ExprFunction =91 'function'92 '('93 ParamsDesc94 ')'95 Expr96ExprAssert =97 Assertion98 ';'99 Expr100ExprError =101 'error'102 Expr103104Expr =105 ExprBinary106| ExprUnary107| ExprSlice108| ExprIndex109| ExprIndexExpr110| ExprApply111| ExprObjExtend112| ExprParened113| ExprIntrinsicThisFile114| ExprIntrinsicId115| ExprIntrinsic116| ExprString117| ExprNumber118| ExprLiteral119| ExprArray120| ExprObject121| ExprArrayComp122| ExprImport123| ExprVar124| ExprLocal125| ExprIfThenElse126| ExprFunction127| ExprAssert128| ExprError129130BinaryOperator =131 '||' | '&&'132| '|' | '^' | '&'133| '==' | '!=' | '<' | '>' | '<=' | '>=' | 'in'134| '<<' | '>>'135| '+' | '-'136| '*' | '/' | '%'137| 'META_OBJECT_APPLY!'138| 'ERROR_NO_OPERATOR!'139140UnaryOperator =141 '-' | '!' | '~'142143SliceDescEnd=Expr144SliceDescStep=Expr145SliceDesc =146 '['147 from:Expr?148 ':'149 (150 end:SliceDescEnd?151 (152 ':'153 step:SliceDescStep?154 )?155 )?156 ']'157158Name =159 'LIT_IDENT!'160161ArgsDesc =162 '('163 (Arg (',' Arg)* ','?)?164 ')'165Arg =166 (name:Name '=')? Expr167168ObjBodyComp =169 '{'170 pre:ObjLocalPostComma*171 '['172 key:LhsExpr173 ']'174 '+'?175 ':'176 value:Expr177 post:ObjLocalPreComma*178 CompSpec*179 '}'180ObjBodyMemberList =181 '{'182 (Member (',' Member)* ','?)?183 '}'184ObjBody =185 ObjBodyComp186| ObjBodyMemberList187188ObjLocalPostComma =189 ObjLocal190 ','191ObjLocalPreComma =192 ','193 ObjLocal194195MemberBindStmt = ObjLocal196MemberAssertStmt = Assertion197MemberFieldNormal =198 FieldName199 '+'?200 Visibility201 Expr202MemberFieldMethod =203 FieldName204 ParamsDesc205 Visibility206 Expr207Member =208 MemberBindStmt209| MemberAssertStmt210| MemberFieldNormal211| MemberFieldMethod212213ObjLocal =214 'local'215 Bind216217FieldNameFixed =218 id:Name219| Text220FieldNameDynamic =221 '['222 Expr223 ']'224FieldName =225 FieldNameFixed226| FieldNameDynamic227228Visibility =229 ':::'230| '::'231| ':'232233Literal =234 'null'235| 'true'236| 'false'237| 'self'238| '$'239| 'super'240241Text =242 'LIT_STRING_DOUBLE!'243| 'ERROR_STRING_DOUBLE_UNTERMINATED!'244| 'LIT_STRING_SINGLE!'245| 'ERROR_STRING_SINGLE_UNTERMINATED!'246| 'LIT_STRING_DOUBLE_VERBATIM!'247| 'ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED!'248| 'LIT_STRING_SINGLE_VERBATIM!'249| 'ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED!'250| 'ERROR_STRING_VERBATIM_MISSING_QUOTES!'251| 'LIT_STRING_BLOCK!'252| 'ERROR_STRING_BLOCK_UNEXPECTED_END!'253| 'ERROR_STRING_BLOCK_MISSING_NEW_LINE!'254| 'ERROR_STRING_BLOCK_MISSING_TERMINATION!'255| 'ERROR_STRING_BLOCK_MISSING_INDENT!'256257Number =258 'LIT_FLOAT!'259| 'ERROR_FLOAT_JUNK_AFTER_POINT!'260| 'ERROR_FLOAT_JUNK_AFTER_EXPONENT!'261| 'ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN!'262263ForSpec =264 'for'265 bind:Name266 'in'267 Expr268IfSpec =269 'if'270 Expr271CompSpec =272 ForSpec273| IfSpec274275BindDestruct =276 into:Destruct277 '='278 value:Expr279BindFunction =280 name:Name281 params:ParamsDesc282 '='283 value:Expr284Bind =285 BindDestruct286| BindFunction287288ParamsDesc =289 '('290 (Param (',' Param)* ','?)?291 ')'292Param =293 Destruct294 (295 '='296 Expr297 )?298299Assertion =300 'assert'301 condition:LhsExpr302 (303 ':'304 message:Expr305 )?306307DestructFull =308 Name309DestructSkip =310 '?'311DestructArray =312 '['313 (314 DestructArrayPart315 (',' DestructArrayPart)*316 ','?317 )?318 ']'319DestructObject =320 '{'321 (322 DestructObjectField323 (',' DestructObjectField)*324 ','?325 )?326 DestructRest?327 ','?328 '}'329Destruct =330 DestructFull331| DestructSkip332| DestructArray333| DestructObject334335DestructArrayElement =336 Destruct337DestructArrayPart =338 DestructArrayElement339| DestructRest340341DestructRest =342 '...'343 into:Name?344345DestructObjectField =346 field:Name347 (348 ':'349 Destruct350 )?351 (352 '='353 Expr354 )?355356// Aliases used to resolve node type conflicts357TrueExpr=Expr358FalseExpr=Expr359LhsExpr=Expr360361// Trivia - tokens which will be implicitly skipped for parser362Trivia =363 'LIT_WHITESPACE!'364| 'LIT_MULTI_LINE_COMMENT!'365| 'ERROR_COMMENT_TOO_SHORT!'366| 'ERROR_COMMENT_UNTERMINATED!'367| 'LIT_SINGLE_LINE_HASH_COMMENT!'368| 'LIT_SINGLE_LINE_SLASH_COMMENT!'369370ParsingError =371 'ERROR_MISSING_TOKEN!'372| 'ERROR_UNEXPECTED_TOKEN!'373| 'ERROR_CUSTOM!'