From 486443a0981275a4d7b82d0a15729e13e1bd7839 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sat, 19 Feb 2022 10:33:16 -0600 Subject: [PATCH] Remove submodule --- .gitmodules | 3 - schema.bin | 8 +++ schema.prs | 92 ++++++++++++++++++++++++++ src/preserves/preserves_schema_nim.nim | 2 +- src/preserves/schema.nim | 6 +- tests/test_schemas.nim | 4 +- upstream | 1 - 7 files changed, 106 insertions(+), 10 deletions(-) create mode 100644 schema.bin create mode 100644 schema.prs delete mode 160000 upstream diff --git a/.gitmodules b/.gitmodules index d556bfa..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "upstream"] - path = upstream - url = https://gitlab.com/preserves/preserves.git diff --git a/schema.bin b/schema.bin new file mode 100644 index 0000000..a248064 --- /dev/null +++ b/schema.bin @@ -0,0 +1,8 @@ +´³schema·³version‘³ definitions·³Ref´³rec´³lit³ref„´³tupleµ´³named³module´³refµ„³ +ModulePath„„´³named³name´³atom³Symbol„„„„„³Bundle´³rec´³lit³bundle„´³tupleµ´³named³modules´³refµ„³Modules„„„„„³Schema´³rec´³lit³schema„´³tupleµ´³dict·³version´³named³version´³refµ„³Version„„³ definitions´³named³ definitions´³refµ„³ Definitions„„³ embeddedType´³named³ embeddedType´³refµ„³EmbeddedTypeName„„„„„„„³Binding´³rec´³lit³named„´³tupleµ´³named³name´³atom³Symbol„„´³named³pattern´³refµ„³ SimplePattern„„„„„³Modules´³dictof´³refµ„³ +ModulePath„´³refµ„³Schema„„³Pattern´³orµµ± SimplePattern´³refµ„³ SimplePattern„„µ±CompoundPattern´³refµ„³CompoundPattern„„„„³Version´³lit‘„³AtomKind´³orµµ±Boolean´³lit³Boolean„„µ±Float´³lit³Float„„µ±Double´³lit³Double„„µ± SignedInteger´³lit³ SignedInteger„„µ±String´³lit³String„„µ± +ByteString´³lit³ +ByteString„„µ±Symbol´³lit³Symbol„„„„³ +Definition´³orµµ±or´³rec´³lit³or„´³tupleµ´³ tuplePrefixµ´³named³pattern0´³refµ„³NamedAlternative„„´³named³pattern1´³refµ„³NamedAlternative„„„´³named³patternN´³seqof´³refµ„³NamedAlternative„„„„„„„„µ±and´³rec´³lit³and„´³tupleµ´³ tuplePrefixµ´³named³pattern0´³refµ„³ NamedPattern„„´³named³pattern1´³refµ„³ NamedPattern„„„´³named³patternN´³seqof´³refµ„³ NamedPattern„„„„„„„„µ±Pattern´³refµ„³Pattern„„„„³ +ModulePath´³seqof´³atom³Symbol„„³ Definitions´³dictof´³atom³Symbol„´³refµ„³ +Definition„„³ NamedPattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³Pattern„„„„³ SimplePattern´³orµµ±any´³lit³any„„µ±atom´³rec´³lit³atom„´³tupleµ´³named³atomKind´³refµ„³AtomKind„„„„„„µ±embedded´³rec´³lit³embedded„´³tupleµ´³named³ interface´³refµ„³ SimplePattern„„„„„„µ±lit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„„µ±seqof´³rec´³lit³seqof„´³tupleµ´³named³pattern´³refµ„³ SimplePattern„„„„„„µ±setof´³rec´³lit³setof„´³tupleµ´³named³pattern´³refµ„³ SimplePattern„„„„„„µ±dictof´³rec´³lit³dictof„´³tupleµ´³named³key´³refµ„³ SimplePattern„„´³named³value´³refµ„³ SimplePattern„„„„„„µ±Ref´³refµ„³Ref„„„„³CompoundPattern´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label´³refµ„³ NamedPattern„„´³named³fields´³refµ„³ NamedPattern„„„„„„µ±tuple´³rec´³lit³tuple„´³tupleµ´³named³patterns´³seqof´³refµ„³ NamedPattern„„„„„„„µ± tuplePrefix´³rec´³lit³ tuplePrefix„´³tupleµ´³named³fixed´³seqof´³refµ„³ NamedPattern„„„´³named³variable´³refµ„³NamedSimplePattern„„„„„„µ±dict´³rec´³lit³dict„´³tupleµ´³named³entries´³refµ„³DictionaryEntries„„„„„„„„³EmbeddedTypeName´³orµµ±Ref´³refµ„³Ref„„µ±false´³lit€„„„„³NamedAlternative´³tupleµ´³named³ variantLabel´³atom³String„„´³named³pattern´³refµ„³Pattern„„„„³DictionaryEntries´³dictof³any´³refµ„³NamedSimplePattern„„³NamedSimplePattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³ SimplePattern„„„„„³ embeddedType€„„ \ No newline at end of file diff --git a/schema.prs b/schema.prs new file mode 100644 index 0000000..5db39dc --- /dev/null +++ b/schema.prs @@ -0,0 +1,92 @@ +@ + +; TODO: some kind of constants +; TODO: rename "version" to "schema-version" ? + +version 1 . + +Bundle = . +Modules = { ModulePath: Schema ...:... }. + +Schema = . + +; version 1 . +Version = 1 . + +EmbeddedTypeName = Ref / #f. + +Definitions = { symbol: Definition ...:... }. + +Definition = + ; Pattern / Pattern / ... + / + + ; Pattern & Pattern & ... + / + + ; Pattern + / Pattern +. + +Pattern = SimplePattern / CompoundPattern . + +SimplePattern = + ; any + / =any + + ; special builtins: bool, float, double, int, string, bytes, symbol + / + + ; matches an embedded value in the input: #!p + / + + ; =symbol, < any>, or plain non-symbol atom + / + + ; [p ...] ----> >; see also tuplePrefix below. + / + + ; #{p} ----> > + / + + ; {k: v, ...:...} ----> > + / + + ; symbol, symbol.symbol, symbol.symbol.symbol, ... + / Ref +. + +CompoundPattern = + ;