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 '{'60 ObjBody61 '}'62ExprArrayComp =63 '['64 Expr65 ','?66 CompSpec*67 ']'6869ExprImport =70 ImportKind Text7172ImportKind =73 'importstr'74| 'importbin'75| 'import'7677ExprVar =78 name:Name79ExprLocal =80 'local'81 (Bind (',' Bind)* ','?)82 ';'83 Expr8485ExprIfThenElse =86 'if'87 cond:Expr88 'then'89 then:TrueExpr90 ('else' else_:FalseExpr)?9192ExprFunction =93 'function'94 '('95 ParamsDesc96 ')'97 Expr98ExprAssert =99 Assertion100 ';'101 Expr102ExprError =103 'error'104 Expr105106Expr =107 ExprBinary108| ExprUnary109| ExprSlice110| ExprIndex111| ExprIndexExpr112| ExprApply113| ExprObjExtend114| ExprParened115| ExprIntrinsicThisFile116| ExprIntrinsicId117| ExprIntrinsic118| ExprString119| ExprNumber120| ExprLiteral121| ExprArray122| ExprObject123| ExprArrayComp124| ExprImport125| ExprVar126| ExprLocal127| ExprIfThenElse128| ExprFunction129| ExprAssert130| ExprError131132BinaryOperator =133 '||' | '&&'134| '|' | '^' | '&'135| '==' | '!=' | '<' | '>' | '<=' | '>=' | 'in'136| '<<' | '>>'137| '+' | '-'138| '*' | '/' | '%'139| 'META_OBJECT_APPLY!'140| 'ERROR_NO_OPERATOR!'141142UnaryOperator =143 '-' | '!' | '~'144145SliceDescEnd=Expr146SliceDescStep=Expr147SliceDesc =148 '['149 from:Expr?150 ':'151 (152 end:SliceDescEnd?153 (154 ':'155 step:SliceDescStep?156 )?157 )?158 ']'159160Name =161 'LIT_IDENT!'162163ArgsDesc =164 '('165 (Arg (',' Arg)* ','?)?166 ')'167Arg =168 (name:Name '=')? Expr169170ObjBodyComp =171 pre:ObjLocalPostComma*172 '['173 key:LhsExpr174 ']'175 '+'?176 ':'177 value:Expr178 post:ObjLocalPreComma*179 CompSpec*180ObjBodyMemberList =181 (Member (',' Member)* ','?)?182ObjBody =183 ObjBodyComp184| ObjBodyMemberList185186ObjLocalPostComma =187 ObjLocal188 ','189ObjLocalPreComma =190 ','191 ObjLocal192193MemberBindStmt = ObjLocal194MemberAssertStmt = Assertion195MemberField = Field196Member =197 MemberBindStmt198| MemberAssertStmt199| MemberField200201ObjLocal =202 'local'203 Bind204205FieldNormal =206 FieldName207 '+'?208 Visibility209 Expr210FieldMethod =211 FieldName212 ParamsDesc213 Visibility214 Expr215Field =216 FieldNormal217| FieldMethod218219FieldNameFixed =220 id:Name221| Text222FieldNameDynamic =223 '['224 Expr225 ']'226FieldName =227 FieldNameFixed228| FieldNameDynamic229230Visibility =231 ':::'232| '::'233| ':'234235Literal =236 'null'237| 'true'238| 'false'239| 'self'240| '$'241| 'super'242243Text =244 'LIT_STRING_DOUBLE!'245| 'ERROR_STRING_DOUBLE_UNTERMINATED!'246| 'LIT_STRING_SINGLE!'247| 'ERROR_STRING_SINGLE_UNTERMINATED!'248| 'LIT_STRING_DOUBLE_VERBATIM!'249| 'ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED!'250| 'LIT_STRING_SINGLE_VERBATIM!'251| 'ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED!'252| 'ERROR_STRING_VERBATIM_MISSING_QUOTES!'253| 'LIT_STRING_BLOCK!'254| 'ERROR_STRING_BLOCK_UNEXPECTED_END!'255| 'ERROR_STRING_BLOCK_MISSING_NEW_LINE!'256| 'ERROR_STRING_BLOCK_MISSING_TERMINATION!'257| 'ERROR_STRING_BLOCK_MISSING_INDENT!'258259Number =260 'LIT_FLOAT!'261| 'ERROR_FLOAT_JUNK_AFTER_POINT!'262| 'ERROR_FLOAT_JUNK_AFTER_EXPONENT!'263| 'ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN!'264265ForSpec =266 'for'267 bind:Name268 'in'269 Expr270IfSpec =271 'if'272 Expr273CompSpec =274 ForSpec275| IfSpec276277BindDestruct =278 into:Destruct279 '='280 value:Expr281BindFunction =282 name:Name283 params:ParamsDesc284 '='285 value:Expr286Bind =287 BindDestruct288| BindFunction289290ParamsDesc =291 '('292 (Param (',' Param)* ','?)?293 ')'294Param =295 Destruct296 (297 '='298 Expr299 )?300301Assertion =302 'assert'303 condition:LhsExpr304 (305 ':'306 message:Expr307 )?308309DestructFull =310 Name311DestructSkip =312 '?'313DestructArray =314 '['315 (316 DestructArrayPart317 (',' DestructArrayPart)*318 ','?319 )?320 ']'321DestructObject =322 '{'323 (324 DestructObjectField325 (',' DestructObjectField)*326 ','?327 )?328 DestructRest?329 ','?330 '}'331Destruct =332 DestructFull333| DestructSkip334| DestructArray335| DestructObject336337DestructArrayElement =338 Destruct339DestructArrayPart =340 DestructArrayElement341| DestructRest342343DestructRest =344 '...'345 into:Name?346347DestructObjectField =348 field:Name349 (350 ':'351 Destruct352 )?353 (354 '='355 Expr356 )?357358// Aliases used to resolve node type conflicts359TrueExpr=Expr360FalseExpr=Expr361LhsExpr=Expr362363// Trivia - tokens which will be implicitly skipped for parser364Trivia =365 'LIT_WHITESPACE!'366| 'LIT_MULTI_LINE_COMMENT!'367| 'ERROR_COMMENT_TOO_SHORT!'368| 'ERROR_COMMENT_UNTERMINATED!'369| 'LIT_SINGLE_LINE_HASH_COMMENT!'370| 'LIT_SINGLE_LINE_SLASH_COMMENT!'