InglesPransesEspanyol

OnWorks favicon

mp4h - Online sa Cloud

Magpatakbo ng mp4h sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command na mp4h na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


mp4h - Macro Processor para sa HTML Documents

VERSION


Inilalarawan ng dokumentasyong ito ang bersyon ng mp4h 1.3.1.

PANIMULA


Ang mp4h Ang software ay isang macro-processor na partikular na idinisenyo upang harapin ang mga HTML na dokumento.
Nagbibigay-daan ito sa mga makapangyarihang pagbuo ng programming, na may syntax na pamilyar sa mga may-akda ng HTML.

Ang software na ito ay batay sa Meta-HTML "http://www.metahtml.org/>", isinulat ni Brian J.
Fox, Kahit na ang parehong mga syntax ay magkamukha, ang source code ay ganap na naiiba. Sa katunayan, a
subset ng Meta-HTML ginamit bilang bahagi ng mas kumplikadong programa, WML (Website Meta
wika"http://www.thewml.org/>") na isinulat ni Ralf S. Engelchall at kung saan I
mapanatili mula noong Enero 1999. Para sa mga kadahilanang paglilisensya, mahirap i-hack Meta-HTML at iba
Nagpasya akong magsulat ng sarili kong macro-processor.

Sa halip na muling isulat ito mula sa simula, mas gusto kong gumamit ng isa pang makina ng macro-processor. ako
pinili ang GNU m4 "http://www.gnu.org/software/m4/>", na isinulat ni Rene Seindal, dahil sa
maraming pakinabang nito: ang software na ito ay matatag, matatag at napakahusay na dokumentado. Ito
na bersyon ng mp4h ay nagmula sa GNU m4 bersyon 1.4n, na isang bersyon ng pag-unlad.

Ang mp4h ang software ay hindi isang HTML editor; ang natatanging layunin nito ay magbigay ng isang madaling paraan upang
tukuyin ang sarili nitong mga macro sa loob ng mga HTML na dokumento. Walang planong magdagdag ng mga functionality
awtomatikong makagawa ng mga wastong HTML na dokumento, kung gusto mong linisin ang iyong code o i-validate
ito, gumamit lang ng post-processor tulad ng tidy "http://www.w3.org/People/Raggett/tidy/>".

COMMAND LINE Opsyon


Ang mga opsyonal na argumento ay nakapaloob sa loob ng mga square bracket. Ang lahat ng mga kasingkahulugan ng opsyon ay may a
katulad na syntax, kaya kapag ang isang mahabang pagpipilian ay tumatanggap ng isang argumento, ang maikling opsyon ay gagawin din.

Syntax call ay

mp4h [mga opsyon] [filename [filename] ...]

Ang mga opsyon ay inilarawan sa ibaba. Kung walang tinukoy na filename, o kung ang pangalan nito ay "-", kung gayon
ang mga character ay binabasa sa karaniwang input.

Operasyon mode
- Tumulong magpakita ng mensahe ng tulong at lumabas
--bersyon output mp4h impormasyon ng bersyon at paglabas
-E --fatal-babala itigil ang pagpapatupad pagkatapos ng unang babala
-Q --tahimik --tahimik sugpuin ang ilang mga babala para sa mga builtin
-S --safety-level="NUMBER" huwag paganahin ang mga mapanganib na pag-andar; 0 ay nangangahulugang walang pag-filter, 1 hindi paganahin
"execute" at 2 i-disable din ang isang ito kasama ang lahat ng filesystem related functions: "file-exists",
"real-path", "get-file-properties", "directory-contents" at "include".

Preprocessor mga tampok
-I --include="DIRECTORY" hanapin ang direktoryo na ito para sa mga kasama at mga pakete
-D --define="NAME"[=VALUE]"" itakda ang variable na NAME sa VALUE, o walang laman
-U --undefine="COMMAND" tanggalin ang builtin na COMMAND
-s --synclines bumuo ng `#line WALANG "FILE"' na mga linya

Parser mga tampok
-c --caseless="NUMBER" itakda ang case sensitiveness ayon sa mga piraso ng "NUMBER". Isang null
bit ay nangangahulugan na ang simbolo ay case sensitive, at ang mga bit ay tinukoy bilang sinusunod: 0 para sa mga tag, 1 para sa
mga variable at 2 para sa mga entity. Default na value ay 3, ibig sabihin, ang mga entity lang ang case sensitive.
-e --encoding="NAME" tukuyin ang pag-encode ng dokumento. Ang mga wastong opsyon ay `8bit' (default) o
`utf8'.
-X --expansion="NUMBER" itakda ang pag-uugali ng parser ayon sa mga piraso ng "NUMBER"

Ang NUMBER ay kumbinasyon ng

1 huwag i-parse ang mga hindi kilalang tag
2 Ang mga hindi kilalang tag ay ipinapalagay na simple
4 trailing star sa tag name huwag gawing simple ang tag na ito
8 isinasara ng walang kapares na tag ng pagtatapos ang lahat ng nakaraang hindi tugmang tag ng pagsisimula
16 bigyang-kahulugan ang mga backslash bilang printf
32 alisin ang trailing slash sa mga katangian ng tag
64 huwag tanggalin ang trailing star sa tag name
128 huwag tanggalin ang nangungunang bituin sa pangalan ng tag
256 huwag magdagdag ng puwang bago ang trailing slash sa mga attribute ng tag
1024 sugpuin ang mga babala tungkol sa masamang nested tag
2048 sugpuin ang mga babala tungkol sa nawawalang trailing slash

Sa bersyon 1.3.1, ang default na value ay 3114=2+8+32+1024+2048.

Mga Limitasyon kontrol
-H --hashsize="PRIME" itakda ang laki ng talahanayan ng hash ng paghahanap ng simbolo (default 509)
-L -nesting-limit="NUMBER" baguhin ang limitasyon ng artipisyal na pugad (default 250)

Pag-debug
-d --debug="FLAGS" itakda ang antas ng debug (walang FLAGS na nagpapahiwatig ng `aeq')
-t --trace="NAME" bakas ang NAME kung kailan ito tutukuyin
-l --arglength="NUMBER" paghigpitan ang laki ng pagsubaybay sa macro
-o --error-output="FILE" pag-redirect ng debug at pagsubaybay sa output

Ang mga flag ay alinman sa:

t bakas para sa lahat ng macro na tawag, hindi lamang na-debug
a ipakita ang aktwal na mga argumento
e ipakita ang pagpapalawak
c ipakita bago kolektahin, pagkatapos kolektahin at pagkatapos ng tawag
x magdagdag ng natatanging macro call id, kapaki-pakinabang sa c flag
f sabihin ang kasalukuyang pangalan ng input file
l sabihin ang kasalukuyang input line number
p ipakita ang mga resulta ng paghahanap ng landas
m ipakita ang mga resulta ng mga pagpapatakbo ng module
i ipakita ang mga pagbabago sa input file
V shorthand para sa lahat ng mga flag sa itaas

DESCRIPTION


Ang mp4h Ang software ay isang macro-processor, na nangangahulugan na ang mga keyword ay pinapalitan ng iba
text. Inilalarawan ng kabanatang ito ang lahat ng primitive. Bilang mp4h ay espesyal na idinisenyo para sa
Mga dokumento ng HTML, ang syntax nito ay halos kapareho sa HTML, na may mga tag at katangian. Isa
Ang mahalagang tampok ay walang katumbas sa HTML: mga komento hanggang sa katapusan ng linya. Lahat ng text
ang pagsunod sa tatlong tutuldok ay itatapon hanggang sa dulo ng linya, tulad ng

;;; Ito ay isang komento

tungkulin Macros
tandaan: Ang lahat ng mga halimbawa sa dokumentasyong ito ay pinoproseso sa pamamagitan ng mp4h na may mga bandila ng pagpapalawak
nakatakda sa zero (tingnan ang isang paglalarawan ng mga posibleng pagpapalawak ng mga flag sa dulo ng dokumento), ito ay
bakit ang mga simpleng tag ay naglalaman ng trailing slash. Pero mp4h maaaring mag-output ng mga plain HTML file kasama ng iba
mga bandila ng pagpapalawak.

Ang kahulugan ng mga bagong tag ay ang pinakakaraniwang gawain na ibinigay ng mp4h. Tulad ng HTML, macro
ang mga pangalan ay case insensitive, maliban kung ang opsyong "-c" ay ginagamit upang baguhin ang default na gawi na ito.
Sa dokumentasyong ito, maliliit na titik lamang ang ginagamit. Mayroong dalawang uri ng mga tag:
simple at kumplikado. Ang isang simpleng tag ay may sumusunod na anyo:



