literal before any of the keywords
is lets you use these keywords as part of a macro name or argument delimiter, and lets you use the keyword
macro-end in the macro definition.
The code below uses
literal before "is" in a macro definition to keep "is" from being interpreted as an OmniMark keyword. The macro named "my" uses the word "is" as a literal, so that you can assign local variables by using an English-like line of code such as "my nick-name is Speedy".
macro my token id literal is token value is set id to value macro-end process local stream nick-name local stream home-town my nick-name is "Speedy" my home-town is "Denver" output "My nickname is %g(nick-name).%n" || "My hometown is %g(home-town).%n"
The code below uses literal in a macro definition to define constants automatically without writing a macro for every single one. The macro "const" uses "macro-end" as a literal and dynamically builds a macro every time it sees "const" followed by a word, an equal sign, and a quoted string. This lets you use BASIC-style
const declarations instead of macros for declaring constants. Redefining small bits of OmniMark in this way makes for clear and simple examples, but not necessarily for maintainable OmniMark code, so use with caution.