summaryrefslogtreecommitdiff
path: root/contrib/py-bindings/mtest.c
blob: 1a323468ac07e7061b1d10206f4d147efc3fd712 (plain)
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
/* GF C Bindings
   Copyright (C) 2008-2009 Kevin Kofler

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/

#include <stdio.h>
#include <stdlib.h>
#include "pygf.h"
//#include "gf_lexing.h"

PyGF pgf, lang, cat;

int main(int argc, char *argv[])
{
  int has_lang;
  gf_init(&argc, &argv);
  printf("Passed init\n");
  gf_readPGF(&pgf, "Query.pgf");
  printf("passed readPGF\n");
  if (!gf_readLanguage(&lang, "QueryEng"))
    return 1; 
  printf("passed readLanguage: %s\n", gf_showLanguage(&lang));
  gf_startCat(&pgf, &cat);
  printf("passed startcat: %s\n", gf_showType(&cat));
  // char *lexed = gf_stringOp("lextext")("Is 2 prime");
  char lexed[] = "is 23 odd";
  PyGF *result = gf_parse(&pgf, &lang, &cat, &lexed);
  int k;
  for (k = 0; result[k].sp ; k++) {
    char *str = gf_showExpr(&result[k]);
    puts(str);
    free(str);
    printf("next: 0x%x\n",result[k+1].sp);
  }
  /*  // free(lexed);
  PyGF *p = result;
  if (result[0]) {
    int k = 0;
    do {
      printf("tree %d\n",++k);
      char *str = gf_showExpr(*(p++));
      puts(str);
      free(str);
    } while (*p && k < 5);
  } else
    puts("no match");
   gf_freeTrees(result);
  gf_freeType(cat);
  gf_freeLanguage(lang);
  gf_freePGF(pgf); */

  gf_exit();
  return 0;
}