samantalang ang isang kumplikadong tag ay mukhang:


katawan


Mula noong bersyon 0.9.1, mp4h alam din ang XHTML syntax, kaya ang iyong input file ay maaaring umayon sa HTML
o XHTML syntax. Sa manwal na ito, pinagtibay namin ang huli, kaya naman ang mga simpleng tag ay may a
trailing slash sa mga katangian. Kung gusto mong gumawa ng mga HTML na file gamit ang input file na ito, ikaw
maaaring pumili ng sapat na flag na "--expansion" o gumamit ng post-processor tulad ng tidy
"http://www.w3.org/People/Raggett/tidy/>".

Kapag ang isang simpleng tag ay tinukoy ng mp4h, maaari itong i-parse kahit na ang trailing slash ay
tinanggal, dahil mp4h Alam niya na ang tag na ito ay simple. Ngunit ito ay isang magandang kasanayan na palaging
magdagdag ng trailing slash sa mga simpleng tag.

Sa mga macro na paglalarawan sa ibaba, ang isang slash ay nagpapahiwatig ng isang simpleng tag, at isang V na letra iyon
ang mga katangian ay binabasa ng verbatim (nang walang pagpapalawak) (tingnan ang kabanata sa macro expansion para sa
karagdagang detalye).

· tukuyin-tag

"pangalan" "[attributes=verbatim]" "[endtag=required]" "[whitespace=delete]"

Hinahayaan ka ng function na ito na tukuyin ang sarili mong mga tag. Ang unang argumento ay ang pangalan ng utos.
Ang kapalit na text ay ang function body.

Source:

bar


output:

bar

Kahit na ang mga puwang ay karaniwang kakaunti ang saklaw sa HTML syntax, mahalagang tandaan iyon

bar

at


bar


ay hindi katumbas, ang huling anyo ay naglalaman ng dalawang bagong linya na wala sa
form

"whitespace=delete"
Ang ilang mga puwang ay pinipigilan sa kapalit na teksto, lalo na ang anumang nangunguna o sumusunod
mga puwang, at mga bagong linya na hindi nakapaloob sa mga anggulong bracket.

"endtag=required"
Tukuyin ang isang kumplikadong tag

Source:

bar


output:

bar

Source:

;;;
katawan ay: %katawan
Heto na

output:

katawan ay: Narito ito

"attributes=verbatim"
Bilang default, pinalawak ang mga attribute bago palitan ang text. Kung gagamitin ang katangiang ito,
ang mga katangian ay ipinapasok sa kapalit na teksto nang walang pagpapalawak.

Source:

quux

Katawan: %Ubody
Mga Katangian: %Uattributes

"> Dito na tayo

output:

Body: Eto na
Mga Katangian: txt=

· magbigay-tag

"pangalan" "[attributes=verbatim]" "[endtag=required]" "[whitespace=delete]"

Ang utos na ito ay katulad ng nauna, maliban na walang operasyon na ginagawa kung ito
natukoy na ang utos.

· hayaan ang "S"

"bago=luma"

Kopyahin ang isang function. Ang command na ito ay kapaki-pakinabang upang i-save ang isang macro definition bago ito muling tukuyin.

Source:

isa

dalawa


output:

dalawa isa

· undef "S"

"pangalan"

Magtanggal ng kahulugan ng command.

Source:

isa



output:



· set-hook

"pangalan" "[position=before|after]" "[action=insert|append|palitan]"

Magdagdag ng text sa isang paunang natukoy na macro. Ang mekanismong ito ay nagbibigay-daan sa mga pagbabago ng mga kasalukuyang macro
nang hindi kailangang mag-alala tungkol sa uri nito, kumplikado man ito o hindi.

Source:



dati

Pagkatapos


output:

Bago10
pagkatapos

· get-hook "S"

"pangalan" "[position=before|after]"

I-print ang mga kasalukuyang hook ng isang macro.

Source:

Inilagay ang text na may position=before: !
Inilagay ang text na may position=after: !

output:

Inilagay ang text na may position=before:
Dati pa!
Inilagay ang text na may position=after:
Pagkatapos!

· attributes-quote na "S"

"%attributes"

Tulad ng %attributes, maliban sa mga pares na "attr=value" ay naka-print na may double quotes
nakapalibot na mga halaga ng katangian, at isang nangungunang espasyo ay idinagdag kung ilang teksto ang naka-print.

Source:

;;;
%mga katangian
/>




output:

id=logo src=logo.gif name=Logo alt=Aming logo




· attribute-extract "S"

"pangalan1" "[,pangalan2[,pangalan3...]]" "%attributes"

I-extract mula sa %attributes ang mga pares na "attr=value" para sa mga pangalan na tumutugma sa alinman sa pangalan1, pangalan2....

Source:


/>



output:



· mga katangian-alisin ang "S"

"pangalan1" "[,pangalan2[,pangalan3...]]" "%attributes"

Alisin sa %attributes ang mga pares na "attr=value" para sa mga pangalan na tumutugma sa alinman sa pangalan1, pangalan2....

Source:


/> />



output:



tandaan: Ang dalawang nakaraang pag-andar ay espesyal, dahil hindi katulad ng lahat ng iba pang mga macro, ang kanilang
hindi bumubuo ng grupo ang pagpapalawak. Ito ay kinakailangan upang mai-parse ang resultang listahan ng
mga katangian

Sa dalawang function na iyon, ang mga pangalan ng mga katangian ay maaaring mga regular na expression. Pangunahing layunin ng
ang mga primitive na ito ay tumulong sa pagsusulat ng mga macro na tumatanggap ng anumang uri ng mga katangian nang hindi nagkakaroon
upang ipahayag ang mga ito. Ang isang kanonikal na halimbawa ay

Source:



/>
/>
href="/ ">


<href class=web url="http://www.foo.com" name="Welcome" />

output:

<a class="web"
href="/http://www.foo.com">Maligayang pagdating

Ngunit gusto namin ngayon na magdagdag ng isang katangian ng imahe. Para magsulat tayo

Source:



/>
/>
href="/ ">

/>
src="/ " alt=" " hangganan=0 />

/>



<href class=web url="http://www.foo.com" name="Welcome" image="foo.png"/>

output:

<a class="web"
href="/http://www.foo.com">
src="/foo.png" loading="lazy" alt="Welcome" border=0 />

Kailangan natin ng mekanismo para sabihin mp4h na ang ilang mga katangian ay tumutukoy sa mga partikular na HTML tag. A
Ang solusyon ay ang prepend attribute na may tag name, hal

Source:



/>
/>
href="/ ">

/>
src="/ " alt=" " />

/>



<href a:class=web img:id=logo img:border=1
url="http://www.foo.com" name="Welcome" image="foo.png" loading="lazy" />

output:

<a a:class="web"
href="/http://www.foo.com">
src="/foo.png" loading="lazy" alt="Welcome" />

Ang halimbawang ito ay nagpapakita na ang mga regular na expression ay maaaring gamitin sa loob ng mga pangalan ng mga katangian, ngunit ito ay
hindi pa rin kumpleto, dahil gusto naming alisin ang prefix sa mga attribute. Ang isang solusyon ay kasama
"subst-in-string", ngunit mayroong isang mas eleganteng isa:

Source:



/>
/>
href="/ ">

/>
src="/ " alt=" " />

/>



<href :a:class=web :img:id=logo :img:border=1
url="http://www.foo.com" name="Welcome" image="foo.png" loading="lazy" />

output:

<a class="web"
href="/http://www.foo.com">
src="/foo.png" loading="lazy" alt="Welcome" />

Kapag may mga subexpression sa loob ng mga regular na expression, ang mga ito ay naka-print sa halip na ang
buong ekspresyon. Tandaan din na naglalagay ako ng tutuldok bago ang prefix upang hindi paghaluin ang mga ito
na may mga XML namespace.

Mga Entity
Ang mga entity ay mga macro sa parehong paraan tulad ng mga tag, ngunit hindi sila kumukuha ng anumang mga argumento. Samantalang
Ang mga tag ay karaniwang ginagamit upang markahan ang teksto, ang mga entity ay naglalaman ng namarkahang teksto. Gayundin
tandaan na hindi tulad ng mga tag, ang mga entity ay bilang default na case sensitive.

