More demo

This commit is contained in:
Tony Garnock-Jones 2023-11-07 21:02:33 +01:00
parent 5edcca1e7f
commit 3153dc7c62
1 changed files with 36 additions and 0 deletions

View File

@ -104,6 +104,40 @@ export default [
ENDDOC
)
(define T #<<ENDDOC
version 2;
Grammar = {
"name": @<regexp "^[a-zA-Z_]\\w*"> string,
"rules": { @<regexp "^[a-zA-Z_]\\w*$"> string: Rule, ... },
optional "extras": [Rule ...],
optional "externals": [Rule ...],
optional "inline": [@<regexp "^[a-zA-Z_]\\w*$"> string ...],
optional "conflicts": [@<regexp "^[a-zA-Z_]\\w*$"> string ...],
optional "word": @<regexp "^[a-zA-Z_]\\w*"> 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))