gpt4 book ai didi

c - 如何禁用对文件中一段文本的解析?

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:50 24 4
gpt4 key购买 nike

我的文件结构是:

`pragma TOKEN1_NAME TOKEN1_VALUE
`pragma TOKEN2_NAME TOKEN2_VALUE
`pragma TOKEN3_NAME TOKEN3_VALUE
`pragma TOKEN4_NAME TOKEN4_VALUE
VHDL_TEXT{

// A valid VHDL text goes here.
}
`pragma TOKEN2_NAME TOKEN2_VALUE
VHDL_TEXT{

// VHDL text
}

我需要将 VHDL 文本按原样传递到输出文件。我可以通过在 lex 文件末尾创建一个默认规则来做到这一点:

Rule:  .    { append_to_buffer(*yytext); }

我的 Lex 文件中还有其他规则列表来处理标记。

我遇到的问题是如何处理 VHDL 文本中也包含一些可以被 Lex 规则识别的标记的情况?

换句话说,我想禁用检测进一步的有效 token ,我发现我感兴趣的文本并在结束后再次开始检测。

最佳答案

正如 rici 间接指出的那样,您需要能够区分在有效的 VHDL 设计规范或部分中出现的规则的尾随定界符“}”和出现的右大括号。

请参阅 IEEE Std 1076-2008, 15.3 Lexical elements, separators, and delimiters 我们发现“{”和“}”在 VHDL 中未用作分隔符。

它们是其他特殊字符(15.2 字符集,使用 ISO/IEC 8859-1:1998),需要在可能出现图形字符的地方进行处理。

graphic_character ::=
basic_graphic_character | lower_case_letter | other_special_character

这些包括扩展标识符 (15.4.3)、字 rune 字 (15.6)、字符串文字 (15.7)、位字符串文字 (15.8)、注释 (15.9) 和工具指令 (15.11)。

需要在产生式中识别这些词汇元素,否则将“}”识别为规则的分隔符。

目前只定义了一个工具指令(24.1 保护工具指令),其中两个大括号字符的使用将包含在 VHDL 词汇元素中。词汇元素中的所有其他用法都直接定界。 (并且您可以放弃工具指令支持,在 VHDL 中,它们基本上还调用单独的词法、句法和语义分析)。

从本质上讲,您需要运行 VHDL 词法分析器来遍历“VHDL 文本”,其中您的规则定界符右大括号会像拇指一样突出(作为异常(exception),用作 VHDL 文本的结束定界符)。

大约现在,如果可能的话,如果可以通过引用来处理 VHDL,您的生活会更轻松。您的机制与在 VHDL 中包含工具指令一样复杂(这可以像您的 VHDL 文本一样使用预处理器完成)。

这是对 的回应FUZxxl 添加的标签。

关于c - 如何禁用对文件中一段文本的解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764104/

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