0
私はANTLRが新しく、アクションを使用してトークンを印刷することに問題があります。次のようにANTLR Cターゲットを使用して、アクションを使用してトークンを印刷するにはどうすればよいですか?
grammar SimpleGrammar;
options {
language = C;
}
prog : string { printf("hello\n"); printf($string.text); };
string : LETTER+;
LETTER : ('a'..'b' | 'A'..'B')+;
テストプログラムは次のとおりです:「AAAA」:
#include "SimpleGrammarLexer.h"
#include "SimpleGrammarParser.h"
int main(int argc, char * argv[]) {
pANTLR3_INPUT_STREAM input;
pSimpleGrammarLexer lex;
pANTLR3_COMMON_TOKEN_STREAM tokens;
pSimpleGrammarParser parser;
input = antlr3FileStreamNew((pANTLR3_UINT8)argv[1], 0);
lex = SimpleGrammarLexerNew(input);
tokens = antlr3CommonTokenStreamSourceNew(ANTLR3_SIZE_HINT, TOKENSOURCE(lex));
parser = SimpleGrammarParserNew(tokens);
parser -> prog(parser);
parser -> free(parser);
tokens -> free(tokens);
lex -> free(lex);
input -> close(input);
return 0;
}
入力ファイルは、単純な文字列が含まれている私は、次の文法ファイルを持っています。私は出力が "hello"に続いて改行で "AAAA"となることを期待していますが、空の文字列が続く "hello"しか得られません。
私は間違っているとは何ですか?
ありがとうございます。
P.S.私はANTLRv3を使用しています。