Ang isang entity ay may sumusunod na anyo:

&entity;

· tukuyin ang-entity

"pangalan"

Hinahayaan ka ng function na ito na tukuyin ang sarili mong mga entity. Ang unang argumento ay ang pangalan ng entity.
Ang kapalit na text ay ang function body.

Source:

bar
&foo;

output:

bar

Variable
Ang mga variable ay isang espesyal na kaso ng mga simpleng tag, dahil hindi sila tumatanggap ng mga katangian. Sa
katotohanan ang kanilang paggamit ay iba, dahil ang mga variable ay naglalaman ng teksto samantalang ang mga macro ay kumikilos tulad ng
mga operator. Ang isang magandang tampok tungkol sa mga variable ay ang kanilang pagmamanipula bilang mga array. Sa totoo lang
ang mga variable ay maaaring ituring na parang mga listahang pinaghihiwalay ng bagong linya, na magbibigay-daan sa makapangyarihan
mga function ng pagmamanipula tulad ng makikita natin sa ibaba.

· set-var "S"

"pangalan[=value]" "[pangalan[=value]] ... "

Ang utos na ito ay nagtatakda ng mga variable.

· set-var-verbatim "S""V"

"pangalan[=value]" "[pangalan[=value]] ... "

Tulad ng nasa itaas ngunit ang mga katangian ay binabasa ng verbatim.

· set-var-x

"pangalan=variable-name"

Ang utos na ito ay nagtatalaga sa isang variable ng halaga ng katawan ng utos. Ito ay partikular na
kapaki-pakinabang kapag ang mga variable na halaga ay naglalaman ng mga bagong linya at/o mga quote.

Tandaan na ang variable ay hindi ma-index sa command na ito. Tandaan din, na ang utos na ito
kumikilos bilang set-var-verbatim: Ang katawan ay hindi pinalawak hanggang ang variable ay ipinapakita na may
get-var.

· get-var "S"

"pangalan" "[pangalan] ... "

Ipakita ang mga variable na nilalaman. Kung ang isang numerong halaga sa loob ng mga square bracket ay idinagdag sa a
variable name, kinakatawan nito ang index ng isang array. Ang unang index ng mga array ay 0 by
kombensyon.

Source:


Ito ay bersyon
Ang operating system ay
" "


output:

Ito ay bersyon 0.10.1

Ang operating system ay
"Linux
"

Source:

<set-var foo="0
1
2
3" />


output:

200
1
2
3

· get-var-once "S""V"

"pangalan" "[pangalan] ... "

Tulad ng nasa itaas ngunit ang mga katangian ay hindi pinalawak.

Source:

0.10.1
" /> ;;;
Narito ang bersyon
" /> ;;;
Narito ang bersyon
" /> ;;;
Narito ang bersyon

output:

Narito ang bersyon 0.10.1
Narito ang bersyon 0.10.1
Narito ang bersyon

· panatilihin ang "S"

"pangalan" "[pangalan] ... "

Ang lahat ng mga variable ay pandaigdigan, walang variable o macro scope. Para sa kadahilanang ito ang isang stack ay
ginagamit upang mapanatili ang mga variable. Kapag ang utos na ito ay hinihimok, ang mga argumento ay mga pangalan ng
mga variable, na ang mga halaga ay inilalagay sa tuktok ng stack at ang mga variable ay ni-reset sa isang
walang laman na string.

· ibalik ang "S"

"pangalan" "[pangalan] ... "

Ito ang kabaligtaran: ang mga argumento ay mga pangalan ng mga variable, na nakatakda sa halagang nakita
sa tuktok ng stack, at ang stack ay ilalabas.

tandaan: Ang "preserve" na tag ay itinutulak muna ang huling argumento nito, samantalang ang "restore" ang unang nag-pop nito
unang argumento.

Source:




Sa loob: src= pangalan= teksto=



Bago: src= pangalan= teksto=

Pagkatapos: src= pangalan= teksto=

output:

Bago: src=foo.png name= text=Hello, World!
Sa loob: src=bar name=quux text=
Pagkatapos: src=foo.png name= text=Hello, World!

· unset-var "S"

"pangalan" "[pangalan] ... "

I-undefine ang mga variable.

· var-umiiral ang "S"

"pangalan"

Nagbabalik ng "true" kapag umiiral ang variable na ito.

· dagdag na "S"

"pangalan" "[ni=halaga]"

Dagdagan ang variable na ang pangalan ay ang unang argumento. Ang default na pagtaas ay isa.

"sa pamamagitan ng =halaga"
Baguhin ang halaga ng pagtaas.

Source:






output:

10
11
8

· pagbaba ng "S"

"pangalan" "[ni=halaga]"

Bawasan ang variable na ang pangalan ay ang unang argumento. Ang default na pagbabawas ay isa.

"sa pamamagitan ng =halaga"
Baguhin ang halaga ng pagbabawas.

Source:






output:

10
9
6

· copy-var "S"

"src" "dest"

Kopyahin ang isang variable sa isa pa.

Source:





output:

10

· defvar "S"

"pangalan" "halaga"

Kung ang variable na ito ay hindi tinukoy o tinukoy sa isang walang laman na string, ito ay nakatakda sa
pangalawang argumento.

Source:





output:

Pamagat
Pamagat

· simbolo-impormasyon "S"

"pangalan"

Ipakita ang impormasyon sa mga simbolo. Kung ito ay isang variable na pangalan, ang salitang "STRING" ay naka-print bilang
pati na rin ang bilang ng mga linyang nakapaloob sa variable na ito.

Kung ito ay isang macro name, isa sa mga sumusunod na mensahe ay naka-print: "PRIM COMPLEX", "PRIM
TAG", "USER COMPLEX" o "USER TAG"

Source:

<set-var x="0\n1\n2\n3\n4" />
bar
quux






output:

STRING
5
PRIM TAG
PRIM COMPLEX
USER TAG
KOMPLEX NG USER

Pisi Pag-andar
· string-length "S"

"string"

Ini-print ang haba ng string.

Source:

<set-var foo="0
1
2
3" />;;;
/>
;;;
/> />;;;


output:

7
7

· downcase na "S"

"string"

I-convert sa maliliit na titik.

Source:



output:

gumagana ba?

· upcase na "S"

"string"

I-convert sa malalaking titik.

Source:



output:

GUMAGANA BA?

· gamitan ng malaking titik ang "S"

"string"

I-convert sa isang pamagat, na may malaking titik sa simula ng bawat salita.

Source:



output:

Ito ba ang Work?

· substring na "S"

"string" "[simula [katapusan]]"

Kinukuha ang isang substring mula sa isang string. Ang unang argumento ay orihinal na string, pangalawa at pangatlo
ay mga index ng simula at pagtatapos. Sa pamamagitan ng convention ang unang character ay may null index.

Source:


4 />
4 6 />

output:

efghijk
ef

· string-eq "S"

"string1" "string2" "[caseless=true]"

Nagbabalik ng "true" kung magkapantay ang unang dalawang argumento.

Source:

1:
2:

output:

1:
2: totoo

"caseless=true"
Ang paghahambing ay case insensitive.

Source:

1:
2:

output:

1: totoo
2: totoo

· string-neq "S"

"string1" "string2" "[caseless=true]"

Nagbabalik ng "true" kung ang unang dalawang argumento ay hindi pantay.

Source:

1:
2:

output:

1: totoo
2:

"caseless=true"
Ang paghahambing ay case insensitive.

Source:

1:
2:

output:

1:
2:

· string-compare "S"

"string1" "string2" "[caseless=true]"

Naghahambing ng dalawang string at ibinabalik ang isa sa mga value na mas kaunti, mas malaki o katumbas depende sa
paghahambing na ito.

Source:

1:
2:

output:

1: mas mababa
2: katumbas

"caseless=true"
Ang paghahambing ay case insensitive.

Source:

1:

output:

1: katumbas

· char-offset na "S"

"string" "karakter" "[caseless=true]"

Nagpi-print ng array na naglalaman ng mga index kung saan lumalabas ang character sa string.

"caseless=true"
Ang paghahambing ay case insensitive.

Source:

1:
2:

output:

1:0
8
2:0
4
8

· printf "S"

"format" "string" "[pisi ...]"

Nagpi-print ayon sa ibinigay na format. Sa kasalukuyan, ang %s flag character lamang ang nakikilala,
at "$" extension ay suportado upang baguhin ang pagkakasunud-sunod ng mga argumento.

