コード例 #1
0
ファイル: dump.c プロジェクト: Kouhei-Moriya/peg4d-java
static void write_json_object(FILE *file, ParsingObject *pego, char *source,
                              int level) {
  if (pego[0]) {
    if (pego[0]->child_size > 0) {
      fprintf(file, "{");
      for (int i = 0; i < pego[0]->child_size; i++) {
        fprintf(file, "\n");
        write_json_indent(file, level + 1);
        fprintf(file, "\"%s\": ", pego[0]->child[i]->tag);
        write_json(file, &pego[0]->child[i], source, level + 2);
        if (i + 1 < pego[0]->child_size) {
          fprintf(file, ",");
        }
      }
      fprintf(file, "\n");
      write_json_indent(file, level + 1);
      fprintf(file, "}");
    } else {
      if (pego[0]->value == NULL) {
        for (long j = pego[0]->start_pos; j < pego[0]->end_pos; j++) {
          fprintf(file, "%c", source[j]);
        }
      } else {
        fprintf(file, "%s", pego[0]->value);
      }
    }
  }
}
コード例 #2
0
ファイル: dump.c プロジェクト: Y--Tamura/peg4d-java
static void write_json_array(FILE *file, ParsingObject *pego, char *source, int level) {
    fprintf(file, "[");
    for (int i = 0; i < pego[0]->child_size; i++) {
        fprintf(file, "\n");
        write_json_indent(file, level + 1);
        fprintf(file, "{");
        fprintf(file, "\n");
        write_json_indent(file, level + 2);
        fprintf(file, "\"tag\": \"%s\", \"value\": ", pego[0]->child[i]->tag);
        write_json(file, &pego[0]->child[i], source, level + 3);
        fprintf(file, "\n");
        write_json_indent(file, level + 1);
        fprintf(file, "}");
        if (i + 1 < pego[0]->child_size) {
            fprintf(file, ",");
        }
    }
    fprintf(file, "\n");
    write_json_indent(file, level);
    fprintf(file, "]");
}