Update schemas for new embedded syntax; steps toward pattern support

This commit is contained in:
Tony Garnock-Jones 2021-06-02 06:57:48 +02:00
parent a2264b0c63
commit 5c97661c73
9 changed files with 43 additions and 12 deletions

View File

@ -6,12 +6,15 @@
(require preserves-schema/bin/preserves-schema-rkt)
(require (only-in racket/file delete-directory/files))
(require (only-in "../schema-compiler.rkt" schema-compiler-plugin))
(define (pre-installer _collects-path syndicate-path)
(define output-directory (build-path syndicate-path "schemas/gen"))
(delete-directory/files output-directory #:must-exist? #f)
(batch-compile #:inputs (list (build-path syndicate-path "schemas/**.prs"))
#:additional-modules (hash '(Actor) 'syndicate/actor)
#:output-directory output-directory))
#:output-directory output-directory
#:plugins (list schema-compiler-plugin)))
(define-runtime-path syndicate-path "..")
(define (regenerate!)

View File

@ -0,0 +1,15 @@
#lang racket/base
(provide schema-compiler-plugin)
(require racket/match)
(require preserves-schema/compiler)
(define (schema-compiler-plugin schema options)
(match-define (schema-compiler-options _name
lookup-module-path
paths) options)
(define ds-path (lookup-module-path '(dataspace-patterns)))
(if (equal? ds-path (schema-translation-paths-relative-output-path paths))
`(begin)
`(begin (require (prefix-in :pat: ,ds-path)))))

View File

@ -0,0 +1,11 @@
version 1 .
; Dataspace patterns: a sublanguage of attenuation patterns.
Pattern = DDiscard / DBind / DLit / DCompound .
DDiscard = <_>.
DBind = <bind @name symbol @pattern Pattern>.
DLit = <lit @value any>.
DCompound = @rec <compound <rec @label any @arity int> @members { int: Pattern ...:... }>
/ @arr <compound <arr @arity int> @members { int: Pattern ...:... }>
/ @dict <compound <dict> @members { any: Pattern ...:... }> .

View File

@ -1,9 +1,4 @@
version 1 .
embeddedType Actor.Ref .
;As implemented
Observe = <Observe @label symbol @observer embedded>.
; ;As will be implemented soon
; Observe = <Observe @pattern Pattern @observer embedded>.
.
Observe = <Observe @pattern dataspace-patterns.Pattern @observer #!any>.

View File

@ -1,5 +1,5 @@
version 1 .
embeddedType Actor.Ref .
Resolve = <resolve @sturdyref sturdy.SturdyRef @observer embedded>.
Bind = <bind @oid any @key bytes @target embedded>.
Resolve = <resolve @sturdyref sturdy.SturdyRef @observer #!#!any>.
Bind = <bind @oid any @key bytes @target #!any>.

View File

@ -11,4 +11,4 @@ TurnEvent = [@oid Oid @event Event].
Assert = <assert @assertion Assertion @handle Handle>.
Retract = <retract @handle Handle>.
Message = <message @body Assertion>.
Sync = <sync @peer embedded>.
Sync = <sync @peer #!#t>.

View File

@ -3,9 +3,16 @@ embeddedType Actor.Ref .
UserId = int .
Join = <joinedUser @uid UserId @handle embedded>.
Join = <joinedUser @uid UserId @handle #!Session>.
NickClaim = <claimNick @uid UserId @name string @k embedded>.
Session = @observeUsers <Observe =user @observer #!UserInfo>
/ @observeSpeech <Observe =says @observer #!Says>
/ NickClaim
/ Says
.
NickClaim = <claimNick @uid UserId @name string @k #!NickClaimResponse>.
NickClaimResponse = #t / NickConflict .
UserInfo = <user @uid UserId @name string>.