File: smt-prep.c

package info (click to toggle)
acl2 8.5dfsg-5
  • links: PTS
  • area: main
  • in suites: bookworm
  • size: 991,452 kB
  • sloc: lisp: 15,567,759; javascript: 22,820; cpp: 13,929; ansic: 12,092; perl: 7,150; java: 4,405; xml: 3,884; makefile: 3,507; sh: 3,187; ruby: 2,633; ml: 763; python: 746; yacc: 723; awk: 295; csh: 186; php: 171; lex: 154; tcl: 49; asm: 23; haskell: 17
file content (91 lines) | stat: -rw-r--r-- 1,779 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91


/* A simple program that puts the SMT benchmark into a 
   format that is readable by ACL2's read-object */

#include <stdio.h>
#include <ctype.h>

int is_smt_special(char c) {
  return isspace(c) || (c == '(') || (c == ')') ||
    (c == '{') || (c == '}') ||
    (c == '[') || (c == ']');
}

int is_number_str(char* char_buff) {
  int n = 0;
  int ans = 1;

  while (char_buff[n] != 0) {
    if (!isdigit(char_buff[n])) {
      ans = 0;
    }
    n += 1;
  }
  return ans;
}
     
void print_char_buff(char* char_buff) {
  if (char_buff[0] == 0) {
    return;
  } else if (is_number_str(char_buff)) {
    fputs(char_buff, stdout);
  } else {
    fputs("|", stdout);
    fputs(char_buff, stdout);
    fputs("|", stdout);
  }
}

char my_getchar() {
  return getchar();
}

int main(int nargs, char **argc) {
  char char_buff[200];
  char curr_char;
  int bufn=0;

  curr_char = my_getchar();
  while (curr_char != EOF) {

    bufn=0;
    while (!is_smt_special(curr_char)) {
      char_buff[bufn] = curr_char;
      bufn++;
      curr_char = my_getchar();
    }
    char_buff[bufn] = 0;

    if (curr_char == '[') {
      fputs("(", stdout);
      print_char_buff(char_buff);
      fputs(" ", stdout);

      curr_char = my_getchar();
      while (curr_char != ']') {
        if (curr_char == ':') {
          fputs(" ", stdout);
        } else {
          putchar(curr_char);
        }
        curr_char = my_getchar();
      }
      fputs(")", stdout);        
    } else if (curr_char == '{') {
      fputs("\"comment\"", stdout);
      while (curr_char != '}') {
        curr_char = my_getchar();
      }
    } else {
      if (char_buff[0] != 0) {
        print_char_buff(char_buff);
      }
      putchar(curr_char);
    }
    curr_char = my_getchar();
  }
  return 0;
}