Typos:

- "*" remove a bound ==> "*" removes a bound
- All examples should read (versions ...), not (version ...)

~slg

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, December 16, 2020 6:27 PM, Sage Gerard <s...@sagegerard.com> 
wrote:

> I'm trying to learn how to write syntax classes. My intended macro expresses 
> a set of Racket versions, either as inclusive intervals or as exact versions. 
> In an interval, "*" remove a bound.
>
> - (version "6.5") means exactly version "6.5", as does (version ("6.5" "6.5"))
>
> - (versions ("7.0" "7.7.0.5")) means the inclusive interval between version 
> 7.0 and 7.7.0.5
> - (versions ("7.0" "7.7.0.5") "6.5"): union of the above two items
> - (versions ("6.0" "*")): all Racket versions >= 6.0
> - (versions "*"), (versions ("*" "*")): all Racket versions
>
> I was able to define the syntax class without much issue:
>
> (define-syntax-class racket-version-selection
> #:attributes (min max)
> (pattern (min:string max:string))
> (pattern (~and (~var v string)
> (~bind [min #'v]
> [max #'v]))))
>
> Now I want each attribute-bound expression V to satisfy (or (valid-version? 
> V) (equal? V "*")). Where I'm stuck is how I can use #:declare with (expr/c) 
> here. From what I understand, expr/c does not really mean much because it 
> accepts an expression (as in the expr syntax-class), not attributes.
>
> The only way I can think to fix this is to perform an additional syntax-parse 
> so that I can use the attributes in an expression for expr/c to consume. But 
> is it possible to do everything I'm thinking of in just one syntax class?
>
> ~slg
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> [https://groups.google.com/d/msgid/racket-users/syiNcw0zJpSyA16fO8OkClrQmXFOC4qZEwrBm3JwETX-bGJGlALnP6Apn4ttCbIzMZUoobO7AT4MyRDm9ID0oUA648nXXSAZ1nvaCaj2NbI%3D%40sagegerard.com](https://groups.google.com/d/msgid/racket-users/syiNcw0zJpSyA16fO8OkClrQmXFOC4qZEwrBm3JwETX-bGJGlALnP6Apn4ttCbIzMZUoobO7AT4MyRDm9ID0oUA648nXXSAZ1nvaCaj2NbI%3D%40sagegerard.com?utm_medium=email&utm_source=footer).

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/nfmcqQmNc3_H9zeCyS49LELvXomDYQF2sJbmyrJchu0kiWG8CXJiyS932ZfQ_eSW3cnEYTTzOwqakNlKL4FF_KR4F7HnAARLdQLDVEGxSI0%3D%40sagegerard.com.

Reply via email to