Source:

1:
2:

output:

1:foo baz bar 10
2:foo 10 bar baz

regular expression
Ang suporta sa regular na expression ay ibinibigay ng PCRE (Perl Compatible Regular Expressions)
library package, na open source software, copyright ng University of Cambridge.
Ito ay isang napakagandang piraso ng software, ang mga pinakabagong bersyon ay magagamit sa
"ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/>".

Bago ang bersyon 1.0.6, ipinatupad ang mga regular na expression ng POSIX. Dahil dito, ang
ang mga sumusunod na macro ay kinikilala ang dalawang katangian, "caseless=true" at "singleline=true|false".
Ngunit pinapayagan ng Perl ang isang mas mahusay na kontrol sa mga regular na expression na may tinatawag na mga modifier,
na kung saan ay assed sa bagong "reflags" attribute. Maaaring naglalaman ito ng isa o higit pang mga modifier:

i Ang pagtutugma ay case insensitive
m Tratuhin ang string bilang maraming linya. Kapag itinakda, isang "^" ang tumutugma sa anumang simula ng linya, at "$"
anumang dulo ng linya. Bilang default, tumutugma ang mga ito sa simula at pagtatapos ng string.
s Tratuhin ang string bilang isang linya. Ang isang tuldok (".") ay maaari ding tumugma sa isang bagong linya, samantalang hindi ito tumutugma
bilang default.
x Payagan ang naka-format na regular na expression, ibig sabihin ay ang mga whitespace, bagong linya at komento ay
inalis sa regular na expression bago iproseso.

tandaan: Ang attribute na "singleline=true" ay isang kasingkahulugan para sa "s" modifier, samantalang
Ang "singleline=false" ay kasingkahulugan ng "m" modifier. Ang pag-uugali na ito ay iba hanggang sa
mp4h 1.0.6.

· subst-in-string na "S"

"string" "regexp" "[kapalit]" "[caseless=true]" "[singleline=true|false]"
"[reflags=[imsx]]"

Palitan ang isang regular na expression sa isang string ng isang kapalit na text.

Source:


"[ce]" />
"([ce])" "\\1 " />

output:

abfghijk
abc de fghijk

Source:


".$" "" />
".$" "" singleline=false />
"
([ac]) | [0-9]
" ":\\1:" reflags=x />

output:

abcdefghijk
abcdefghijk
abcdefghij
abcdefghij
abcdefghij
abcdefghij
:a::b::c:defghijk
:a::b::c:defghijk
:a::b::c:defghijk

· subst-in-var "S"

"pangalan" "regexp" "[kapalit]" "[caseless=true]" "[singleline=true|false]"
"[reflags=[imsx]]"

Nagsasagawa ng mga pagpapalit sa loob ng variable na nilalaman.

· tumugma sa "S"

"string" "regexp" "[caseless=true]" "[singleline=true|false]" "[reflags=[imsx]]"
"[action=report|extract|delete|startpos|endpos|haba]"

"action=report"
Nagpi-print ng "true" kung naglalaman ang string ng regexp.

"action=extract"
Ini-print ang expression na tumutugma sa regexp sa string.

"action=delete"
Ini-print ang string nang walang expression na tumutugma sa regexp sa string.

"action=startpos"
Ini-print ang unang char ng expression na tumutugma sa regexp sa string. Kung wala
tugma, nagbabalik ng "-1".

"action=endpos"
Ini-print ang huling char ng expression na tumutugma sa regexp sa string. Kung wala
tugma, nagbabalik ng "-1".

"aksyon=haba"
Ini-print ang haba ng expression na tumutugma sa regexp sa string.

Source:

1:
2:
3:
4:
5:
6:

output:

1: totoo
2:cde
3:abfghijk
4:2
5:5
6:3

Mga Arrays
may mp4h ang isa ay madaling makitungo sa mga string array. Ang mga variable ay maaaring ituring bilang isang solong
halaga o bilang isang listahan ng mga string na pinaghihiwalay ng bagong linya. Kaya pagkatapos tukuyin

<set-var digits="0
1
2
3" />

maaaring tingnan ng isa ang nilalaman nito o isa sa mga halagang ito:

Source:




output:

0
1
2
3
2

· laki ng array "S"

"pangalan"

Nagbabalik ng laki ng array na kung saan ay ang bilang ng mga linyang naroroon sa variable.

Source:



output:

4

· array-push "S"

"pangalan" "halaga"

Magdagdag ng value (o higit pa kung naglalaman ang value na ito ng mga bagong linya) sa dulo ng isang array.

Source:




output:

0
1
2
3
10
11
12

· array-pop "S"

"pangalan"

Alisin ang pinakamataas na halaga ng isang array at ibalik ang string na ito.

· array-topvalue na "S"

"pangalan"

Ini-print ang huling entry ng isang array.

Source:



output:

12

· array-add-natatanging "S"

"pangalan" "halaga" "[caseless=true]"

Magdagdag ng value sa dulo ng array kung wala pa ang value na ito sa variable na ito.

Source:




output:

0
1
2
3
10
11
12

"caseless=true"
Ang paghahambing ay case insensitive.

· array-concat "S"

"pangalan1" "[pangalan2] ... "

Pinagsasama-sama ang lahat ng mga array sa una.

Source:





output:

foo
bar

· array-miyembro "S"

"pangalan" "halaga" "[caseless=true]"

Kung ang halaga ay nakapaloob sa array, ibinabalik ang index nito kung hindi ay nagbabalik -1.

Source:



output:

5

"caseless=true"
Ang paghahambing ay case insensitive.

· array-shift "S"

"pangalan" "offset" "[simula=magsimula]"

Naglilipat ng array. Kung negatibo ang offset, mawawala ang mga index na mas mababa sa 0. Kung positibo ang offset,
ang mga unang index ay puno ng walang laman na mga string.

Source:


ngayon:

At:

output:

ngayon:

0
1
2
3
10
11
12

At: 2
3
10
11
12

"simula =simulan"
Baguhin ang pinagmulan ng mga shift (default ay 0).

Source:



output:

2
3
12

· pag-uri-uriin ang "S"

"pangalan" "[caseless=true]" "[numeric=true]" "[sortorder=reverse]"

Pagbukud-bukurin ang mga linya ng isang array sa lugar. Default ay ang pag-uri-uriin ang mga linya ayon sa alpabeto.

Source:



output:

12
2
3

"caseless=true"
Ang paghahambing ay case insensitive.

"numeric=true"
Pagbukud-bukurin ang mga linya ayon sa numero

Source:



output:

2
3
12

"sortorder=reverse"
Baliktarin ang pagkakasunud-sunod

Source:

;;;


output:

12
3
2

Numerical operator
Ang mga operator na ito ay nagsasagawa ng mga pangunahing pagpapatakbo ng arithmetic. Kapag ang lahat ng operand ay integer
Ang resulta ay isang integer din, kung hindi, ito ay isang float. Ang mga operator na ito ay maliwanag.

· magdagdag ng "S"

"numero 1" "numero 2" "[numero3] ... "

· ibawas ang "S"

"numero 1" "numero 2" "[numero3] ... "

· paramihin ang "S"

"numero 1" "numero 2" "[numero3] ... "

· hatiin ang "S"

"numero 1" "numero 2" "[numero3] ... "

· min "S"

"numero 1" "numero 2" "[numero3] ... "

· max "S"

"numero 1" "numero 2" "[numero3] ... "

Source:




output:

21
21.000000

Source:


/>" /> />



output:

720

· modulo "S"

"numero 1" "numero 2"

Hindi tulad ng mga function na nakalista sa itaas ang modulo function ay hindi maaaring humawak ng higit sa 2 argumento, at
ang mga argumentong ito ay dapat na mga integer.

Source:



output:

2

Ang mga function na iyon ay naghahambing ng dalawang numero at nagbabalik ng "totoo" kapag ang paghahambing na ito ay totoo. Kung
ang isang argumento ay hindi isang numero, ang paghahambing ay mali.

· gt "S"

"numero 1" "numero 2"

Nagbabalik ng "true" kung ang unang argumento ay mas malaki kaysa sa pangalawa.

· lt "S"

"numero 1" "numero 2"

Nagbabalik ng "true" kung ang unang argumento ay mas mababa kaysa sa pangalawa.

· eq "S"

"numero 1" "numero 2"

Nagbabalik ng "true" kung pantay ang mga argumento.

· neq "S"

"numero 1" "numero 2"

