A macro (short for "macroinstruction", from Greek combining form 'long, large') in computer science is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is "macro expansion". The input and output may be a sequence of lexical tokens or characters, or a syntax tree. Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages.