Thanks for the bug report.

On Friday 29 March 2013, Felix Salfelder wrote:
> Hi Al, hi list.
> 
> playing with spicelib, i found the parser hanging at
> gnucap-spice>C1 0 1 2;
> 
> while its not exceptionally clever to place that semicolon,
> it's still a gnucap bug.
> 
> i fixed it with
> 
>      cmd >> node_name;
> +    if(spots.back() == cmd.cursor()) {
> +      throw Exception("what's this?");
> +    }
>      spots.push_back(cmd.cursor());

The usual gnucap way to handle that would be:

    unsigned here = cmd.cursor();
    cmd >> node_name;
    if (cmd.stuck(&here)) {
.....

your way works too.

Having opened this one up .. What does Spice (NGspice?) do?

How does Spice (any of them) handle a semicolon?

What should it do?

Does that spice use a semicolon to introduce a comment?

It seems to me that perhaps the semicolon should be treated as 
"end of statement", so perhaps ...

      num_nodes = i;
      break;
    }else if (cmd.is_end()) {
      // found the end, no '='

should be 

      num_nodes = i;
      break;
    }else if (cmd.skip1b(';') || cmd.is_end()) {
      // found the end, no '='

??

It still needs the check for "stuck".


For readers who don't understand that code, wonder what it does 
...

Consider, in spice format, the line:

X1 a b c d e f g h i j

Which are nodes?  subckt name?  parameters?

Good luck.

How about 

X1 a b c d e=f g=h i=j

ok .. now we can tell "d" is the subckt name, a,b,c are nodes 
....

this function is the one to figure that out.


_______________________________________________
Gnucap-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnucap-devel

Reply via email to