Nagbabalik ng "true" kung hindi pantay ang mga argumento.

Kaugnay operator
· hindi "S"

"string"

Nagbabalik ng "true" kung walang laman ang string, kung hindi, nagbabalik ng walang laman na string.

· at "S"

"string" "[string] ... "

Ibinabalik ang huling argumento kung ang lahat ng argumento ay walang laman.

· o "S"

"string" "[string] ... "

Ibinabalik ang unang hindi walang laman na argumento.

Pag-agos function
· pangkat "S""V"

"pagpapahayag" "[expression] ... " "[separator=string]"

Pinapangkat ng function na ito ang maramihang mga pahayag sa iisang isa. Ang ilang mga halimbawa ay makikita
sa ibaba na may mga kondisyong operasyon.

Ang isang hindi gaanong intuitive ngunit napaka-kapaki-pakinabang na paggamit ng macro na ito ay upang mapanatili ang mga bagong linya kapag
"whitespace=delete" ay tinukoy.

Source:


Text sa
3 linyang wala
whitespace=tanggalin


Text sa
3 linya na may
whitespace=tanggalin


<group "Text on
3 linya na may
whitespace=delete" />





output:

Text sa
3 linyang wala
whitespace=tanggalin

Mag-text sa 3 linya na maywhitespace=delete
Text sa
3 linya na may
whitespace=tanggalin

Tandaan na ang mga bagong linya ay pinigilan sa "text2" at tiyak na hindi gusto ang resulta.

· tambalan

"pagpapahayag" "[expression] ... " "[separator=string]"

Tulad ng "grupo", ngunit ang tag na ito ay kumplikado.

"separator=string"
Bilang default, ang mga argumento ay isinantabi. Tinutukoy ng attribute na ito ang isang separator na ipinasok
sa pagitan ng mga argumento.

· ihiwalay ang "S"

"pagpapahayag"

Ang kabaligtaran ba ng trabaho sa "grupo", ang argumento nito ay hindi na itinuturing bilang isang bagay kapag
naproseso ng isa pang utos.

· noexpand "S""V"

"utos" "[utos] ... "

Ini-print ang mga argumento nito nang walang pagpapalawak. Hindi sila kailanman mapapalawak maliban kung ang "palawakin"
Ang tag ay ginagamit upang kanselahin ang "noexpand" na tag na ito.

· palawakin ang "S"

"utos" "[utos] ... "

Kinakansela ang "noexpand" na tag.

Source:

bar=LT=/define-tag>" "=LT=" "<" />

quux=LT=/define-tag>" "=LT="
" " />


output:

bar
quux
bar

· kung "S""V"

"string" "pagkatapos-sugnay" "[ibang-sugnay]"

Kung ang string ay walang laman, ang pangalawang argumento ay sinusuri kung hindi naman ang ikatlong argumento ay
sinuri

Source:







output:

oo
hindi

· ifeq "S""V"

"string1" "string2" "pagkatapos-sugnay" "[ibang-sugnay]"

Kung ang unang dalawang argumento ay magkaparehong mga string, ang pangatlong argumento ay susuriin kung hindi naman ay pang-apat
nasusuri ang argumento.

· ifneq "S""V"

"string1" "string2" "pagkatapos-sugnay" "[ibang-sugnay]"

Kung ang unang dalawang argumento ay hindi magkaparehong mga string, ang ikatlong argumento ay susuriin kung hindi man
nasusuri ang ikaapat na argumento.

· kailan

"string"

Kapag ang argumento ay hindi walang laman, ang katawan nito ay sinusuri.

· habang "V"

"cond"

Bagama't totoo ang kundisyon, sinusuri ang paggana ng katawan.

Source:


0 />>;;;
;;;


output:

10 9 8 7 6 5 4 3 2 1

· foreach

"variable" "array" "[simula=magsimula]" "[end=wakas]" "[hakbang=pas]"

Ang macro na ito ay katulad ng "foreach" na Perl's macro: isang variable na umiikot sa mga halaga ng array
at ang function body ay sinusuri para sa bawat halaga.

Ang unang argumento ay isang generic na pangalan ng variable, at ang pangalawa ay ang pangalan ng isang array.

Source:

<set-var x="1\n2\n3\n4\n5\n6" />


output:

1 2 3 4 5 6

"simula =simulan"
Nilaktawan ang mga unang index.

Source:

<set-var x="1\n2\n3\n4\n5\n6" />


output:

+4 5 6

"tapos =wakas"
Humihinto pagkatapos maabot ng index ang halagang iyon.

Source:

<set-var x="1\n2\n3\n4\n5\n6" />


output:

+1 2 3

"hakbang=hakbang"
Baguhin ang index increment (default ay 1). Kung negatibo ang hakbang, ituturing ang array
baligtarin ang pagkakasunod-sunod.

Source:

<set-var x="1\n2\n3\n4\n5\n6" />



output:

+1 3 5
+6 4 2

· var-case na "S""V"

"var1=value1 aksyon1" "[var2=value2 aksyon2 ... "

Ang utos na ito ay gumaganap ng maraming kundisyon na may isang pagtuturo.

Source:



<var-case
x=1 x />
x=2 x />
y=1 y />
y=2 y />
/>




output:

x1y0

y-1

· basagin ang "S"

Sinisira ang pinakaloob na "habang" loop.

Source:


0 />>;;;
;;;
5 />;;;


output:

10 9 8 7 6

· ibalik ang "S"

"[up=number]" "string"

Ang utos na ito ay agad na lumabas mula sa pinakaloob na macro. Maaari ding maglagay ng mensahe.
Ngunit binago ng macro na ito ang pag-parse ng token kaya maaaring maging lubhang mapanganib ang paggamit nito sa ilan
sitwasyon.

"pataas=numero"
Tinutukoy ng katangiang ito kung gaano karaming mga antas ang dapat ilabas. Bilang default, isa lang
nilaktawan ang antas. Sa isang null na halaga, ang lahat ng kasalukuyang macro ay lalabas mula sa. Isang negatibo
gawin ang parehong halaga, at huminto sa pagproseso ng kasalukuyang file.

· babala "S"

"string"

Nagpi-print ng babala sa karaniwang error.

· lumabas sa "S"

"[status=rc]" "[mensahe=string]"

Agad na lumabas sa programa.

"mensahe=string"
Nagpi-print ng mensahe sa karaniwang error.

"katayuan=rc"
Pinipili ang code na ibinalik ng program (-1 bilang default).

· sa-end-of-file

Ito ay isang espesyal na utos: ang nilalaman nito ay nakaimbak at lalawak pagkatapos ng pagtatapos ng input.

talaksan function
· direktoryo-nilalaman "S"

"diname" "[matching=regexp]"

Ibinabalik ang isang bagong linya na pinaghiwalay na listahan ng mga file na nasa isang ibinigay na direktoryo.

Source:



output:

mp4h.mp4h

· totoong landas na "S"

"patname=pangalan ng landas"

Niresolba ang lahat ng simbolikong link, dagdag na ``/'' na character at reference sa /./ at /../ in
pathname, at lumalawak sa resultang absolute pathname. Lahat maliban sa huling bahagi ng
dapat umiral ang pathname kapag tinawag ang real-path.

Ang tag na ito ay partikular na kapaki-pakinabang kapag naghahambing kung ang mga pangalan ng file o direktoryo ay magkapareho.

Source:

/>

output:

/build/mp4h-b0pRnc/mp4h-1.3.1/doc/mp4h.mp4h

· umiiral ang file na "S"

"filename"

Ibinabalik ang "true" kung may file.

· get-file-properties "S"

"filename"

Nagbabalik ng hanay ng impormasyon sa file na ito. Ang mga impormasyong ito ay: laki, uri, oras,
mtime, atime, may-ari at grupo.

Source:

/>

output:

68603
FILE
1450038844
1450038844
1450038844
ugat
ugat

· isama ang "S"

"file=filename | command=command-line" "[alt=aksyon]" "[verbatim=true]"

Ipasok ang mga nilalaman ng isang file sa file system - kung ang "file" na katangian ay ibinigay -, o
ang output mula sa pagpapatupad ng isang utos ng system - kung ang katangiang "utos" ay ibinigay - sa
ang input stream. Para sa pabalik na compatibility, kung hindi ang "file" o ang "command"
ang mga katangian ay ibinigay, ang unang argumento ay kinuha bilang isang file na isasama.

