
0. There is a repaint anomoly in the GUI:

    1. Run any circuit
    2. Click on ANOTHER window
    3. Then click on the circuit window

   The switches are now blank...

    I think you introduced a bug when you changed the source code 
    of the simulator ?

    BTW: control-L (re-paint) can "fix" this problem.

================

1. Translator did not convert this correctly:

       Switch 2a sw-A 'a' ONE;
                 ^^^^^

    Output:

       Switch ("2a", sw-A, 'a', One);
                     ^^^^^

    On the other hand:

        And 4c sw-A not-sw1 not-sw0 out-0;
               ^^^^^

    translated correctly to:

	 And ("4c", (sw_A, not_sw1, not_sw0), out_0);
                     ^^^^^


Suggestion:

   To avoid signal collision:

          sw-1   and  sw_1     (2 different signals !!!)

   translate:

          sw-1 to:    sw__1     (use 2 underscores !!!)



1. translator can accept incorrect coordinate:

       Switch a A '0' ZERO;
             ^^

    Fix: Check for 2 characters
 
================


2. Missing ";" will result in strange translation errors:

    Switch aa A '0' ZERO
    Not aa A nA;

Translation Complete!
  majority --> /home/cheung/teaching/web/355/demo-Bashan/translated.cc
Compiling the following file(s) and creating an executable file:
  /home/cheung/teaching/web/355/demo-Bashan/translated.cc ---> /home/cheung/teaching/web/355/demo-Bashan/edisim
Compile failed, see the error output details: 
translated.cc: In function ???int simnet()???:
translated.cc:14:24: error: ???Zeronot??? was not declared in this scope
                               ^^^^^^^^^
  Switch ("aa", A, '0', Zeronot);


   Fix: 
       the translator checks each input line
       if the line does not end in ";",
       then:
             print out: "Warning: line # does not end in ';'; assume 
                         circuit continues on next line"

   This will help student find errors IF they forgot ";"


================

I notice you have 2 syntax for Not:

     Not ab sw_0 out;

     Not ab sw_0 | out;

Can you make this available for ALL built-in components ???

==========================
Can you make this example work:

   Define my_const_signal_generator | test[15..0];
       Sig 1010101010101010 temp;
       Or bb temp test;
   Endef;
   my_const_signal_generator bb | test[15..0];
   Probe ce test;


  by removing the requirement that:

    self-defined component must has at least one input signal 

  Use this trick:

    if component has zero input parameters, generate this call:

             Component( Coord, (One), (..... ) );

  In the example:

    my_const_signal_generator bb | test[15..0];

  Generates:

        my_const_signal_generator("bb", (One), (test[15], test[14], test[13], 
                    ...., test[1], test[0]));


========================================================

Add a note to the documentation:

  Warning: do NOT use a Probe component inside a self-defined component

==================================

Add sanity check:

    1. check # input  signals in user defined components match
    2. check # output signals in user defined components match

A wrong number of input will generate a C++ program that report strange error
messages:

translated.cc: In function ???int simnet()???:
translated.cc:72:9: error: expected unqualified-id before ???|??? token
  Signal |(1, "|");
         ^
translated.cc:99:52: error: expected primary-expression before ???|??? token
  MyMux("ag-hg", (R33, R33, R23, R13), (R03, sw1), (|));
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


