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 = Assertion197MemberField = Field198Member =199 MemberBindStmt200| MemberAssertStmt201| MemberField202203ObjLocal =204 'local'205 Bind206207FieldNormal =208 FieldName209 '+'?210 Visibility211 Expr212FieldMethod =213 FieldName214 ParamsDesc215 Visibility216 Expr217Field =218 FieldNormal219| FieldMethod220221FieldNameFixed =222 id:Name223| Text224FieldNameDynamic =225 '['226 Expr227 ']'228FieldName =229 FieldNameFixed230| FieldNameDynamic231232Visibility =233 ':::'234| '::'235| ':'236237Literal =238 'null'239| 'true'240| 'false'241| 'self'242| '$'243| 'super'244245Text =246 'LIT_STRING_DOUBLE!'247| 'ERROR_STRING_DOUBLE_UNTERMINATED!'248| 'LIT_STRING_SINGLE!'249| 'ERROR_STRING_SINGLE_UNTERMINATED!'250| 'LIT_STRING_DOUBLE_VERBATIM!'251| 'ERROR_STRING_DOUBLE_VERBATIM_UNTERMINATED!'252| 'LIT_STRING_SINGLE_VERBATIM!'253| 'ERROR_STRING_SINGLE_VERBATIM_UNTERMINATED!'254| 'ERROR_STRING_VERBATIM_MISSING_QUOTES!'255| 'LIT_STRING_BLOCK!'256| 'ERROR_STRING_BLOCK_UNEXPECTED_END!'257| 'ERROR_STRING_BLOCK_MISSING_NEW_LINE!'258| 'ERROR_STRING_BLOCK_MISSING_TERMINATION!'259| 'ERROR_STRING_BLOCK_MISSING_INDENT!'260261Number =262 'LIT_FLOAT!'263| 'ERROR_FLOAT_JUNK_AFTER_POINT!'264| 'ERROR_FLOAT_JUNK_AFTER_EXPONENT!'265| 'ERROR_FLOAT_JUNK_AFTER_EXPONENT_SIGN!'266267ForSpec =268 'for'269 bind:Name270 'in'271 Expr272IfSpec =273 'if'274 Expr275CompSpec =276 ForSpec277| IfSpec278279BindDestruct =280 into:Destruct281 '='282 value:Expr283BindFunction =284 name:Name285 params:ParamsDesc286 '='287 value:Expr288Bind =289 BindDestruct290| BindFunction291292ParamsDesc =293 '('294 (Param (',' Param)* ','?)?295 ')'296Param =297 Destruct298 (299 '='300 Expr301 )?302303Assertion =304 'assert'305 condition:LhsExpr306 (307 ':'308 message:Expr309 )?310311DestructFull =312 Name313DestructSkip =314 '?'315DestructArray =316 '['317 (318 DestructArrayPart319 (',' DestructArrayPart)*320 ','?321 )?322 ']'323DestructObject =324 '{'325 (326 DestructObjectField327 (',' DestructObjectField)*328 ','?329 )?330 DestructRest?331 ','?332 '}'333Destruct =334 DestructFull335| DestructSkip336| DestructArray337| DestructObject338339DestructArrayElement =340 Destruct341DestructArrayPart =342 DestructArrayElement343| DestructRest344345DestructRest =346 '...'347 into:Name?348349DestructObjectField =350 field:Name351 (352 ':'353 Destruct354 )?355 (356 '='357 Expr358 )?359360// Aliases used to resolve node type conflicts361TrueExpr=Expr362FalseExpr=Expr363LhsExpr=Expr364365// Trivia - tokens which will be implicitly skipped for parser366Trivia =367 'LIT_WHITESPACE!'368| 'LIT_MULTI_LINE_COMMENT!'369| 'ERROR_COMMENT_TOO_SHORT!'370| 'ERROR_COMMENT_UNTERMINATED!'371| 'LIT_SINGLE_LINE_HASH_COMMENT!'372| 'LIT_SINGLE_LINE_SLASH_COMMENT!'