0

A couple of days ago I downloaded Charniak's parser from the web. This parser is used to parse natural languages.

I've been trying to compile it but it is not working. When I'm in parser directory and type make this is prompted:

/usr/bin/g++  -c -O Bchart.C
/usr/bin/g++  -c -O BchartSm.C
/usr/bin/g++  -c -O Bst.C
/usr/bin/g++  -c -O FBinaryArray.C
/usr/bin/g++  -c -O CntxArray.C
/usr/bin/g++  -c -O ChartBase.C
/usr/bin/g++  -c -O ClassRule.C
/usr/bin/g++  -c -O ECArgs.C
/usr/bin/g++  -c -O Edge.C
/usr/bin/g++  -c -O EdgeHeap.C
/usr/bin/g++  -c -O Feat.C
/usr/bin/g++  -c -O Feature.C
/usr/bin/g++  -c -O FeatureTree.C
/usr/bin/g++  -c -O Field.C
/usr/bin/g++  -c -O FullHist.C
/usr/bin/g++  -c -O GotIter.C
/usr/bin/g++  -c -O InputTree.C
/usr/bin/g++  -c -O Item.C
/usr/bin/g++  -c -O Link.C
/usr/bin/g++  -c -O Params.C
/usr/bin/g++  -c -O ParseStats.C
/usr/bin/g++  -c -O SentRep.C
/usr/bin/g++  -c -O Term.C
/usr/bin/g++  -c -O TimeIt.C
/usr/bin/g++  -c -O UnitRules.C
/usr/bin/g++  -c -O ValHeap.C
/usr/bin/g++  -c -O edgeSubFns.C
/usr/bin/g++  -c -O ewDciTokStrm.C
/usr/bin/g++  -c -O extraMain.C
/usr/bin/g++  -c -O fhSubFns.C
/usr/bin/g++  -c -O headFinder.C
/usr/bin/g++  -c -O headFinderCh.C
cc    -c -o utils.o utils.c
In file included from utils.c:23:
utils.h:28:19: fstream: No such file or directory
utils.h:29:16: list: No such file or directory
In file included from utils.h:30,
                 from utils.c:23:
ECString.h:8: error: syntax error before "namespace"
ECString.h:8: warning: data definition has no type or storage class
In file included from utils.h:30,
                 from utils.c:23:
ECString.h:9:18: string: No such file or directory
In file included from utils.c:23:
utils.h:31:18: vector: No such file or directory
In file included from utils.c:23:
utils.h:37: error: syntax error before "intToString"
utils.h:37: warning: data definition has no type or storage class
utils.h:38: error: syntax error before '<' token
utils.h:39: error: syntax error before ':' token
utils.h:40: error: syntax error before "st"
utils.h:40: warning: data definition has no type or storage class
utils.h:43: error: syntax error before '&' token
utils.h:44: error: syntax error before "lastCharacter"
utils.h:44: error: syntax error before '&' token
utils.h:44: warning: data definition has no type or storage class
utils.h:45: error: syntax error before "firstCharacter"
utils.h:45: error: syntax error before '&' token
utils.h:45: warning: data definition has no type or storage class
utils.c:24:20: iostream: No such file or directory
utils.c: In function `error':
utils.c:34: error: `cerr' undeclared (first use in this function)
utils.c:34: error: (Each undeclared identifier is reported only once
utils.c:34: error: for each function it appears in.)
utils.c:34: error: `endl' undeclared (first use in this function)
utils.c: In function `warn':
utils.c:43: error: `cerr' undeclared (first use in this function)
utils.c:43: error: `endl' undeclared (first use in this function)
utils.c: At top level:
utils.c:47: error: syntax error before '&' token
utils.c: In function `ignoreComment':
utils.c:49: error: `string' undeclared (first use in this function)
utils.c:49: error: syntax error before "nxt"
utils.c:51: error: `inpt' undeclared (first use in this function)
utils.c:59: error: `nxt' undeclared (first use in this function)
utils.c: In function `toLower':
utils.c:82: error: 'for' loop initial declaration used outside C99 mode
utils.c: At top level:
utils.c:97: error: syntax error before "intToString"
utils.c: In function `intToString':
utils.c:101: error: `string' undeclared (first use in this function)
utils.c:101: error: syntax error before "ans"
utils.c:102: error: `ans' undeclared (first use in this function)
utils.c: At top level:
utils.c:106: error: syntax error before "vECfind"
utils.c:106: error: syntax error before "s"
utils.c: In function `vECfind':
utils.c:108: error: `ECStringsIter' undeclared (first use in this function)
utils.c:108: error: syntax error before "eci"
utils.c:109: error: `eci' undeclared (first use in this function)
utils.c:109: error: `sts' undeclared (first use in this function)
utils.c:109: error: `s' undeclared (first use in this function)
utils.c:109: error: `true' undeclared (first use in this function)
utils.c:110: error: `false' undeclared (first use in this function)
utils.c: At top level:
utils.c:113: error: syntax error before "lastCharacter"
utils.c:113: error: syntax error before '&' token
utils.c: In function `lastCharacter':
utils.c:115: error: `string' undeclared (first use in this function)
utils.c:115: error: syntax error before "f"
utils.c:116: error: `s' undeclared (first use in this function)
utils.c:121: error: `f' undeclared (first use in this function)
make: *** [utils.o] Error 1

Some other people have problems compiling this thing, like the one in this forum. but I dont think my gcc version is the problem.

NOTE: I am trying to build a numerical optimization algorithm used for natural language parsing. I'm trying to get some examples from charniak's parser. Any help would be greatly appreciated.

dmcc
  • 2,519
  • 28
  • 30
deps_stats
  • 254
  • 1
  • 2
  • 11
  • If you're getting this error at this point, you're probably using an old version of the Charniak parser. The latest version which compiles more easily can be found here: https://github.com/BLLIP/bllip-parser – dmcc Apr 21 '15 at 15:00

3 Answers3

2

This is an updated and improved version from the Brown Laboratory for Linguistic Information Processing: https://github.com/BLLIP/bllip-parser

I compiled it on Ubuntu 12.10 and it has been easy. You need to install Flex.

user_1177868
  • 414
  • 4
  • 18
1

I ran into the same problem, and this is what I found: http://web.science.mq.edu.au/~mpawel/resources/notes/compilingCharniakJohnson.htm

From that page:

Both parsers, implemented in C++, are distributed as source code and, in order to use them, one obviously needs to compile them first. On modern machines this may now raise some problems and this note is supposed to help to address the issues.

On Linux platforms (I tested on Ubuntu 11.04) a possible solution, reported on the corpora mailing list, is to use the g++ 3.3 compiler instead of the now commonly used 4.x version. An alternative is to use the patch prepared by Nitin Madnani; this changes the source code of the reranking parser so that it can compile on modern 64-bit Linux distributions.

Community
  • 1
  • 1
Arish
  • 111
  • 1
  • 1
  • 7
1

Files with the upper-case extension .C are (somewhat confusingly!) assumed to be C++.

However, utils.c has a lower-case extension which means the cc compiler (and why is that being used?!) is treating it as C:

Files whose names end with .c are taken to be C source files

All the C++ functionality therefore does not work.

  • If this is your file, rename it, and stop using cc for C++.

  • If this compilation step is part of the Chaniak distribution, I suggest contacting the author, because he has made a serious error.

Lightness Races in Orbit
  • 378,754
  • 76
  • 643
  • 1,055
  • Charnikak won't provide support: "Some of my statistical parsers are available for research use. Please look at the Brown Computer Science Homepage, under Software Catalog, and then under nlparser. Unfortunately I cannot really support them, so I will almost certainly not respond to e-mails for help unless the problem looks particularly interesting." – deps_stats Sep 02 '11 at 17:38
  • 1
    @deps_stats: My answer stands. If you have to fix the problem yourself by changing the makefile, then that is how it is! I'd be surprised if the author refused to support his parser _not building at all_, though. – Lightness Races in Orbit Sep 02 '11 at 17:40
  • Additionally, the file contained in the tarball is having an uppercase C – PlasmaHH Sep 02 '11 at 17:48
  • After changing the names of utils.c and auxify.c (The two files having the .c) some new error appears: `make: *** No rule to make target /`wwBCTest.o', needed by /`wwBCTest'. Stop.` [The dash is supposed to be the acute accent, but I don't know how to scape thi sign] – deps_stats Sep 02 '11 at 17:51
  • @PlasmaHH: Then perhaps the OP mangled it somehow; invoking `cc` is still wrong! – Lightness Races in Orbit Sep 02 '11 at 17:51
  • 2
    @deps_stats: Iterative collaborative debugging is not a good fit for this website's Q&A format. Perhaps you'd be more comfortable in our chatrooms? Anyway, if the original issue was solved, please mark this answer as accepted; ask another question if you have another problem. – Lightness Races in Orbit Sep 02 '11 at 17:52