Основные идентификаторы
В своем обновлении вопроса вы предлагаете: {letter}({underscore}?{letter_or_digit})*
. Это именно то, что предлагает спецификация VHDL для выражения. Также стоит отметить, что базовые идентификаторы нечувствительны к регистру. То есть id
и ID
рассматриваются как один и тот же идентификатор.
Расширенные идентификаторы
Однако в VHDL также есть расширенные идентификаторы. Подходящим регулярным выражением для них было бы:
({backslash}{Any ISO 8859-1 except backslash}*{backslash})+
Зарезервированные слова
Также обратите внимание, что следующие идентификаторы не обрабатываются традиционным образом, а являются зарезервированными словами: Это список из спецификации 2002 года. В зависимости от версии спецификации, которую вы реализуете, зарезервированных слов может быть больше или меньше.
abs access after alias all and architecture array assert attribute begin block
body buffer bus case component configuration constant disconnect downto else
elsif end entity exit file for function generate generic group guarded if
impure in inertial inout is label library linkage literal loop map mod nand
new next nor not null of on open or others out package port postponed
procedural procedure process protected pure range record reference register
reject rem report return rol ror select severity shared signal sla sll sra srl
subtype then to transport type unaffected units until use variable wait when
while with xnor xor
Буквы
Также стоит отметить, что в VHDL [A-Za-z]
— это не все буквы алфавита. Вы также должны включить латинские символы ISO 8859-1. Дополнительную информацию об этих символах можно найти здесь.
Но, как говорится, вот лишние прописные буквы:
À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
А вот и лишние строчные буквы:
à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
person
Bill Lynch
schedule
19.09.2013