final public void signal_declaration(Graph g) throws ParseException {
  ArrayList<String> ids;
    jj_consume_token(SIGNAL);
    ids = identifier_list();
    jj_consume_token(151);
    subtype_indication();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case BUS:
    case REGISTER:
      signal_kind();
      break;
    default:
      jj_la1[90] = jj_gen;
      ;
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 154:
      jj_consume_token(154);
      expression();
      break;
    default:
      jj_la1[91] = jj_gen;
      ;
    }
    jj_consume_token(SEMICOLON);
          for (String id: ids)
          {
            log.trace("new signal node: " + id);
            g.new Node(id,Library.FLAG_PSEUDO|Library.TYPE_BUF);
          }
  }