You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
moduleBody ::= (import | predicate | class | module | alias | select)*
185
+
moduleBody ::= (import | predicate | class | module | signature | alias | select)*
186
186
187
187
A module definition extends the current module's declared module environment with a mapping from the module name to the module definition.
188
188
@@ -334,6 +334,40 @@ Active types
334
334
335
335
In a QL program, the *active* types are those defined in active modules. In the remainder of this specification, any reference to the types in the program refers only to the active types.
336
336
337
+
338
+
Signatures
339
+
----------
340
+
341
+
Signature definitions
342
+
~~~~~~~~~~~~~~~~~~~~~
343
+
344
+
A QL signature definition has the following syntax:
A predicate signature definition extends the current module's declared predicate signature environment with a mapping from the predicate signature name and arity to the predicate signature definition.
366
+
367
+
A type signature definition extends the current module's declared type signature environment with a mapping from the type signature name to the type signature definition.
368
+
369
+
A module signature definition extends the current module's declared module signature environment with a mapping from the module signature name to the module signature definition.
370
+
337
371
Values
338
372
------
339
373
@@ -2089,6 +2123,22 @@ The complete grammar for QL is as follows:
2089
2123
2090
2124
argument ::= moduleExpr | type | predicateRef "/" int
0 commit comments