2026-09-03 15:46:52 -07:00
|
|
|
grammar QuixosCapability;
|
|
|
|
|
|
|
|
|
|
document
|
|
|
|
|
: workspaceDecl EOF
|
2026-09-05 12:33:52 -07:00
|
|
|
| interfaceResourceDecl EOF
|
|
|
|
|
| packageResourceDecl EOF
|
2026-09-08 14:27:24 -07:00
|
|
|
| fragmentDecl EOF
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
fragmentDecl
|
|
|
|
|
: FRAGMENT LBRACE workspaceItem* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
sourceImportDecl
|
|
|
|
|
: IMPORT stringLiteral SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
workspaceDecl
|
|
|
|
|
: WORKSPACE identifier ID stringLiteral REVISION stringLiteral COMMIT stringLiteral
|
|
|
|
|
LBRACE workspaceItem* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
workspaceItem
|
2026-09-08 14:27:24 -07:00
|
|
|
: sourceImportDecl
|
|
|
|
|
| atomDecl
|
2026-09-05 12:33:52 -07:00
|
|
|
| resourceImportDecl
|
2026-09-03 15:46:52 -07:00
|
|
|
| sharedAttachmentDecl
|
|
|
|
|
| conformanceDecl
|
|
|
|
|
| constructorBindingDecl
|
2026-09-21 11:23:26 -07:00
|
|
|
| presentationDecl
|
2026-09-16 00:12:39 -07:00
|
|
|
| typeAliasDecl
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-05 12:33:52 -07:00
|
|
|
resourceImportDecl
|
|
|
|
|
: IMPORT INTERFACE identifier SEMI
|
|
|
|
|
| IMPORT PACKAGE identifier SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
externalAtomDecl
|
|
|
|
|
: EXTERNAL ATOM identifier ID stringLiteral SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
externalInterfaceDecl
|
|
|
|
|
: EXTERNAL INTERFACE identifier REVISION stringLiteral SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
resourcePreamble
|
|
|
|
|
: resourceImportDecl
|
|
|
|
|
| externalAtomDecl
|
|
|
|
|
| externalInterfaceDecl
|
2026-09-16 00:12:39 -07:00
|
|
|
| typeAliasDecl
|
2026-09-05 12:33:52 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-03 15:46:52 -07:00
|
|
|
atomDecl
|
|
|
|
|
: ATOM identifier ID stringLiteral (DOC stringLiteral)? SEMI
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-05 12:33:52 -07:00
|
|
|
interfaceResourceDecl
|
2026-09-16 00:12:39 -07:00
|
|
|
: resourcePreamble* INTERFACE identifier typeParameters? ID stringLiteral REVISION stringLiteral
|
|
|
|
|
(REQUIRES interfaceType (COMMA interfaceType)*)?
|
2026-09-03 15:46:52 -07:00
|
|
|
LBRACE interfaceMember* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-16 00:12:39 -07:00
|
|
|
typeParameters
|
|
|
|
|
: LT typeParameter (COMMA typeParameter)* GT
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
typeParameter
|
|
|
|
|
: VALUE identifier (COLON STORABLE)?
|
|
|
|
|
| OBJECT identifier (IMPLEMENTS interfaceType (AMP interfaceType)*)?
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
interfaceType
|
|
|
|
|
: identifier typeArguments?
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
typeArguments
|
|
|
|
|
: LT typeArgument (COMMA typeArgument)* GT
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
typeArgument
|
|
|
|
|
: ATOM identifier
|
|
|
|
|
| INTERFACE interfaceType
|
|
|
|
|
| OBJECT identifier
|
|
|
|
|
| valueType
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
typeAliasDecl
|
|
|
|
|
: TYPE identifier typeParameters? EQUAL valueType SEMI
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-03 15:46:52 -07:00
|
|
|
interfaceMember
|
|
|
|
|
: valueMember
|
|
|
|
|
| relationshipMember
|
|
|
|
|
| operationMember
|
2026-09-22 13:16:23 -07:00
|
|
|
| moduleMember
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
moduleMember
|
|
|
|
|
: MODULE identifier ID stringLiteral CONTRACT stringLiteral (SUBJECT targetConstraint)? SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
operationMember
|
2026-09-16 11:25:20 -07:00
|
|
|
: STATIC? OPERATION identifier ID stringLiteral COLON valueType ARROW valueType
|
2026-09-19 21:52:37 -07:00
|
|
|
LBRACE CALL ID stringLiteral executionClause? SEMI RBRACE
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
valueMember
|
2026-09-28 10:28:49 -07:00
|
|
|
: queryReadContract? (VALUE | FIELD) identifier ID stringLiteral COLON valueType
|
2026-09-03 15:46:52 -07:00
|
|
|
LBRACE valueMemberOperation* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
valueMemberOperation
|
2026-09-19 21:52:37 -07:00
|
|
|
: GET ID stringLiteral executionClause? SEMI
|
|
|
|
|
| SET ID stringLiteral executionClause? SEMI
|
2026-09-19 22:20:55 -07:00
|
|
|
| EDIT ID stringLiteral executionClause? SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
| WATCH START ID stringLiteral STOP ID stringLiteral SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
relationshipMember
|
2026-09-17 14:34:16 -07:00
|
|
|
: queryReadContract? RELATION identifier ID stringLiteral COLON cardinality targetConstraint ORDERED? (KEYED stringLiteral)?
|
2026-09-03 15:46:52 -07:00
|
|
|
LBRACE relationshipOperation* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-17 14:34:16 -07:00
|
|
|
queryReadContract
|
2026-09-19 21:52:37 -07:00
|
|
|
: QUERYABLE (RPC | PORTABLE)?
|
2026-09-17 14:34:16 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-03 15:46:52 -07:00
|
|
|
relationshipOperation
|
2026-09-19 21:52:37 -07:00
|
|
|
: RESOLVE ID stringLiteral executionClause? SEMI
|
|
|
|
|
| CONNECT ID stringLiteral executionClause? SEMI
|
|
|
|
|
| DISCONNECT ID stringLiteral executionClause? SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
| WATCH START ID stringLiteral STOP ID stringLiteral SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
targetConstraint
|
|
|
|
|
: ATOM identifier
|
2026-09-16 00:12:39 -07:00
|
|
|
| INTERFACE identifier typeArguments?
|
|
|
|
|
| OBJECT identifier
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-05 12:33:52 -07:00
|
|
|
packageResourceDecl
|
|
|
|
|
: resourcePreamble* PACKAGE identifier ID stringLiteral REVISION stringLiteral
|
2026-09-10 18:27:41 -07:00
|
|
|
(SEMANTIC_MAJOR INTEGER)?
|
2026-09-03 15:46:52 -07:00
|
|
|
LBRACE packageExport* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
packageExport
|
|
|
|
|
: packageOperationExport
|
|
|
|
|
| packageFunctionExport
|
|
|
|
|
| packageConstructorExport
|
2026-09-17 14:34:16 -07:00
|
|
|
| packageQuery
|
2026-09-17 14:34:16 -07:00
|
|
|
| packageQuerySpecialization
|
2026-09-22 13:16:23 -07:00
|
|
|
| moduleExport
|
2026-09-21 11:23:26 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-22 13:16:23 -07:00
|
|
|
moduleExport
|
|
|
|
|
: MODULE identifier ID stringLiteral IMPLEMENTS interfaceType DOT identifier SEMI
|
2026-09-21 11:23:26 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
presentationDecl
|
|
|
|
|
: PRESENTATION identifier ID stringLiteral FOR interfaceType USING identifier DOT identifier SEMI
|
2026-09-17 14:34:16 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
packageQuery
|
2026-09-22 15:41:27 -07:00
|
|
|
: QUERY FRAGMENT? identifier typeParameters? ID stringLiteral ROOT WORKSPACE? interfaceType
|
|
|
|
|
DOCUMENT stringLiteral
|
|
|
|
|
(OPERATION stringLiteral LBRACE queryClause* RBRACE
|
|
|
|
|
| FRAGMENT stringLiteral (OPERATION stringLiteral)? (LBRACE queryClause* RBRACE | SEMI))
|
2026-09-17 14:34:16 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-17 14:34:16 -07:00
|
|
|
packageQuerySpecialization
|
|
|
|
|
: QUERY identifier ID stringLiteral SPECIALIZE identifier typeArguments SEMI
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-17 14:34:16 -07:00
|
|
|
queryClause
|
2026-09-19 21:52:37 -07:00
|
|
|
: REPLICA SEMI
|
|
|
|
|
| LOCAL FROM identifier SEMI
|
|
|
|
|
| FRAGMENTS stringLiteral SEMI
|
2026-09-22 15:41:27 -07:00
|
|
|
| FRAGMENTS identifier DOT identifier (WITH LBRACE fragmentVariable* RBRACE)? SEMI
|
2026-09-17 14:34:16 -07:00
|
|
|
| VIEW OBJECT? identifier AS interfaceType SEMI
|
2026-09-17 14:34:16 -07:00
|
|
|
| MAX identifier INTEGER SEMI
|
|
|
|
|
| ALLOW interfaceType DOT identifier identifier stringLiteral SEMI
|
|
|
|
|
| WATCH SEMI
|
|
|
|
|
| POLL INTEGER stringLiteral SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-22 15:41:27 -07:00
|
|
|
fragmentVariable : identifier TO identifier SEMI;
|
|
|
|
|
|
2026-09-03 15:46:52 -07:00
|
|
|
packageOperationExport
|
2026-09-16 00:12:39 -07:00
|
|
|
: OPERATION identifier typeParameters? ID stringLiteral COLON valueType ARROW valueType
|
2026-09-27 22:06:12 -07:00
|
|
|
MODE operationMode executionClause? eventClause? RECEIVER receiverRequirement dependencyBlock? preparationClause? acceptanceClause? SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
packageFunctionExport
|
2026-09-16 00:12:39 -07:00
|
|
|
: FUNCTION identifier typeParameters? ID stringLiteral COLON valueType ARROW valueType
|
2026-09-27 22:06:12 -07:00
|
|
|
executionClause? dependencyBlock? preparationClause? acceptanceClause? SEMI
|
2026-09-20 21:51:43 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
acceptanceClause
|
|
|
|
|
: ACCEPT USING identifier
|
2026-09-19 21:52:37 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-27 22:06:12 -07:00
|
|
|
preparationClause
|
|
|
|
|
: PREPARES CREATION identifier USING stringLiteral
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-19 21:52:37 -07:00
|
|
|
executionClause
|
|
|
|
|
: EXECUTION REMOTE
|
|
|
|
|
| EXECUTION (SNAPSHOT | TRANSACTION) TARGETS LBRACK identifierList RBRACK
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
selectedOperations
|
|
|
|
|
: USING LBRACK memberOperationRef (COMMA memberOperationRef)* RBRACK
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
packageConstructorExport
|
|
|
|
|
: CONSTRUCTOR identifier ID stringLiteral CONSTRUCTS identifier COLON valueType
|
|
|
|
|
dependencyBlock? SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
eventClause
|
|
|
|
|
: EMITS valueType
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
operationMode
|
|
|
|
|
: CALL
|
|
|
|
|
| WATCH_START
|
|
|
|
|
| WATCH_STOP
|
|
|
|
|
| SUBSCRIBE
|
|
|
|
|
| UNSUBSCRIBE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
receiverRequirement
|
|
|
|
|
: ANY
|
|
|
|
|
| ATOM identifier
|
2026-09-16 00:12:39 -07:00
|
|
|
| OBJECT identifier
|
|
|
|
|
| INTERFACES LBRACK (interfaceType (COMMA interfaceType)*)? RBRACK
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
identifierList
|
|
|
|
|
: identifier (COMMA identifier)*
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
dependencyBlock
|
|
|
|
|
: REQUIRES LBRACE dependencyPort* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
dependencyPort
|
2026-09-18 18:54:09 -07:00
|
|
|
: REFLECTION identifier ID stringLiteral LBRACK identifierList RBRACK SEMI
|
|
|
|
|
| STATE identifier ID stringLiteral COLON valueType primitiveList SEMI
|
2026-09-25 11:37:27 -07:00
|
|
|
| EDGE identifier ID stringLiteral COLON cardinality targetConstraint (KEYED stringLiteral)? primitiveList SEMI
|
2026-09-20 22:05:59 -07:00
|
|
|
| INTERFACE identifier ID stringLiteral COLON identifier typeArguments? selectedOperations? (FROM INPUT)? SEMI
|
2026-09-19 22:09:55 -07:00
|
|
|
| CREATION identifier ID stringLiteral COLON identifier INPUT valueType SEMI
|
2026-09-08 14:27:24 -07:00
|
|
|
| CONSTRUCTOR identifier ID stringLiteral COLON identifier (INPUT valueType)? SEMI
|
2026-09-17 14:34:16 -07:00
|
|
|
| QUERY identifier ID stringLiteral COLON identifier DOT identifier SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
primitiveList
|
|
|
|
|
: LBRACK primitive (COMMA primitive)* RBRACK
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
primitive
|
|
|
|
|
: READ
|
|
|
|
|
| WRITE
|
2026-09-19 22:20:55 -07:00
|
|
|
| EDIT
|
2026-09-03 15:46:52 -07:00
|
|
|
| RESOLVE
|
|
|
|
|
| CONNECT
|
|
|
|
|
| DISCONNECT
|
|
|
|
|
| WATCH_START
|
|
|
|
|
| WATCH_STOP
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
sharedAttachmentDecl
|
|
|
|
|
: SHARED attachmentDecl
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
attachmentDecl
|
|
|
|
|
: stateDecl
|
|
|
|
|
| edgeDecl
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
stateDecl
|
|
|
|
|
: STATE identifier ID stringLiteral ON identifier COLON valueType
|
|
|
|
|
POLICY storagePolicy (DEFAULT jsonLiteral)? SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
storagePolicy
|
2026-09-19 22:09:55 -07:00
|
|
|
: REGISTER
|
2026-09-03 15:46:52 -07:00
|
|
|
| CRDT LPAREN valueType RPAREN
|
2026-09-28 17:20:35 -07:00
|
|
|
| JOURNAL jsonObject
|
|
|
|
|
| SUBSCRIPTION LPAREN valueType RPAREN
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
edgeDecl
|
|
|
|
|
: EDGE identifier ID stringLiteral LBRACE edgeEndpoint edgeEndpoint RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
edgeEndpoint
|
2026-09-10 18:27:41 -07:00
|
|
|
: targetConstraint PROJECTION identifier ID stringLiteral cardinality ORDERED?
|
|
|
|
|
(ON_DELETE stringLiteral)? RETAIN_OTHER? (KEYED stringLiteral)? PUBLIC_TRAVERSAL? SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
conformanceDecl
|
2026-09-23 00:01:03 -07:00
|
|
|
: CONFORM typeParameters? identifier conformanceSourceArguments? AS identifier typeArguments? (ID stringLiteral)? (SEMANTIC_MAJOR INTEGER)?
|
2026-09-10 18:27:41 -07:00
|
|
|
LBRACE conformanceItem* RBRACE
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-23 00:01:03 -07:00
|
|
|
conformanceSourceArguments
|
|
|
|
|
: typeArguments
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-03 15:46:52 -07:00
|
|
|
conformanceItem
|
|
|
|
|
: PRIVATE attachmentDecl
|
|
|
|
|
| operationBindingDecl
|
2026-09-16 11:25:20 -07:00
|
|
|
| stateFieldBindingDecl
|
2026-09-19 22:09:55 -07:00
|
|
|
| initializationDecl
|
2026-09-04 21:03:09 -07:00
|
|
|
| relationshipMaterializationDecl
|
2026-09-22 13:16:23 -07:00
|
|
|
| moduleBindingDecl
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
moduleBindingDecl
|
|
|
|
|
: BIND identifier TO identifier DOT identifier SEMI
|
2026-09-04 21:03:09 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-19 22:09:55 -07:00
|
|
|
initializationDecl
|
|
|
|
|
: INITIALIZE LBRACE initializationField* RBRACE SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
initializationField
|
|
|
|
|
: identifier TO STATE identifier SEMI
|
|
|
|
|
| identifier TO EDGE identifier DOT identifier SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
creationOwnerMapping
|
|
|
|
|
: interfaceType FROM INPUT (DOT identifier)* SEMI
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-16 11:25:20 -07:00
|
|
|
stateFieldBindingDecl
|
|
|
|
|
: BIND identifier TO STATE identifier SEMI
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-04 21:03:09 -07:00
|
|
|
relationshipMaterializationDecl
|
|
|
|
|
: MATERIALIZE identifier IF ABSENT USING CONSTRUCTOR identifier VIA EDGE identifier DOT identifier SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
operationBindingDecl
|
2026-09-17 14:34:16 -07:00
|
|
|
: BIND memberOperationRef TO operationProvider (QUERY_REASON stringLiteral)? SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
memberOperationRef
|
|
|
|
|
: identifier DOT operationName
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
operationName
|
|
|
|
|
: identifier
|
|
|
|
|
| CALL
|
|
|
|
|
| GET
|
|
|
|
|
| SET
|
2026-09-19 22:20:55 -07:00
|
|
|
| EDIT
|
2026-09-03 15:46:52 -07:00
|
|
|
| RESOLVE
|
|
|
|
|
| CONNECT
|
|
|
|
|
| DISCONNECT
|
|
|
|
|
| WATCH_START
|
|
|
|
|
| WATCH_STOP
|
|
|
|
|
| SUBSCRIBE
|
|
|
|
|
| UNSUBSCRIBE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
operationProvider
|
2026-09-20 22:41:51 -07:00
|
|
|
: LIFECYCLE DOT identifier
|
2026-09-28 17:20:35 -07:00
|
|
|
| JOURNAL identifier DOT identifier
|
|
|
|
|
| SUBSCRIPTION identifier DOT identifier
|
2026-09-20 22:41:51 -07:00
|
|
|
| STATE identifier DOT statePrimitive
|
2026-09-03 15:46:52 -07:00
|
|
|
| EDGE identifier DOT identifier DOT edgePrimitive
|
2026-09-18 16:59:19 -07:00
|
|
|
| INTERFACE identifier typeArguments? DOT memberOperationRef
|
2026-09-20 21:51:43 -07:00
|
|
|
| PACKAGE identifier DOT identifier typeArguments? dependencyBindingBlock? acceptanceBinding?
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
acceptanceBinding
|
|
|
|
|
: ACCEPT dependencyBindingBlock
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
statePrimitive
|
|
|
|
|
: READ
|
|
|
|
|
| WRITE
|
2026-09-19 22:20:55 -07:00
|
|
|
| EDIT
|
2026-09-03 15:46:52 -07:00
|
|
|
| WATCH_START
|
|
|
|
|
| WATCH_STOP
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
edgePrimitive
|
|
|
|
|
: RESOLVE
|
|
|
|
|
| CONNECT
|
|
|
|
|
| DISCONNECT
|
|
|
|
|
| WATCH_START
|
|
|
|
|
| WATCH_STOP
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
dependencyBindingBlock
|
|
|
|
|
: WITH LBRACE dependencyBinding* RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
dependencyBinding
|
2026-09-18 18:54:09 -07:00
|
|
|
: identifier TO WORKSPACE REFLECTION LBRACK identifierList RBRACK SEMI
|
|
|
|
|
| identifier TO STATE identifier (VIA EDGE identifier DOT identifier)? SEMI
|
2026-09-04 21:03:09 -07:00
|
|
|
| identifier TO EDGE identifier DOT identifier (VIA EDGE identifier DOT identifier)? SEMI
|
2026-09-20 22:05:59 -07:00
|
|
|
| identifier TO INTERFACE identifier typeArguments? ((VIA EDGE identifier DOT identifier) | (FROM INPUT))? SEMI
|
2026-09-19 22:09:55 -07:00
|
|
|
| identifier TO CREATION identifier WITH LBRACE creationOwnerMapping* RBRACE SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
| identifier TO CONSTRUCTOR identifier SEMI
|
2026-09-18 14:55:12 -07:00
|
|
|
| identifier TO WORKSPACE? QUERY identifier DOT identifier (VIA EDGE identifier DOT identifier)? SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
constructorBindingDecl
|
|
|
|
|
: CONSTRUCTOR identifier TO identifier DOT identifier dependencyBindingBlock? SEMI
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
valueType
|
|
|
|
|
: scalarType
|
|
|
|
|
| UNIT
|
|
|
|
|
| WATCH_HANDLE
|
|
|
|
|
| MESSAGE stringLiteral
|
|
|
|
|
| ATOM_REF LT identifier GT
|
2026-09-16 00:12:39 -07:00
|
|
|
| INTERFACE_REF LT identifier typeArguments? GT
|
|
|
|
|
| REF LT identifier GT
|
2026-09-03 15:46:52 -07:00
|
|
|
| OPTIONAL LT valueType GT
|
|
|
|
|
| LIST LT valueType GT
|
2026-09-13 16:30:17 -07:00
|
|
|
| RECORD LBRACE recordField* RBRACE
|
2026-09-27 22:06:12 -07:00
|
|
|
| VARIANT ID stringLiteral LBRACE variantCase+ RBRACE
|
2026-09-16 00:12:39 -07:00
|
|
|
| identifier typeArguments?
|
2026-09-13 16:30:17 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
recordField
|
|
|
|
|
: identifier COLON valueType SEMI
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
2026-09-27 22:06:12 -07:00
|
|
|
variantCase
|
|
|
|
|
: identifier ID stringLiteral COLON valueType SEMI
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-03 15:46:52 -07:00
|
|
|
scalarType
|
|
|
|
|
: BOOL
|
|
|
|
|
| BYTES
|
|
|
|
|
| DOUBLE
|
|
|
|
|
| INT32
|
|
|
|
|
| INT64
|
|
|
|
|
| STRING
|
|
|
|
|
| UINT32
|
|
|
|
|
| UINT64
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
cardinality
|
|
|
|
|
: OPTIONAL_ONE
|
|
|
|
|
| EXACTLY_ONE
|
|
|
|
|
| MANY
|
|
|
|
|
| MANY_UNIQUE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
jsonLiteral
|
|
|
|
|
: stringLiteral
|
|
|
|
|
| INTEGER
|
|
|
|
|
| JSON_NUMBER
|
|
|
|
|
| TRUE
|
|
|
|
|
| FALSE
|
|
|
|
|
| NULL
|
|
|
|
|
| jsonObject
|
|
|
|
|
| jsonArray
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
jsonObject
|
|
|
|
|
: LBRACE (jsonMember (COMMA jsonMember)*)? RBRACE
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
jsonMember
|
|
|
|
|
: stringLiteral COLON jsonLiteral
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
jsonArray
|
|
|
|
|
: LBRACK (jsonLiteral (COMMA jsonLiteral)*)? RBRACK
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
identifier
|
|
|
|
|
: IDENTIFIER
|
2026-09-19 22:20:55 -07:00
|
|
|
| START
|
|
|
|
|
| STOP
|
|
|
|
|
| EDIT
|
|
|
|
|
| CREATION
|
|
|
|
|
| INITIALIZE
|
|
|
|
|
| EXECUTION
|
|
|
|
|
| SNAPSHOT
|
|
|
|
|
| TRANSACTION
|
|
|
|
|
| REMOTE
|
|
|
|
|
| TARGETS
|
|
|
|
|
| PORTABLE
|
|
|
|
|
| REPLICA
|
|
|
|
|
| LOCAL
|
|
|
|
|
| FROM
|
|
|
|
|
| REGISTER
|
2026-09-18 18:54:09 -07:00
|
|
|
| INTERFACES
|
|
|
|
|
| REFLECTION
|
2026-09-03 15:46:52 -07:00
|
|
|
| SOURCE
|
2026-09-17 14:34:16 -07:00
|
|
|
| QUERY
|
2026-09-17 14:34:16 -07:00
|
|
|
| SPECIALIZE
|
2026-09-17 14:34:16 -07:00
|
|
|
| ROOT
|
|
|
|
|
| DOCUMENT
|
|
|
|
|
| FRAGMENTS
|
2026-09-22 15:41:27 -07:00
|
|
|
| FRAGMENT
|
2026-09-17 14:34:16 -07:00
|
|
|
| VIEW
|
|
|
|
|
| MAX
|
|
|
|
|
| ALLOW
|
|
|
|
|
| POLL
|
|
|
|
|
| RPC
|
|
|
|
|
| QUERYABLE
|
2026-09-17 23:05:35 -07:00
|
|
|
| RESULT_BYTES
|
|
|
|
|
| RPC_CALLS
|
|
|
|
|
| DEADLINE_MS
|
2026-09-21 11:23:26 -07:00
|
|
|
| PRESENTATION
|
|
|
|
|
| SUBJECT
|
2026-09-28 17:20:35 -07:00
|
|
|
| MESSAGE
|
|
|
|
|
| JOURNAL
|
|
|
|
|
| SUBSCRIPTION
|
|
|
|
|
| CONNECT
|
2026-09-21 11:23:26 -07:00
|
|
|
| FOR
|
2026-09-03 15:46:52 -07:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
stringLiteral
|
|
|
|
|
: STRING_LITERAL
|
|
|
|
|
;
|
|
|
|
|
|
2026-09-19 22:20:55 -07:00
|
|
|
EDIT: 'edit';
|
2026-09-22 13:16:23 -07:00
|
|
|
MODULE: 'module';
|
|
|
|
|
CONTRACT: 'contract';
|
2026-09-21 11:23:26 -07:00
|
|
|
PRESENTATION: 'presentation';
|
|
|
|
|
SUBJECT: 'subject';
|
|
|
|
|
FOR: 'for';
|
2026-09-19 22:09:55 -07:00
|
|
|
CREATION: 'creation';
|
2026-09-27 22:06:12 -07:00
|
|
|
VARIANT: 'variant';
|
|
|
|
|
PREPARES: 'prepares';
|
2026-09-19 22:09:55 -07:00
|
|
|
INITIALIZE: 'initialize';
|
2026-09-03 15:46:52 -07:00
|
|
|
WORKSPACE: 'workspace';
|
2026-09-19 21:52:37 -07:00
|
|
|
EXECUTION: 'execution';
|
|
|
|
|
SNAPSHOT: 'snapshot';
|
|
|
|
|
TRANSACTION: 'transaction';
|
|
|
|
|
REMOTE: 'remote';
|
|
|
|
|
TARGETS: 'targets';
|
|
|
|
|
PORTABLE: 'portable';
|
|
|
|
|
REPLICA: 'replica';
|
|
|
|
|
LOCAL: 'local';
|
|
|
|
|
FROM: 'from';
|
2026-09-17 23:05:35 -07:00
|
|
|
RESULT_BYTES: 'result-bytes';
|
|
|
|
|
RPC_CALLS: 'rpc-calls';
|
|
|
|
|
DEADLINE_MS: 'deadline-ms';
|
2026-09-17 14:34:16 -07:00
|
|
|
QUERY: 'query';
|
2026-09-18 18:54:09 -07:00
|
|
|
REFLECTION: 'reflection';
|
2026-09-17 14:34:16 -07:00
|
|
|
SPECIALIZE: 'specialize';
|
2026-09-17 14:34:16 -07:00
|
|
|
ROOT: 'root';
|
|
|
|
|
DOCUMENT: 'document';
|
|
|
|
|
FRAGMENTS: 'fragments';
|
|
|
|
|
VIEW: 'view';
|
|
|
|
|
MAX: 'max';
|
|
|
|
|
ALLOW: 'allow';
|
|
|
|
|
POLL: 'poll';
|
|
|
|
|
QUERYABLE: 'queryable';
|
|
|
|
|
RPC: 'rpc';
|
|
|
|
|
QUERY_REASON: 'query-reason';
|
2026-09-16 00:12:39 -07:00
|
|
|
TYPE: 'type';
|
|
|
|
|
OBJECT: 'object';
|
|
|
|
|
STORABLE: 'storable';
|
|
|
|
|
IMPLEMENTS: 'implements';
|
|
|
|
|
REF: 'ref';
|
2026-09-08 14:27:24 -07:00
|
|
|
FRAGMENT: 'fragment';
|
2026-09-05 12:33:52 -07:00
|
|
|
IMPORT: 'import';
|
|
|
|
|
EXTERNAL: 'external';
|
2026-09-03 15:46:52 -07:00
|
|
|
ATOM: 'atom';
|
|
|
|
|
INTERFACE: 'interface';
|
|
|
|
|
INTERFACES: 'interfaces';
|
|
|
|
|
PACKAGE: 'package';
|
|
|
|
|
VALUE: 'value';
|
2026-09-28 10:28:49 -07:00
|
|
|
FIELD: 'field';
|
2026-09-03 15:46:52 -07:00
|
|
|
RELATION: 'relation';
|
|
|
|
|
OPERATION: 'operation';
|
|
|
|
|
FUNCTION: 'function';
|
|
|
|
|
CONSTRUCTOR: 'constructor';
|
|
|
|
|
CONSTRUCTS: 'constructs';
|
2026-09-08 14:27:24 -07:00
|
|
|
INPUT: 'input';
|
2026-09-03 15:46:52 -07:00
|
|
|
CONFORM: 'conform';
|
|
|
|
|
AS: 'as';
|
|
|
|
|
BIND: 'bind';
|
2026-09-16 11:25:20 -07:00
|
|
|
STATIC: 'static';
|
2026-09-03 15:46:52 -07:00
|
|
|
TO: 'to';
|
|
|
|
|
PRIVATE: 'private';
|
|
|
|
|
SHARED: 'shared';
|
|
|
|
|
STATE: 'state';
|
|
|
|
|
EDGE: 'edge';
|
|
|
|
|
PROJECTION: 'projection';
|
|
|
|
|
WITH: 'with';
|
2026-09-04 21:03:09 -07:00
|
|
|
USING: 'using';
|
2026-09-20 21:51:43 -07:00
|
|
|
ACCEPT: 'accept';
|
2026-09-04 21:03:09 -07:00
|
|
|
VIA: 'via';
|
|
|
|
|
MATERIALIZE: 'materialize';
|
|
|
|
|
IF: 'if';
|
|
|
|
|
ABSENT: 'absent';
|
2026-09-03 15:46:52 -07:00
|
|
|
ON: 'on';
|
|
|
|
|
POLICY: 'policy';
|
|
|
|
|
DEFAULT: 'default';
|
|
|
|
|
SOURCE: 'source';
|
|
|
|
|
REPOSITORY: 'repository';
|
|
|
|
|
COMMIT: 'commit';
|
|
|
|
|
REVISION: 'revision';
|
2026-09-10 18:27:41 -07:00
|
|
|
SEMANTIC_MAJOR: 'semantic-major';
|
|
|
|
|
ON_DELETE: 'on-delete';
|
2026-09-20 22:41:51 -07:00
|
|
|
LIFECYCLE: 'lifecycle';
|
2026-09-28 17:20:35 -07:00
|
|
|
JOURNAL: 'journal';
|
|
|
|
|
SUBSCRIPTION: 'subscription';
|
2026-09-10 18:27:41 -07:00
|
|
|
RETAIN_OTHER: 'retain-other';
|
|
|
|
|
KEYED: 'keyed';
|
|
|
|
|
PUBLIC_TRAVERSAL: 'public-traversal';
|
2026-09-03 15:46:52 -07:00
|
|
|
ID: 'id';
|
|
|
|
|
DOC: 'doc';
|
|
|
|
|
MODE: 'mode';
|
|
|
|
|
EMITS: 'emits';
|
|
|
|
|
RECEIVER: 'receiver';
|
|
|
|
|
REQUIRES: 'requires';
|
|
|
|
|
ANY: 'any';
|
|
|
|
|
GET: 'get';
|
|
|
|
|
SET: 'set';
|
|
|
|
|
WATCH: 'watch';
|
|
|
|
|
START: 'start';
|
|
|
|
|
STOP: 'stop';
|
|
|
|
|
READ: 'read';
|
|
|
|
|
WRITE: 'write';
|
|
|
|
|
RESOLVE: 'resolve';
|
|
|
|
|
CONNECT: 'connect';
|
|
|
|
|
DISCONNECT: 'disconnect';
|
|
|
|
|
CALL: 'call';
|
|
|
|
|
WATCH_START: 'watch-start';
|
|
|
|
|
WATCH_STOP: 'watch-stop';
|
|
|
|
|
SUBSCRIBE: 'subscribe';
|
|
|
|
|
UNSUBSCRIBE: 'unsubscribe';
|
2026-09-19 22:09:55 -07:00
|
|
|
REGISTER: 'register';
|
2026-09-03 15:46:52 -07:00
|
|
|
CRDT: 'crdt';
|
|
|
|
|
OPTIONAL_ONE: 'optional-one';
|
|
|
|
|
EXACTLY_ONE: 'exactly-one';
|
|
|
|
|
MANY_UNIQUE: 'many-unique';
|
|
|
|
|
MANY: 'many';
|
|
|
|
|
ORDERED: 'ordered';
|
|
|
|
|
UNIT: 'unit';
|
|
|
|
|
WATCH_HANDLE: 'watch-handle';
|
|
|
|
|
MESSAGE: 'message';
|
|
|
|
|
ATOM_REF: 'atom-ref';
|
|
|
|
|
INTERFACE_REF: 'interface-ref';
|
|
|
|
|
OPTIONAL: 'optional';
|
|
|
|
|
LIST: 'list';
|
2026-09-13 16:30:17 -07:00
|
|
|
RECORD: 'record';
|
2026-09-03 15:46:52 -07:00
|
|
|
BOOL: 'bool';
|
|
|
|
|
BYTES: 'bytes';
|
|
|
|
|
DOUBLE: 'double';
|
|
|
|
|
INT32: 'int32';
|
|
|
|
|
INT64: 'int64';
|
|
|
|
|
STRING: 'string';
|
|
|
|
|
UINT32: 'uint32';
|
|
|
|
|
UINT64: 'uint64';
|
|
|
|
|
TRUE: 'true';
|
|
|
|
|
FALSE: 'false';
|
|
|
|
|
NULL: 'null';
|
|
|
|
|
|
|
|
|
|
ARROW: '->';
|
|
|
|
|
COLON: ':';
|
|
|
|
|
SEMI: ';';
|
|
|
|
|
COMMA: ',';
|
|
|
|
|
DOT: '.';
|
|
|
|
|
LBRACE: '{';
|
|
|
|
|
RBRACE: '}';
|
|
|
|
|
LBRACK: '[';
|
|
|
|
|
RBRACK: ']';
|
|
|
|
|
LPAREN: '(';
|
|
|
|
|
RPAREN: ')';
|
|
|
|
|
LT: '<';
|
|
|
|
|
GT: '>';
|
2026-09-16 00:12:39 -07:00
|
|
|
AMP: '&';
|
|
|
|
|
EQUAL: '=';
|
2026-09-03 15:46:52 -07:00
|
|
|
|
|
|
|
|
INTEGER: '-'? [0-9]+;
|
|
|
|
|
JSON_NUMBER: '-'? ('0' | [1-9] [0-9]*) ('.' [0-9]+)? ([eE] [+-]? [0-9]+)?;
|
|
|
|
|
IDENTIFIER: [A-Za-z_] [A-Za-z0-9_]*;
|
|
|
|
|
STRING_LITERAL: '"' (ESC | ~["\\\r\n])* '"';
|
|
|
|
|
fragment ESC: '\\' (["\\/bfnrt] | 'u' HEX HEX HEX HEX);
|
|
|
|
|
fragment HEX: [0-9a-fA-F];
|
|
|
|
|
|
2026-09-08 14:27:24 -07:00
|
|
|
LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN);
|
|
|
|
|
BLOCK_COMMENT: '/*' .*? '*/' -> channel(HIDDEN);
|
|
|
|
|
WS: [ \t\r\n]+ -> channel(HIDDEN);
|