File: README

package info (click to toggle)
antlr 2.7.7%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 9,928 kB
  • ctags: 10,225
  • sloc: java: 54,649; cs: 12,533; makefile: 8,963; cpp: 7,359; pascal: 5,273; sh: 4,337; python: 4,301; lisp: 1,969; xml: 220; lex: 192; ansic: 134
file content (191 lines) | stat: -rw-r--r-- 6,373 bytes parent folder | download | duplicates (14)
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
ANTLR C++ Support Libraries Additional Notes

1.1 Using Microsoft Visual C++

Currently this is still (or again) somewhat experimental. MSVC is not the
development platform and I don't have access to the compiler currently.
YMMV

Make sure you compile the library *and* your project with the same
settings. (multithreaded/debug/etc.)

Visual C++ 6 only is supported for static builds. Some hacking and STLPort
is needed to build a DLL (only for experts).

Visual C++ 7.0 and 7.1 should support both static and DLL builds (DLL
builds might be broken). In general the main problem is getting the right
template instantiations into the DLL. For 7.0 you might have to tweak the
list in lib/cpp/src/dll.cpp. I'm told 7.1 does not need this.

For a static build (works probably best)

1. Create a win32 static library project.
2. Enable RTTI. (Run Time Type Information)
3. Add the source files from <installpath>/antlr/lib/cpp/src to the project
   (except dll.cpp) put <installpath>/antlr/lib/cpp in the search path for
   include files.

For the DLL build (MSVC 7.0 tested)

* Project settings ("create new project" dialogs)
      - Win32 project
        - Application Settings
          - Application type
            - DLL
          - Additional options
            - Export symbols
* Project properties (change defaults to)
      - Configuration Properties
        - C/C++
          - General
            - Additional Include Directories
              - drive:\antlr-2.7.2\lib\cpp
          - Preprocessor
            - Preprocessor Definitions
              - WIN32;_DEBUG;_WINDOWS;_USRDLL;ANTLR_EXPORTS
            - Code Generation
              - Runtime Library
                - Multi-threaded Debug DLL (/MDd)
              - Enable Function-Level Linking:
                - Yes
            - Language
              - Enable Run-Time Type Info
                - Yes
            - Precompiled Headers
              - Create/Use Precompiled Headers

NOTE: Do not use the antlr generated and support library in a multithreaded
way. It was not designed for a multithreaded environment.

1.3 Building with GCJ

NOTE: outdated the new Makefiles do not support this anymore.

It is also possible to build a native binary of ANTLR. This is somewhat
experimental and can be enabled by giving the --enable-gcj option to
configure. You need a recent GCC to do this and even then the constructed
binary crashes on some platforms.

2. Tested Compilers for this release

Don't get worried if your favourite compiler is not mentioned here. Any
somewhat recent ISO compliant C++ compiler should have little trouble with
the runtime library.

*NOTE* this section was not updated for the new configure script/Makefiles some of the things listed here to pass different flags to configure may not work anymore. Check INSTALL.txt or handedit generated scripts after configure.

2.1 Solaris

2.1.1 Sun Workshop 6.0

Identifies itself as:

   CC: Sun WorkShop 6 2000/08/30 C++ 5.1 Patch 109490-01

Compiles out of the box configure using:

   CXX=CC CC=cc AR=CC ARFLAGS="-xar -o" ./configure

Use CC to make the archive to ensure bundling of template instances. Check
manpage for details.

2.1.2 GCC

Tested 3.0.4, 3.2.1, 3.2.3, 3.3.2, 3.4.0.

All tested gcc are using a recent GNU binutils for linker and assembler.
You will probably run into trouble if you use the solaris
linker/assembler.

2.2 Windows

2.2.1 Visual C++

Visual C++ 6.0 reported to work well with static build. DLL build not
supported (reported to work when using STLPort in previous ANTLR versions).
I heart that in some cases there could be problems with precompiled headers
and the use of normal '/' in the #include directives (with service pack 5).

Visual C++ 7.0 reported to work, might need some tweaks for DLL builds due
to some shuffling around in the code.

Visual C++ 7.1 reported to work, might need some tweaks, see above.

My current guess is that DLL builds are all over the line broken. A
workaround is to make a DLL from the complete generated parser including
the static ANTLR support library.

2.2.2 Cygwin/MinGW

Not expecting any big problems maybe some tweaks needed in configure.

3. Old notes for a number of compilers

3.1 SGI Irix 6.5.10 MIPSPro compiler

You can't compile ANTLR with the MIPSPro compiler on anything < 6.5.10
because SGI just fixed a big bug dealing with namespaces in that release.

Note: To get it to compile do basically the following:

   CC=cc CXX=CC CXXFLAGS=-LANG:std ./configure --prefix=/usr/local/antlr

Note probably dates back to 2.7.0-2.7.1 era.

3.2 Sun CC 5

It may be you'll have to change one or two static_cast<char*>()'s to a
C-style cast. (think that's a compiler bug)

Configure using:

   CXX=CC CC=cc RANLIB="CC -xar" ./configure

The custom ranlib is needed to get the template instances into the archive.
Check manpages. Maybe the Sun CC 6 instructions above will work as well.

3.3 GCC on some platforms (Alpha Tru64)

The -pipe option not supported it seems. Configure using:

CFLAGS="-W -Wall" ./configure

Or remove the -pipe's from the generated scripts/Config.make.

4. IT DOESN'T WORK!?

4.1 Compile problems

The ANTLR code uses some relatively new features of C++ which not all
compilers support yet (such as namespaces, and new style standard headers).

At the moment, you may be able to work around the problem with a few nasty
tricks:

Try creating some header files like 'iostream' just containing:

#include <iostream.h>

and compile with an option to define away the word 'std', such as

CC .... -Dstd= ....

Also in the antlr subdirectory there's a file config.hpp. Tweak this one to
enable/disable the different bells and whistles used in the rest of the code.
Don't forget to submit those changes back to us (along with compiler info)
so we can incorporate them in our next release!

4.2 Reporting problems

When reporting problems please try to be as specific as possible e.g.
mention ANTLR release, and try to provide a clear and minimal example of
what goes wrong and what you expected.

Bug reports can be done to Terence or the current subsystem maintainers as
mentioned in the doc directory. Another option is to use the mailing list
linked from http://www.antlr.org.

Before reporting a problem you might want to try with a development
snapshot, there is a link to these in the File Sharing section of

http://www.antlr.org.