summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@gmail.com>2011-10-04 00:59:29 +0000
committerMorgan Deters <mdeters@gmail.com>2011-10-04 00:59:29 +0000
commitd806d10b7050040b52566216314d9ed0645a56f8 (patch)
tree19d19f8f6bb6bcb41dde37a6cce254d7e061523a
parent422f91aadff0f9329535ffa0a4f5903905dd8289 (diff)
more fixes for libantlr3c v3.4
-rw-r--r--config/antlr.m441
-rw-r--r--src/parser/antlr_input.cpp21
-rw-r--r--src/parser/memory_mapped_input_buffer.cpp4
3 files changed, 66 insertions, 0 deletions
diff --git a/config/antlr.m4 b/config/antlr.m4
index 4ec81cbc7..cb6e2dc64 100644
--- a/config/antlr.m4
+++ b/config/antlr.m4
@@ -81,6 +81,47 @@ AC_DEFUN([AC_LIB_ANTLR],[
)
done
+ AC_MSG_CHECKING([for presence of older antlr3AsciiFileStreamNew()])
+ AC_LINK_IFELSE(
+ [
+ #include <antlr3.h>
+
+ int main() {
+ pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+ pANTLR3_INPUT_STREAM input = antlr3AsciiFileStreamNew(fName);
+ return 0;
+ }
+ ],
+ [
+ AC_MSG_RESULT([found it (must be antlr3 3.2 or similar)])
+ CVC4_ANTLR3_OLD_INPUT_STREAM=0
+ ],
+ [
+ AC_MSG_RESULT(failed)
+ AC_MSG_CHECKING([for presence of newer antlr3FileStreamNew()])
+ AC_LINK_IFELSE(
+ [
+ #include <antlr3.h>
+
+ int main() {
+ pANTLR3_UINT8 fName = (pANTLR3_UINT8)"foo";
+ pANTLR3_INPUT_STREAM input = antlr3FileStreamNew(fName, ANTLR3_ENC_8BIT);
+ return 0;
+ }
+ ],
+ [
+ AC_MSG_RESULT([found it (must be antlr3 3.4 or similar)])
+ CVC4_ANTLR3_OLD_INPUT_STREAM=0
+ ],
+ [
+ AC_MSG_ERROR([cannot figure out how to create an antlr3 input stream, bailing..])
+ ]
+ )
+ ]
+ )
+
+ AC_DEFINE_UNQUOTED(CVC4_ANTLR3_OLD_INPUT_STREAM, [$CVC4_ANTLR3_OLD_INPUT_STREAM], [Defined to 1 if we have libantlr3c v3.2 or equivalent.])
+
# Return the old compile variables and pop the language.
LIBS="$OLD_LIBS"
CPPFLAGS="$OLD_CPPFLAGS"
diff --git a/src/parser/antlr_input.cpp b/src/parser/antlr_input.cpp
index c51d4b8c3..6ec1c5846 100644
--- a/src/parser/antlr_input.cpp
+++ b/src/parser/antlr_input.cpp
@@ -68,7 +68,12 @@ AntlrInputStream::newFileInputStream(const std::string& name,
if( useMmap ) {
input = MemoryMappedInputBufferNew(name);
} else {
+ // libantlr3c v3.2 isn't source-compatible with v3.4
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
input = antlr3AsciiFileStreamNew((pANTLR3_UINT8) name.c_str());
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ input = antlr3FileStreamNew((pANTLR3_UINT8) name.c_str(), ANTLR3_ENC_8BIT);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
}
if( input == NULL ) {
throw InputStreamException("Couldn't open file: " + name);
@@ -112,10 +117,18 @@ AntlrInputStream::newStreamInputStream(std::istream& input,
}
/* Create an ANTLR input backed by the buffer. */
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
pANTLR3_INPUT_STREAM inputStream =
antlr3NewAsciiStringInPlaceStream((pANTLR3_UINT8) basep,
cp - basep,
(pANTLR3_UINT8) strdup(name.c_str()));
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ pANTLR3_INPUT_STREAM inputStream =
+ antlr3StringStreamNew((pANTLR3_UINT8) basep,
+ ANTLR3_ENC_8BIT,
+ cp - basep,
+ (pANTLR3_UINT8) strdup(name.c_str()));
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
if( inputStream==NULL ) {
throw InputStreamException("Couldn't initialize input: " + name);
}
@@ -130,10 +143,18 @@ AntlrInputStream::newStringInputStream(const std::string& input,
char* inputStr = strdup(input.c_str());
char* nameStr = strdup(name.c_str());
AlwaysAssert( inputStr!=NULL && nameStr!=NULL );
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
pANTLR3_INPUT_STREAM inputStream =
antlr3NewAsciiStringInPlaceStream((pANTLR3_UINT8) inputStr,
input.size(),
(pANTLR3_UINT8) nameStr);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ pANTLR3_INPUT_STREAM inputStream =
+ antlr3StringStreamNew((pANTLR3_UINT8) inputStr,
+ ANTLR3_ENC_8BIT,
+ input.size(),
+ (pANTLR3_UINT8) nameStr);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
if( inputStream==NULL ) {
throw InputStreamException("Couldn't initialize string input: '" + input + "'");
}
diff --git a/src/parser/memory_mapped_input_buffer.cpp b/src/parser/memory_mapped_input_buffer.cpp
index dad38c913..1c0f76e1e 100644
--- a/src/parser/memory_mapped_input_buffer.cpp
+++ b/src/parser/memory_mapped_input_buffer.cpp
@@ -61,7 +61,11 @@ pANTLR3_INPUT_STREAM MemoryMappedInputBufferNew(const std::string& filename) {
// Call the common 8 bit ASCII input stream handler
// Initializer type thingy doobry function.
//
+#if CVC4_ANTLR3_OLD_INPUT_STREAM
antlr3AsciiSetupStream(input, ANTLR3_CHARSTREAM);
+#else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
+ antlr38BitSetupStream(input);
+#endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
// Now we can set up the file name
//
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback