[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gEDA: FNF: Netlist format for Confluence and Informal



Thien-Thi Nguyen wrote:
> Tom Hawkins <tom@confluent.org> writes:
> 
>    All comments are welcome.
> 
> disclaimer: i like parentheses.
> 
> maybe it would be better to use simple paired-one-character delimiters
> (like parens, or {} or []) and prefix operators for structure, so that
> the question of how to parse a properly nested form is already answered.
> 
> what lies inside those forms is where the design effort (for a new
> format) really ought to focus, IMHO.  for structure, combination of
> curly braces plus "begin/end"-style blocks plus infix notation means
> another few months playing w/ (and debugging) lex/yacc or dedicated
> parsing library only to discover underspecification later which results
> in another few years of retrograde hacking or another few layers of
> compensating syntax (followed by retrograde hacking anyway).
> 
> you can say "human -readable -editable -friendly", etc. all you want,
> but as a human who writes programs w/ parentheses, i must say i would
> find this:
> 
> (:scope "top" "top"
>   (:input "clock" 1 ( 6 ))
>   (:input "a" 8 ( 0 ))
>   (:input "b" 8 ( 1 ))
>   (:scope "register" "reg_a"
>     :ff 8 ( 2 6 0 )
>     :name "reg_val" 8 ( 2 ))
>   (:scope "register" "reg_b"
>     :ff 8 ( 3 6 1 )
>     :name "reg_val" 8 ( 3 ))
>   (:add 8 ( 4 2 3 ))
>   (:scope "register" "reg_c"
>     :ff 8 ( 5 6 4 )
>     :name "reg_val" 8 ( 5 ))
>   (:output "c" 8 ( 5 )))

Sure, I don't mind parentheses.  I'm not a LISP/emacs expert -- what is 
the colon for, such as (:scope ...).  Why not just (add 8 ...)

Also, how should lists of numbers be distinguished from functions?

   '(2 6 0)  or (quote (2 6 0))

Thanks for the suggestions.

-Tom


>   
> a much better (more friendly) starting point than the example it was
> modified from (taken from the webpage).  why?  because i can put this in
> an emacs buffer, type:
> 
> M-x emacs-lisp-mode RET     ;; for syntax highlighting (eye candy)
> M-<                         ;; to go to beginning of buffer
> M-: (setq play (read (current-buffer))) RET
> 
> and now i have just parsed the entire form into the variable `play' at
> which point further editing, validation and modification of the form is
> but a SMOP.  i am free to concentrate on the meaning of the form thanks
> to its extremely regular syntax.  bottom line: i am ahead of the game
> from those who have to find/build/install (on which platforms?!, w/ what
> dependencies?!, etc.etc) a dedicated parser or parser library.
> 
> anyway, best of luck in your design efforts!
> 
> thi
> 
>