Skip to main content
GameDev.net gamedev.net
🔒 Locked

C++ should use more @`,!>

Started by Cornstalks Feb 27, 2013 at 4:18 PM 0 replies 3.2k views
Original Post
Cornstalks
Cornstalks

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.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.