C++ should use more @`,!>

Started by
-1 comments, last by Cornstalks 11 years, 1 month ago

Here's a little sample from my Racket-based parser for parsing tokenized Python (uses Matt Might's derivative parser):


; <program> ::= (program <stmt>*)
(file_input      (@--> (seq! `(rep (or NEWLINE stmt)) ENDMARKER)
                       (? (seq) `(program ,@seq))))
 
; <funcdef> ::= (def (<NAME> <NAME>*) <suite>)
(funcdef         ($--> (seq! "def" `NAME `parameters ":" `suite)
                       `(def (,($ 0) ,@($ 1)) ,($ 2))))
 
; ... more stuff

; <simple_stmt> ::= <small_stmt> | (begin <small_stmt>+)
(simple_stmt     (>--> (seq! `(seq* small_stmt
                                    (rep (seq! ";" `small_stmt)))
                             (opt ";")
                             NEWLINE)
                       [`((,small_stmt ())) small_stmt]
                       [`((,small_stmt ,rep)) `(begin ,small_stmt ,@rep)]))
 
; ... and a ton more cryptic cases


Because you can never have enough randomly* placed symbols sprinkled throughout your code...
*and by randomly, I mean very carefully

A whole file of this is actually kinda mesmerizing when you look back on what you've written.

[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]

This topic is closed to new replies.

Advertisement