gpt4 book ai didi

comments - 删除嵌套注释 bz lex

转载 作者:行者123 更新时间:2023-12-02 19:59:32 27 4
gpt4 key购买 nike

我应该如何在 lex(或 flex)中进行编程以从文本中删除嵌套注释并仅打印不在注释中的文本?我可能应该以某种方式识别我在评论中时的状态以及 block 评论的起始“标签”的数量。

让我们制定规则:
1.屏蔽评论

/*
block comment
*/

<强>2。行注释

// line comment

<强>3。注释可以嵌套。

示例 1

show /* comment /* comment */ comment */ show

输出:

show  show

示例 2

show /* // comment
comment
*/
show

输出:

show 
show

示例3

show
///* comment
comment
// /*
comment
//*/ comment
//
comment */
show

输出:

show
show

最佳答案

你的理论是正确的。这是一个简单的实现;可以改进。

%x COMMENT
%%
%{
int comment_nesting = 0;
%}

"/*" BEGIN(COMMENT); ++comment_nesting;
"//".* /* // comments to end of line */

<COMMENT>[^*/]* /* Eat non-comment delimiters */
<COMMENT>"/*" ++comment_nesting;
<COMMENT>"*/" if (--comment_nesting == 0) BEGIN(INITIAL);
<COMMENT>[*/] /* Eat a / or * if it doesn't match comment sequence */

/* Could have been .|\n ECHO, but this is more efficient. */
([^/]*([/][^/*])*)* ECHO;
%%

关于comments - 删除嵌套注释 bz lex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943229/

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