"file=filename"
Ang ibinigay na file ay binabasa at ipinasok sa input stream. Ang katangiang ito ay hindi maaaring
pinagsama sa katangian ng command.

Ang mga file ay unang hinanap sa kasalukuyang direktoryo, pagkatapos ay sa mga direktoryo na tinukoy sa
command-line na may opsyong "-I", susunod sa mga direktoryo na nakalista sa "MP4HLIB"
environment variable (ito ay dating "MP4HPATH" para sa mga bersyon bago ang 1.3), at huli
sa ilalim ng lokasyon ng compile-time ("/usr/local/lib/mp4h/1.3.1:/usr/local/share/mp4h" ni
default).

"utos =command-line"
Ang ibinigay na command line ay isinasagawa sa operating system, at ang output nito ay
ipinasok sa input stream. Ang katangiang ito ay hindi maaaring isama sa file
katangian.

Ang ibinigay na command line ay isinasagawa gamit ang popen(3) karaniwang C library routine. Ang
Ang command ay isinasagawa gamit ang standard system shell, na sa Posix compliant system
is shNa (1).

"alt=aksyon"
Kung ang file ay hindi natagpuan, ang kahaliling pagkilos na ito ay pinangangasiwaan. Kung hindi nakatakda ang katangiang ito
at ang file ay hindi nahanap, pagkatapos ay isang error ay nakataas. Ang katangiang ito ay walang epekto kapag ang
tinukoy ang katangian ng command.

"verbatim=true"
Ang nilalaman ng file ay kasama nang walang pagpapalawak. Ito ay katulad ng paggamit ng m4 hindi lumilipat
macro na may filename bilang argumento.

Source:



output:

Linux

· gamitin ang "S"

"pangalan=pakete"

Mag-load ng mga kahulugan mula sa isang package file.

· komento

Walang ginagawa ang tag na ito, basta na lang itinatapon ang katawan nito.

· set-eol-comment "S"

"[string]"

Baguhin ang mga character ng komento.

· set-quotes "S"

"[pisi string]" "[display=visible]"

Bilang default, ang lahat ng mga character sa pagitan ng "<@[" at "]@"> na mga pares ay binabasa nang walang pag-parse. Kailan
tinatawag na walang argumento, pinipigilan ng macro na ito ang feature na ito. Kapag tinawag kasama ang dalawa
argumento, nire-redefine nito ang mga start at end delimiters. Simulan ang delimiter ay dapat magsimula sa kaliwa-
angle bracket, at end delimiter ay dapat magtapos sa right-angle bracket.

"display=visible"
Ang mga delimiter ay isinusulat din sa output.

Palipasan ng oras function
Ang mga diversion ay isang paraan ng pansamantalang pag-save ng output. Ang output ng mp4h maaari sa anumang oras
inilihis sa isang pansamantalang file, at muling ipasok sa output stream, hindi nalipat, muli
sa ibang panahon.

Ang mga may bilang na diversion ay binibilang mula 0 pataas, ang diversion number 0 ang normal na output
stream. Ang bilang ng mga sabay-sabay na diversion ay limitado pangunahin sa pamamagitan ng memorya na ginamit sa
ilarawan sila, dahil mp4h sinusubukang panatilihin ang mga diversion sa memorya. Gayunpaman, may limitasyon
sa pangkalahatang memory na magagamit ng lahat ng mga diversion na kinuha sa kabuuan. Kapag ang maximum na ito ay
malapit nang malampasan, ang isang pansamantalang file ay binuksan upang matanggap ang mga nilalaman ng pinakamalaki
nasa memorya pa rin ang diversion, na pinapalaya ang memorya na ito para sa iba pang mga diversion. Kaya, ito ay
sa teoryang posible na ang bilang ng mga diversion ay limitado sa bilang ng mga magagamit
mga deskriptor ng file.

· ilihis ang "S"

"[ divnum=diversion-number ]"

Inililihis ang output gamit ang tag na ito, kung saan ang diversion-number ay ang diversion na gagamitin. Kung
ang divnum na katangian ay naiwan, ang diversion-number ay ipinapalagay na zero. Kung ang output ay
inilihis sa di-umiiral na diversion, itinatapon na lang. Ito ay maaaring gamitin sa
sugpuin ang hindi gustong output. Tingnan ang halimbawa sa ibaba.

Kapag lahat mp4h ang input ay naproseso na, lahat ng umiiral na diversion ay awtomatiko
undiverted, sa numerical order.

Ang ilang mga tawag ng divert na may parehong argumento ay hindi na-overwrite ang nakaraang inilihis
text, ngunit dugtungan ito.

Source:


Ito ay hindi ipinadala kahit saan...

Ito ay output.

output:

Ito ay hindi ipinadala kahit saan...

Ito ay output.

· undivert "S"

"[ divnum=diversion-number ]"

Ang tag na ito ay tahasang ibinabalik ang inilihis na teksto na na-save sa diversion na may tinukoy
numero. Kung hindi ibinigay ang attribute na divnum, ang lahat ng mga diversion ay hindi nababaling, sa numerical
order.

Kapag hindi inilihis ang inilihis na teksto, hindi ito muling binabasa ni mp4h, ngunit sa halip ay direktang kinopya sa
ang kasalukuyang output. Samakatuwid, hindi isang pagkakamali ang mag-unvert sa isang diversion.

Hindi magkatulad m4, ang mp4h Hindi pinapayagan ng undivert tag ang isang pangalan ng file bilang argumento. Ang parehong ay maaaring maging
nagawa gamit ang include tag na may verbatim="true" attribute.

Source:


Ang tekstong ito ay inilihis.

Ang tekstong ito ay hindi inilihis.


output:

Ang tekstong ito ay inilihis.

Ang tekstong ito ay hindi inilihis.

· divnum "S"

Lumalawak ang tag na ito sa bilang ng kasalukuyang diversion.

Source:

Inisyal

Diversion one:

Dalawang diversion:


output:

Pauna 0

Isang diversion: 1

Dalawang diversion: 2

Pag-debug function
Kapag naging kumplikado ang mga konstruksyon, maaaring mahirap i-debug ang mga ito. Ang mga function na nakalista sa ibaba ay
lubhang kapaki-pakinabang kapag hindi mo maisip kung ano ang mali. Ang mga function na ito ay hindi pa perpekto
at dapat pagbutihin sa mga susunod na release.

· function-def "S"

"pangalan"

Ini-print ang kapalit na text ng macro na tinukoy ng user. Halimbawa, ang macro dati
bumuo ng lahat ng mga halimbawa ng dokumentasyong ito ay

Source:



output:


" ">" /> [^;\n]*\n[ \t]*" "" /> $" "" reflags=m />



output:



"/>

· debugmode "S"

"string"

Ang command na ito ay gumaganap tulad ng "-d" na flag ngunit maaaring ynamically baguhin.

· debugfile "S"

"filename"

Pumili ng file kung saan inililihis ang mga mensahe sa pag-debug. Kung walang laman ang filename na ito,
Ang mga mensahe sa pag-debug ay ibinalik sa karaniwang error, at kung nakatakda ito sa "-" ang mga mensaheng ito
ay itinatapon.

tandaan: Walang paraan upang i-print ang mga mensaheng ito sa pag-debug sa dokumentong pinoproseso.

· debugging-sa "S"

"pangalan" "[pangalan] ... "

Ideklara ang mga macro na ito na sinusubaybayan, ibig sabihin, ang impormasyon tungkol sa mga macro na ito ay ipi-print kung "-d"
flag o "debugmode" macro ay ginagamit.

· pag-debug-off ng "S"

"pangalan" "[pangalan] ... "

Ang mga macro na ito ay hindi na sinusubaybayan.

sari-sari
· __mga file"

"[pangalan]"

Nang walang argumento ang macro na ito ay nagpi-print ng kasalukuyang input filename. Sa isang argumento, ang macro na ito
itinatakda ang string na ibinalik sa hinaharap na invocation ng macro na ito.

· __line__ "S"

"[numero]"

Nang walang argumento ang macro na ito ay nagpi-print ng kasalukuyang linya ng numero sa input file. Sa pamamagitan ng argumento,
Itinatakda ng macro na ito ang numerong ibinalik sa hinaharap na invocation ng macro na ito.

Source:

Ito ay <__file__/>, linya <__line__/>.

output:

Ito ay ./mp4h.mp4h, linya 2201.

Kung titingnan mong mabuti ang source code makikita mong mali ang numerong ito. Tunay na ang
Ang linya ng numero ay ang dulo ng buong bloke na naglalaman ng tagubiling ito.

