gpt4 book ai didi

vhdl - 如何编写不区分大小写的 Lex 模式规则?

转载 作者:行者123 更新时间:2023-12-03 23:51:52 26 4
gpt4 key购买 nike

我的文件结构是,

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

// A valid VHDL or verilog
}
`pragma TOKEN2_NAME TOKEN2_VALUE
TEXT{

// VHDL or verilog
}

由于我同时处理 Verilog 和 VHDL。我需要通过记住 VHDL 不区分大小写来重组我的 token 名称。我想对这两种情况都使用单个解析器。什么是最有效的方法?flex 是否支持某种功能以允许不区分大小写的模式匹配,我们可以稍后检查 token 名称是否经过清理(所有小写字母),文件格式是否为 Verilog?

最佳答案

Flex 使用以下语法支持模式内部不区分大小写:

(?i:...)

:) 之间的模式将被扫描而不考虑大小写。

暗示输入被“清理”、变成小写或以任何方式修改。如果您愿意,那是您的责任。这意味着(例如):

(?i:KeyWord)

将匹配任何输入 KEYWORDkeywordkEywOrd

如果你有一个古老的 flex 版本(早于 2.5.34,于 2007 年底发布)并且出于某种原因不想升级,你需要习惯于编写这样的模式:

[Kk][Ee][Yy][Ww][Oo][Rr][Dd]

您仍然可以在旧的扫描仪定义文件中找到示例。

关于vhdl - 如何编写不区分大小写的 Lex 模式规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27786754/

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