beautiful-racket/beautiful-racket/br/demo/hdl/parser.rkt
Matthew Butterick 7617fbb94d adjust parser
2016-05-19 18:20:49 -07:00

29 lines
523 B
Racket

#lang brag
chip-program : /"CHIP" chipname /"{" in-spec out-spec part-spec /"}"
@chipname : ID
in-spec : pin-spec
out-spec : pin-spec
@pin-spec : (/"IN" | /"OUT") pin [/"," pin]* /";"
/pin : ID [/"[" NUMBER /"]"]
@part-spec : /"PARTS:" part+
part : partname /"(" pin-val-pair [/"," pin-val-pair]* /")" /";"
@partname : ID
/pin-val-pair : ID [/"[" bus-range /"]"] /"=" pin-val
@bus-range : NUMBER [/"." /"." NUMBER]
@pin-val : ID [/"[" bus-range /"]"]
| BINARY-NUMBER
| TRUE
| FALSE