· __bersyon__ "S"

Ini-print ang bersyon ng mp4h.

· dnl "S"

Itapon ang lahat ng mga character hanggang sa maabot ang bagong linya. Tinitiyak ng macro na ito na sumusunod na string
ay isang komento at hindi nakadepende sa halaga ng mga character ng komento.

Source:

Ito ay isang komento
foo
Ito ay isang komento
bar

output:

foo
bar

· petsa"

"[panahon]"

Nagpi-print ng lokal na oras ayon sa panahon na ipinasa sa argumento. Kung walang argumento,
kasalukuyang lokal na oras ay naka-print.

"oras"
Isang epoch time specification.

"format"
Isang format na detalye gaya ng ginamit sa strftime(3) C gawain sa aklatan.

Source:


/> />
/>
" format="%Y-%m-%d %H:%M:%S" />

output:

Linggo Disyembre 13 20:34:04 2015

Linggo Disyembre 13 20:34:04 2015
2015-12-13 20:34:04

· timer "S"

Ini-print ang oras na ginugol mula noong huling tawag sa macro na ito. Ang naka-print na halaga ay ang bilang ng
clock ticks, at sa gayon ay nakasalalay sa iyong CPU.

Source:


Ang bilang ng mga ticks ng orasan mula noong simula ng pag-parse ng
ang halimbawang ito ni &mp4h; ay:


output:

gumagamit 9
sys 0

Ang bilang ng mga ticks ng orasan mula noong simula ng pag-parse ng
ang halimbawang ito ni mp4h ay:
gumagamit 9
sys 0

· mp4h-l10n "S"

"pangalan=halaga"

Magtakda ng mga variable na tukoy sa lokal. Bilang default, napili ang portable na "C" na lokal. Bilang
Ang mga lokal ay may iba't ibang mga pangalan sa iba't ibang mga platform, dapat kang sumangguni sa iyong system
dokumentasyon upang mahanap kung aling mga halaga ang inangkop sa iyong system.

· mp4h-output-radix "S"

"numero"

Baguhin ang format ng output ng mga float sa pamamagitan ng pagtatakda ng bilang ng mga digit pagkatapos ng decimal
punto. Default ay ang pag-print ng mga numero sa "%6.f" na format.

Source:





output:

4.600000

4.60

Panlabas PAKIKITA


Posibleng isama ang mga panlabas na file gamit ang command na "isama". Nauna ang mga file
hinanap sa kasalukuyang direktoryo, pagkatapos ay sa mga direktoryo na tinukoy sa command-line na may "-I"
opsyon, susunod sa mga direktoryo na nakalista sa variable ng kapaligiran na "MP4HLIB" (ito ay dati
"MP4HPATH" para sa mga bersyon bago ang 1.3), at huling sa ilalim ng lokasyon ng oras ng pag-compile
("/usr/local/lib/mp4h/1.3.1:/usr/local/share/mp4h" bilang default).

Ang isa pang paraan upang isama ang mga pakete ay ang "gamitin" na utos. Mayroong dalawang pagkakaiba
sa pagitan ng "use" at "include": una, ang pangalan ng package ay walang suffix; at higit na mahalaga, a
hindi maaaring i-load ang package nang higit sa isang beses.

MACRO EXPANSION


Inilalarawan ng bahaging ito ang panloob na mekanismo ng pagpapalawak ng macro. Ito ay dapat na kasing tumpak at
kumpleto hangga't maaari kaya makipag-ugnayan sa akin "mailto:[protektado ng email]>" kung meron ka
mungkahi.

Mga Pangunahing Kaalaman
Magsimula tayo sa ilang mga halimbawa:

Source:


Ito ay isang simpleng tag


Ito ay isang kumplikadong tag


Pag-andar ng katawan

output:

Ito ay isang simpleng tag

Ito ay isang kumplikadong tag

Ang mga macro na tinukoy ng user ay maaaring may mga katangian tulad ng mga HTML tag. Upang mahawakan ang mga katangiang ito sa
kapalit na teksto, ang mga sumusunod na kombensiyon ay pinagtibay (karamihan ay nagmula sa Meta-HTML):

· Ang sequence %name ay pinalitan ng command name.

· Ang mga katangian ay binibilang mula sa 0. Sa kapalit na teksto, ang %0 ay pinalitan ng unang argumento,
%1 sa ika-2, atbp. Dahil walang limitasyon sa bilang ng mga argumento, ang %20 ay ang
21st argument at hindi ang pangatlo na sinusundan ng 0 letter.

Source:


%0

<href http://www.gimp.org "Ang Gimp" />

output:

<a href="/http://www.gimp.org">Ang Gimp

· Ang pagkakasunud-sunod na "%#" ay nagpi-print ng bilang ng mga katangian.

· Ang sequence na "%%" ay pinalitan ng "%", na kapaki-pakinabang sa mga nested na kahulugan.

Source:

;;;
panlabas, # katangian: %#
;;;
inner1, # attributes: %#;;;
;;;
;;;
inner2, # attributes: %%#;;;
;;;





output:

panlabas, # katangian: 2
panloob1, # katangian: 2
panloob2, # katangian: 5

· Ang pagkakasunud-sunod ng %attribute ay pinalitan ng space separated na listahan ng mga attribute.

Source:







<mail1 name="Dr. Foo" mail="[protektado ng email]"/>

output:

Dr. Foo
[protektado ng email]

· Ang pagkakasunud-sunod ng %body ay pinalitan ng katawan ng isang kumplikadong macro.

Source:



">%katawan

<mail2 mail="[protektado ng email]">



output:

<a href="/mailto:[protektado ng email]">



· Ang dalawang form sa itaas ay tumatanggap ng mga modifier. Kapag ginamit ang %Aattributes o %Abody, isang bagong linya
naka-print ang hiwalay na listahan ng mga katangian.

Source:




: " />



<show-attributes name="Dr. Foo" mail="[protektado ng email]"/>

output:

%0: pangalan=Dr. Foo%1: mail=[protektado ng email]

· Ang isa pang alternatibong anyo ay nakuha sa pamamagitan ng pagpapalit ng "A" ng "U", kung saan ang teksto ay
pinalitan ngunit hindi lalawak. Ito ay may katuturan lamang kapag ang macro ay naging
tinukoy ng "attributes=verbatim", kung hindi, ang mga attribute ay pinalawak bago
kapalit.

Source:


Bago ang pagpapalawak: %Uattributes
Pagkatapos ng pagpapalawak: %attributes


Bago ang pagpapalawak: %Uattributes
Pagkatapos ng pagpapalawak: %attributes

at dito %attributes
/>
/>

output:

Bago ang pagpapalawak: at narito na tayo
Pagkatapos ng pagpapalawak: at narito na tayo

Bago ang pagpapalawak:
Pagkatapos ng pagpapalawak: at narito na tayo

· Ang mga modifier na "A" at "U" ay maaaring pagsamahin.

tandaan: Ang pagpapalawak ng input ay ganap na naiiba sa Meta-HTML at sa mp4h. May Meta-HTML it
minsan ay kinakailangan na gumamit ng iba pang mga konstruksyon tulad ng %xbody at %qbody. Nang sa gayon
pagbutihin ang pagiging tugma sa Meta-HTML, ang mga konstruksyon na ito ay kinikilala at binibigyang-kahulugan
tulad ng %katawan. Ang isa pang tampok na ibinigay para sa dahilan ng pagiging tugma ay ang katotohanan na para sa simple
ang mga tag na %body at %attributes ay katumbas. Ang mga tampok na ito ay nasa kasalukuyang mp4h bersyon
ngunit maaaring mawala sa mga susunod na release.

katangian
Ang mga katangian ay pinaghihiwalay ng mga puwang, mga tabulasyon o mga bagong linya, at ang bawat katangian ay dapat na a
balido mp4h nilalang. Halimbawa sa mga kahulugan sa itaas, " "hindi maaaring maging isang
attribute dahil dapat itong tapusin ng " ". Ngunit ito ay may bisa:

/>

o kahit na

/>

Sa mga halimbawang ito, ang tag na "foo" ay may isang argumento lamang.

Sa ilalim ng ilang mga pangyayari, kinakailangan na pagsamahin ang maramihang mga pahayag sa isang solong
isa. Magagawa ito gamit ang dobleng panipi o gamit ang primitive na "grupo", hal

<foo "This is the 1st attribute"
/>

