2011-12-16 12 views
4

誰かが簡単なANTLR 3.4の例を知っていますか?main()はCターゲットの機能ですか?私はANTLRをCまたはC++で始めようとしています。私が見ているすべての例(thisを含む)は古くなっています。それらはもはや存在しない関数を使用します。ダウンロードしたパッケージ自体には例がないようですが、Wikiの例は古くなっています。Cターゲットランタイムの簡単なANTLR 3.4の例

+0

ここに問題のコードhttp://stackoverflow.com/questions/5441810/antlr3-c-target-parser-return-misses-out-root-elementに動作します - あなたはほぼ確実に、より良いでしょうBUそこにある例 – Jimmy

+0

ああ、ありがとう!それは私を始めさせるのに十分なはずです。 – ikh

+0

@ikhこんにちは、まず、upvoted。そして私には質問があります。 http://stackoverflow.com/users/2729109/ikhと同じユーザーですか?あなたは韓国人ですか? –

答えて

6

未テスト。

#include "YourLexer.h" 
#include "YourParser.h" 

int main() 
{ 

uint8_t * bufferData;  // Some memory with text in it 
uint32_t bufferSize;  // Size of said memory 
pANTLR3_UINT8 bufferName; // Name of buffer. ANTLR uses this for some default 
          // error messages 

//Creates an input stream. If you want to parse once from multiple sources 
// you can switch among these during lexing 
pANTLR3_INPUT_STREAM input = antlr3StringStreamNew(
    bufferData, 
    ANTLR3_ENC_8BIT, 
    bufferSize, 
    bufferName); 
assert(input != NULL); 

//Creates the lexer. Doesn't do anything until the parser(or you) tells it to. 
pYourLexer lxr = YourLexerNew(input); 
assert(lxr != NULL); 

//Creates an empty token stream. 
pANTLR3_COMMON_TOKEN_STREAM tstream = antlr3CommonTokenStreamSourceNew(
    ANTLR3_SIZE_HINT, TOKENSOURCE(lxr)); 
assert(tstream != NULL); 

//Creates a parser. 
pYourParser psr = YourParserNew(tstream); 
assert(psr != NULL); 

//Run the parser rule. This also runs the lexer to create the token stream. 
psr->some_parser_rule(psr); 

} 
+0

ありがとうございます、それはかなりうまくいきます( 'bufferData'などを初期化した後)。 – ikh