gpt4 book ai didi

c - 使用 ANTLR C 目标,如何使用操作来打印 token ?

转载 作者:行者123 更新时间:2023-11-30 15:58:01 24 4
gpt4 key购买 nike

我是 ANTLR 新手,在使用操作打印 token 时遇到问题。我有以下语法文件:

grammar SimpleGrammar;

options {
language = C;
}

prog : string { printf("hello\n"); printf($string.text); };

string : LETTER+;

LETTER : ('a'..'b' | 'A'..'B')+;

测试程序如下:

#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;
}

输入文件包含一个简单的字符串:“AAAA”。我期望输出为“hello”,后跟换行符上的“AAAA”,但是我只得到“hello”,后跟一个空字符串。

我做错了什么?

提前致谢。

附注我正在使用 ANTLRv3。

最佳答案

试试这个:

prog
: string
{
printf("hello\n");
printf($string.text->chars);
}
;

关于c - 使用 ANTLR C 目标,如何使用操作来打印 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10089884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com