Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Note: The C++ target was last synced with the 3.4 version of ANTLR

The ActionScript C++ target closely follows the C target. The API and runtime behavior are consistent to the extent possible.

...

To use generated code, you'll need to include Cpp runtime package in your include path.

Usage

Selecting

...

Cpp output

Just add language=Cpp; to the options section of your grammar:grammar T;
options {
language=Cpp;
other options
}

...
For a grammar T.g ANTLR3 will then create the files TLexer.hpp, TLexer.cpp, TParser.hpp and TParser.cpp which contain the classes TLexer and TParser. Tree Parsers are not yet supported.

Specifying an

...

C++ namespace  for your recognizer

You can specify that your generated recognizer should be declared within a specific namespace as shown below. By default all recognizers are generated as top-level types with no enclosing namespace. The Parser has to include the Lexer and both the lexer and Parser have to include the traits
grammar MyGrammar;

...

// rest of grammar follows
....parser grammar MyGrammar;

options
{
language=ActionScriptCpp;
}
@includes
{
#include "UserTraits.hpp"
#include "TLexer.hpp"
}
@namespace{ UserNamespace }

...

using namespace UserNamespace;
int main(int argc, char* argv[])
 {
TTraits::InputStreamType input(fName, ANTLR_ENC_8BIT);
TLexer lxr(&input); // TLexerNew is generated by ANTLR
TTraits::TokenStreamType tstream(ANTLR_SIZE_HINT, lxr.get_tokSource() );
TParser psr(&tstream); // TParserNew is generated by ANTLR3

...

  • namespace -Wrap the generated classes with the specified namespace.
  • header - Will be inserted right after ANTLRs own imports at the top of the generated file. 
  • includeincludes, pre-includeincludes, post-include - same meaning as in C Target
  • init - Will be inserted at the end of the constructor of the lexer/parser. Here you can setup your own instance attributes.
  • members - Will be inserted in the class body of the lexer/parser. This is the right place for custom methods and class attributes.

...

  • -debug option: mostly useful for integration into ANTLRWorks.
  • output=template: StringTemplate has not been ported to ActionScriptC++, so template-based recognizers are not supported.
  • TreeParser(output = AST): useful for generating trees