// Generated from expr.y - manual changes will be lost
ifdef::sidebartoc[]
include::_Sidebar.adoc[]
endif::[]




























Identifiers and reserved keywords
---------------------------------

An identifier is a sequence of ASCII alphabetic, digit, and
underscore (`_`) characters.  The first character must be an
ASCII alphabetic character.

****
[horizontal]
(108) `*identifier            ::=*` ::
   `"[A-Za-z-][A-Za-z0-9-]*"` +
                              `|` `"s"` +
                              `|` `"ms"` +
                              `|` `"us"` +
                              `|` `"k"` +
                              `|` `"m"` +
                              `|` `"real-time"` +
                              `|` `"interface"` +
                              `|` `"component"` +
                              `|` `"ids"` +
                              `|` `"attribute"` +
                              `|` `"function"` +
                              `|` `"activity"` +
                              `|` `"version"` +
                              `|` `"lang"` +
                              `|` `"email"` +
                              `|` `"requires"` +
                              `|` `"codels-require"` +
                              `|` `"clock-rate"` +
                              `|` `"task"` +
                              `|` `"task"` +
                              `|` `"period"` +
                              `|` `"delay"` +
                              `|` `"priority"` +
                              `|` `"scheduling"` +
                              `|` `"stack"` +
                              `|` `"codel"` +
                              `|` `"validate"` +
                              `|` `"yields"` +
                              `|` `"pause"` +
                              `|` `"throws"` +
                              `|` `"doc"` +
                              `|` `"interrupts"` +
                              `|` `"before"` +
                              `|` `"after"` +
                              `|` `"handle"` +
                              `|` `"port"` +
                              `|` `"in"` +
                              `|` `"out"` +
                              `|` `"inout"` +
                              `|` `"local"` +
                              `|` `"async"` +
                              `|` `"remote"` +
                              `|` `"extends"` +
                              `|` `"provides"` +
                              `|` `"uses"` +
                              `|` `"multiple"` +
                              `|` `"native"` +
                              `|` `"exception"` +
                              `|` `"visibility"` +
                              `|` `"hidden"`
(109) `*identifier-list       ::=*` ::
   `{` <<grammar#dotgen-rule-identifier,`identifier`>> `","` `}` <<grammar#dotgen-rule-identifier,`identifier`>>
****

Words that are reserved keywords in the dotgen language are valid
identifiers where their use is not ambiguous.


























































































































































































































































































































// eof
