m4 (linguage de computator)
m4 es un processor de macros que es parte del standard POSIX.
M4 |
---|
instantia de: standard UNIX utility or command[*], general-purpose macro processor[*], linguage de programmation |
|
data de creation: 1977 |
Illo esseva create per Brian Kernighan and Dennis Ritchie pro le versiones original de UNIX. Illo es un extension de un previe processor de macros m3, scribite per Ritchie pro le minicomputator AP-3.
Le macro preprocessor opera como un utensile pro reimplaciar texto. Illo es empleate a usar patronos de texto multe veces, typicamente applicationes de computator, ma anque in applicationes pro editar e processar textos. Le major parte del usatores usa m4 como un dependentia de GNU autoconf.
Capacitates
modificarm4 ha le sequente capacitates:
- Reimplaciar texto
- Substituer parametros
- Includer files
- Manipular catenas de characteres
- Expressiones conditional
- Expressiones arithmetic
- Interfacie al systema de operation
- Possibilitates diagnostic pro de developpator
Exemplo
modificarLe sequente fragmento es un exemplo que pote usate como un parte de un bibliotheca pro generar codice de HTML. Illo defini un macro commentate pro numerar sectiones automaticamente:
divert(-1)
m4 ha multe caudas de output que pote esser manipulate con le macro
`divert'. Caudas valide rangia de 0 a 10, inclusive. Le cauda basic es 0.
Invocar le macro `divert' macro con un cauda invalide causa que le texto es abandonate usque un invocation altere.
Nota que mesmo durante que le output es abandonate, virgulettas circa `divert' e macros altere es necessari pro prevenir un expansion.
# Macros non es expandite intra commentos, que dice que parolas de clave
# como divert e altere parolas predefinite pote esser usate como consequentia.
# HTML macro de utilitate:
define(`H2_COUNT', 0)
# Le H2_COUNT macro es definite de nove omne vece le macro H2 macro es usate:
define(`H2',
`define(`H2_COUNT', incr(H2_COUNT))<h2>H2_COUNT. $1</h2>')
divert(1)dnl
dnl
dnl Le macro dnl face m4 abandonar le resto del linea, assi
dnl preveniente lineas vacue apparer in le output.
dnl
H2(Prime Section)
H2(Secunde Section)
H2(Conclusion)
dnl
divert(0)dnl
dnl
<HTML>
undivert(1)dnl Un del caudas es pulsate al output.
</HTML>
Processar iste codice con m4 genera le texto sequente:
<HTML>
<h2>1. Prime Section</h2>
<h2>2. Secunde Section</h2>
<h2>3. Conclusion</h2>
</HTML>