From 3153dc7c6281f005362783f309a0edf67ca9be0c Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 7 Nov 2023 21:02:33 +0100 Subject: [PATCH] More demo --- .../preserves/preserves/tests/test-pexprs.rkt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/implementations/racket/preserves/preserves/tests/test-pexprs.rkt b/implementations/racket/preserves/preserves/tests/test-pexprs.rkt index 412d954..074d6a3 100644 --- a/implementations/racket/preserves/preserves/tests/test-pexprs.rkt +++ b/implementations/racket/preserves/preserves/tests/test-pexprs.rkt @@ -104,6 +104,40 @@ export default [ ENDDOC ) +(define T #< string, + "rules": { @ string: Rule, ... }, + optional "extras": [Rule ...], + optional "externals": [Rule ...], + optional "inline": [@ string ...], + optional "conflicts": [@ string ...], + optional "word": @ string, + optional "supertypes": [string ...], +}; + +Rule = +/ @alias { "type": "ALIAS", "named": bool, "value": string, "content": Rule } +/ @blank { "type": "BLANK" } +/ @string { "type": "STRING", "value": string } +/ @pattern { "type": "PATTERN", "value": string } +/ @symbol { "type": "SYMBOL", "name": string } +/ @seq { "type": "SEQ", "members": [Rule ...] } +/ @choice { "type": "CHOICE", "members": [Rule ...] } +/ @repeat1 { "type": "REPEAT1", "content": Rule } +/ @repeat { "type": "REPEAT", "content": Rule } +/ @token { "type": TokenType, "content": Rule } +/ @field { "type": "FIELD", "name": string, "content": Rule } +/ @prec { "type": PrecType, "value": int, "content": Rule } +; + +TokenType = "TOKEN" / "IMMEDIATE_TOKEN"; +PrecType = "PREC" / "PREC_LEFT" / "PREC_RIGHT" / "PREC_DYNAMIC"; +ENDDOC + ) + (parameterize ((pretty-print-columns 80)) (write-pexprs (string->pexprs P #:read-syntax? #t)) (newline)) (parameterize ((pretty-print-columns 10)) (write-pexprs (string->pexprs P #:read-syntax? #t)) (newline)) @@ -113,3 +147,5 @@ ENDDOC (parameterize ((pretty-print-columns 40)) (write-pexprs (string->pexprs R #:read-syntax? #t)) (newline)) (parameterize ((pretty-print-columns 40)) (write-pexprs (string->pexprs S #:read-syntax? #t)) (newline)) + +(parameterize ((pretty-print-columns 40)) (write-pexprs (string->pexprs T #:read-syntax? #t)) (newline))