Next: Checking a Style Sheet, Previous: Declaring the keywords and the operators, Up: Style Sheets Implementation [Contents][Index]
Sequences admit several declarations too:
sequences ::= sequences are sequence_1 ‘,’ sequence_2... end sequences sequence ::= rule in_face close_opt exceptions_opt |C-string
|C-char
; close_opt ::= rule | closers are rules end closers | <nothing> ; exceptions_opt ::= exceptions are rules end exceptions | <nothing> ;
The rules are:
As a first example, here is the correct definition for a C
string:
sequences are "\"" Plain String "\"" Plain exceptions are "\\\\", "\\\"" end exceptions end sequences
Since a great deal of languages uses this kind of constructs, you may
use C-string
to mean exactly this, and C-char
for
manifest characters defined the C
way.
The following example comes from ssh.ssh, the style sheet for
style sheet files, in which there are two kinds of pseudo-strings: the
strings (‘"example"’), and the regular expressions
(‘/example/’). We do not want the content of the pseudo-strings in
the face String
.
sequences are # The comments "#" Comment, # The name of the style sheet "style " Keyword_strong (Label + Index1) " is" Keyword_strong, # Strings are exactly the C-strings, though we don't want to # have them in the "string" face "\"" Plain "\"" exceptions are "\\\\", "\\\"" end exceptions, # Regexps "/" Plain "/" exceptions are "\\\\", "\\\/" end exceptions end sequences
The order between sequences does matter. For instance in Java, ‘/**’ introduces strong comments, and ‘/*’ comments. ‘/**’ must be declared before ‘/*’, or it will be hidden.
There are actually some sequences that could have been implemented as
operators with a specific regular expression (that goes up to the
closer). Nevertheless be aware of a big difference: regular expression
are applied to a single line of the source file, hence, they cannot
match on several lines. For instance, the C
comments,
/* * a comment */
cannot be implemented with operators, though C++
comments can:
// // a comment //
Next: Checking a Style Sheet, Previous: Declaring the keywords and the operators, Up: Style Sheets Implementation [Contents][Index]