tandaan: Hindi tulad ng HTML single quotes ay hindi maaaring palitan doube quotes para sa layuning ito.

Kung lalabas ang mga dobleng panipi sa isang argumento, dapat itong i-escape sa pamamagitan ng backslash na "\".

Source:




output:

Text na may double quotes " sa loob

Macro paghusga
Ang mga macro ay nailalarawan sa pamamagitan ng

· pangalan

· katayuan ng lalagyan (simple o kumplikado)

· kung ang mga katangian ay pinalawak o hindi

· uri ng function (primitive o tinukoy ng user na macro)

· para sa mga primitive, address ng kaukulang code sa memorya at para sa mga macro na tinukoy ng gumagamit ang
kapalit na teksto

Binabasa ang mga character sa input hanggang sa matagpuan ang isang kaliwang angle bracket. Tapos ang macro name ay
basahin. Pagkatapos na basahin ang mga katangian, verbatim o hindi depende sa kung paano ito macro dati
tinukoy. At kung ang macro na ito ay kumplikado, ang katawan nito ay binabasa ng verbatim. Kapag natapos na ito,
pinapalitan ang ilang espesyal na sequence sa kapalit na text (tulad ng %body, %attributes, %0, %1,
atbp.) at ang nagreresultang teksto ay inilalagay sa input stack upang muling mai-scan.

tandaan: Bilang default, sinusuri ang mga katangian bago ang anumang kapalit.

Isaalang-alang ang sumusunod na halimbawa, upang baguhin ang teksto sa font ng typewriter:


%katawan


Ang kahulugan na ito ay may malaking sagabal:

Source:

Ito ay isang halimbawa

output:

Ito ay isang halimbawa

Gusto naming alisin ang mga panloob na tag.

Ang unang ideya ay ang paggamit ng isang auxiliary variable upang malaman kung tayo ay nasa loob pa rin ng isang
kapaligiran:




1" " />
%katawan
1" " />



(Ang pagkakaroon ng mga asterisk sa mga HTML na tag ay ipinaliwanag sa susunod na seksyon).

Source:

Ito ay isang halimbawa

output:

Ito ay isang halimbawa

Ngunit kung gumagamit kami ng mga simpleng tag, tulad ng sa halimbawa sa ibaba, ang aming kahulugan ay tila hindi gumagana.
Ito ay dahil ang mga katangian ay pinalawak bago sila ilagay sa kapalit na teksto.

Source:

%mga katangian
" />

output:

Ito ay isang halimbawa

Kung gusto nating pigilan ang problemang ito kailangan nating ipagbawal ang pagpapalawak ng mga katangian

Source:

;;;
%mga katangian ;;;

" />

output:

Ito ay isang halimbawa

Paglawak flag
Kapag gusto mong mag-embed ng ilang server-side scripting language sa iyong mga page, haharapin mo ang ilan
kakaibang mga problema, tulad ng sa

>Hello

Ang tanong ay kung paano mp4h alam na ang input na ito ay may ilang mga dagdag na delimiter? Ang sagot ay
na mp4h hindi dapat subukang hawakan ang ilang mga espesyal na delimiter, dahil hindi nito kayang hawakan ang lahat
sa kanila (may ASP, ePerl, PHP,... at ang ilan sa mga ito ay nako-customize). Ngayon, tandaan mo
na mp4h ay isang macro-processor, hindi isang XML parser. Kaya dapat tayong tumuon sa mga macro, at format
ang aming input file upang ito ay ma-parse nang walang anumang problema. Ang nakaraang halimbawa ay maaaring
nakasulat

">Kamusta

dahil pinipigilan ng mga panipi ang panloob na right-angle bracket mula sa pagsasara ng "a" tag.

Ang isa pang karaniwang problema ay kapag kailangan lang nating mag-print ng begin o end tag lang. Para sa
halimbawa ito ay lubhang kanais-nais na tukuyin ang sarili nitong mga header at footer gamit ang




... ilagay dito ang ilang impormasyon ....








Minarkahan ng mga asterisk ang mga tag na ito bilang mga pseudo-simpleng tag, na nangangahulugang kumplikadong HTML ang mga ito
mga tag, ngunit ginamit bilang simpleng mga tag sa loob mp4h dahil ang mga tag ay hindi mailalagay nang maayos kung hindi.

Ang asterisk na ito ay tinatawag na ``trailing star'', lumilitaw ito sa dulo ng pangalan ng tag.

Minsan ang mga HTML na tag ay hindi nauunawaan, tulad ng sa javascript code na ito:

...
document.write('<*img src="/foo.gif"');
kung (teksto) document.write(' alt="'+text+'"');
document.write('>');
...

Ang ``leading star'' ay isang asterisk sa pagitan ng left-angle bracket at tag name, na
pinipigilan ang tag na ito na ma-parse.

Iyon ay sinabi na maaari na nating maunawaan kung para saan ang flag na "--expansion". Kinokontrol nito kung paano
Ang pagpapalawak ay ginagawa ng mp4h. Sinusundan ito ng isang integer, na medyo kabuuan ng
sumusunod na mga halaga

1 huwag i-parse ang mga hindi kilalang tag.
Kapag nakatakda, hindi na-parse ang mga HTML tag. Kapag na-unset, ang mga HTML na tag ay na-parse, ibig sabihin, iyon
mga katangian at/o katawan ay kinokolekta.

2 Ang mga hindi kilalang tag ay ipinapalagay na simple.
Kapag nakatakda, ang mga HTML tag ay simple bilang default. Kapag hindi nakatakda, ang mga HTML tag ay kumplikado ng
default, maliban kung ang kanilang katangian ay naglalaman ng isang trailing slash o isang trailing star ay lalabas lamang
pagkatapos ng pangalan ng tag (tingnan sa ibaba).

4 trailing star sa tag name huwag gawing simple ang tag na ito.
Kapag itinakda, walang espesyal na epekto ang trailing star sa pangalan ng tag. Kapag hindi nakatakda, nagiging sanhi ito ng isang
HTML tag na maging simple.

8 isinasara ng walang kapares na tag ng pagtatapos ang lahat ng nakaraang hindi tugmang tag ng pagsisimula.
Kapag itinakda, ang lahat ng nawawalang tag ng pagsasara ng pagtatapos ay awtomatikong ipinapasok. Kapag hindi nakatakda, isang
Ang walang kaparis na end tag ay itinatapon at binibigyang kahulugan bilang normal na text, kaya nagpapatuloy ang pagproseso
hanggang matagpuan ang pagtutugma at tag.

16 bigyang-kahulugan ang mga backslash bilang printf.
Kapag itinakda, aalisin ang mga backslash bago ang mga hindi espesyal na character. Kapag hindi nakatakda, sila ay
napanatili

32 alisin ang trailing slash sa mga katangian ng tag.
Kapag naitakda, alisin ang trailing slash sa mga attribute ng tag sa output. Kapag hindi nakatakda, sila ay
napanatili

64 huwag tanggalin ang trailing star sa tag name.
Kapag nakatakda, ang trailing star pagkatapos ng pangalan ng tag ay pananatilihin sa output. Kapag hindi nakatakda, sila ay
inalis.

128 huwag tanggalin ang nangungunang bituin sa pangalan ng tag.
Kapag itinakda, ang nangungunang bituin bago ang pangalan ng tag ay pananatilihin sa output. Kapag hindi nakatakda, sila ay
inalis.

256 huwag magdagdag ng puwang bago ang trailing slash sa mga attribute ng tag
Bilang default, may inilalagay na espasyo bago ang trailing slash sa mga attribute ng tag. Kapag itinakda, ito
space ay hindi prepended.

1024 sugpuin ang mga babala tungkol sa masamang nested tag.
Kapag nakatakda, hindi ipinapakita ang mga babala tungkol sa masamang nested tag. Kapag hindi nakatakda, sila ay
naka-print sa karaniwang error.

2048 sugpuin ang mga babala tungkol sa nawawalang trailing slash.
Kapag nakatakda, ang mga babala tungkol sa nawawalang trailing slash ay hindi ipinapakita. Kapag hindi nakatakda, sila ay
naka-print sa karaniwang error.

Tumakbo

mp4h -h

upang mahanap ang default na halaga. Ang kasalukuyang halaga ay tumutugma sa HTML syntax, at ito ay magiging zero kapag
Nagiging mas pamilyar ang XHTML syntax.

Gumamit ng mp4h online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

Linux command

Ad