İngilizceFransızcaİspanyolca

OnWorks favicon'u

mp4h - Bulutta Çevrimiçi

OnWorks ücretsiz barındırma sağlayıcısında mp4h'yi Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen mp4h komutudur.

Program:

ADI


mp4h - HTML Belgeleri için Makro İşlemci

VERSION


Bu belge mp4h sürüm 1.3.1'i açıklamaktadır.

TANITIM


The mp4h yazılım, özellikle HTML belgeleriyle ilgilenmek için tasarlanmış bir makro işlemcidir.
HTML yazarlarına tanıdık bir sözdizimi ile güçlü programlama yapılarına olanak tanır.

Bu yazılım dayanmaktadır Meta-HTML "http://www.metahtml.org/>", Brian J.
Fox, Her iki sözdizimi benzer görünse bile kaynak kodu tamamen farklıdır. Gerçekten de bir
alt kümesi Meta-HTML daha karmaşık bir programın parçası olarak kullanıldı, WML (Web Sitesi Metası
Dil "http://www.thewml.org/>") Ralf S. Engelschall tarafından yazılmıştır ve ben
Ocak 1999'dan beri varlığını sürdürüyor. Lisanslama nedeniyle hacklenmesi zordu Meta-HTML ve bu yüzden
Kendi makro işlemcimi yazmaya karar verdim.

Sıfırdan yeniden yazmak yerine başka bir makro işlemci motoru kullanmayı tercih ettim. BEN
GNU'yu seçti m4 "http://www.gnu.org/software/m4/>", Rene Seindal tarafından yazılmıştır, çünkü
sayısız avantajı: Bu yazılım kararlıdır, sağlamdır ve çok iyi belgelenmiştir. Bu
sürümü mp4h GNU'dan türetilmiştir m4 1.4n sürümü, bir geliştirme sürümüdür.

The mp4h yazılım bir HTML düzenleyicisi değildir; benzersiz hedefi, kolay bir yol sağlamaktır.
HTML belgelerinin içinde kendi makrolarını tanımlayın. İşlevsellik eklemeye yönelik bir plan yok
Kodunuzu temizlemek veya doğrulamak istiyorsanız otomatik olarak geçerli HTML belgeleri oluşturun
bunun için tidy gibi bir son işlemci kullanmanız yeterli "http://www.w3.org/People/Raggett/tidy/>".

KOMUT LINE SEÇENEKLER


İsteğe bağlı bağımsız değişkenler köşeli parantez içine alınır. Tüm seçenek eşanlamlılarının bir
söz dizimi benzer olduğundan, uzun bir seçenek bir argümanı kabul ettiğinde, kısa seçenek de bunu kabul eder.

Sözdizimi çağrısı:

mp4h [seçenekler] [dosya adı [dosya adı] ...]

Seçenekler aşağıda açıklanmıştır. Hiçbir dosya adı belirtilmemişse veya adı "-" ise, o zaman
karakterler standart girişte okunur.

Çalışma modları
--yardım et bir yardım mesajı görüntüleyin ve çıkın
--versiyon çıktı mp4h sürüm bilgisi ve çıkış
-E --ölümcül-uyarılar ilk uyarıdan sonra yürütmeyi durdur
-Q --sessizlik --sessiz yerleşikler için bazı uyarıları bastır
-S --safety-level = "SAYI" riskli işlevleri devre dışı bırakın; 0, filtrelemenin olmadığı, 1'in devre dışı olduğu anlamına gelir
"execute" ve 2, bunu ve dosya sistemiyle ilgili tüm işlevleri de devre dışı bırakır: "file-exists",
"gerçek yol", "get-file-properties", "dizin içeriği" ve "include".

Preprocessor Özellikler
-I --include = "DİZİN" bu dizinde kapsananlar ve paketler için arama yapın
-D --define = "NAME"[=VALUE]"" NAME değişkenini VALUE olarak ayarlayın veya boş bırakın
-U --undefine = "KOMUT" yerleşik COMMAND'ı sil
-s --senklinaller `#line NO "DOSYA" satırları oluştur

Ayrıştırıcı Özellikler
-c --caseless = "SAYI" "NUMBER" bitlerine göre büyük/küçük harf duyarlılığını ayarlayın. Bir sıfır
bit, sembolün büyük/küçük harfe duyarlı olduğu anlamına gelir ve bitler şu şekilde tanımlanır: etiketler için 0, etiketler için 1
değişkenler ve varlıklar için 2. Varsayılan değer 3'tür; yani yalnızca varlıklar büyük/küçük harfe duyarlıdır.
-e --encoding = "NAME" belge kodlamasını belirtin. Geçerli seçenekler `8bit' (varsayılan) veya
'utf8'.
-X --expansion = "SAYI" ayrıştırıcı davranışını "NUMBER" bitlerine göre ayarlayın

NUMBER şunun birleşimidir:

1 bilinmeyen etiketleri ayrıştırma
2 bilinmeyen etiketlerin basit olduğu varsayılır
4 Etiket adında sondaki yıldız bu etiketi basitleştirmez
8 eşleşmeyen bir bitiş etiketi, önceki tüm eşleşmeyen başlangıç ​​etiketlerini kapatır
16 ters eğik çizgileri printf olarak yorumla
32 etiket niteliklerinde sondaki eğik çizgiyi kaldır
64 etiket adında sondaki yıldızı kaldırmayın
128 etiket adının başındaki yıldızı kaldırmayın
256 etiket niteliklerinde eğik çizginin sonuna boşluk eklemeyin
1024 hatalı iç içe geçmiş etiketlerle ilgili uyarıları bastırır
2048 sondaki eğik çizginin eksik olmasıyla ilgili uyarıları bastır

1.3.1 sürümünde varsayılan değer 3114=2+8+32+1024+2048'dir.

Sınırları kontrol
-H --hashsize = "PRIME" sembol arama karma tablosu boyutunu ayarla (varsayılan 509)
-L -nesting-limit = "SAYI" yapay yerleştirme sınırını değiştir (varsayılan 250)

Hata ayıklama
-d --debug = "BAYRAKLAR" hata ayıklama düzeyini ayarla (hiçbir BAYRAK "aeq" anlamına gelmez)
-t --trace = "NAME" NAME'in ne zaman tanımlanacağını izle
-l --arglength = "SAYI" makro izleme boyutunu kısıtla
-o --error-output = "DOSYA" hata ayıklamayı ve izleme çıktısını yeniden yönlendir

Bayraklar aşağıdakilerden herhangi biridir:

t yalnızca hata ayıklamayı değil, tüm makro çağrılarını izleme
a gerçek argümanları göster
e genişlemeyi göster
c toplamadan önce, toplamadan sonra ve aramadan sonra göster
x benzersiz bir makro çağrı kimliği ekleyin; c bayrağıyla kullanışlıdır
f geçerli giriş dosyası adını söyle
l geçerli giriş satırı numarasını söyle
p yol aramalarının sonuçlarını göster
m modül işlemlerinin sonuçlarını göster
i giriş dosyalarındaki değişiklikleri göster
V Yukarıdaki bayrakların tümü için kısa yol

TANIM


The mp4h Yazılım bir makro işlemcidir; bu, anahtar kelimelerin başkalarıyla değiştirildiği anlamına gelir.
metin. Bu bölümde tüm ilkeller açıklanmaktadır. Gibi mp4h için özel olarak tasarlanmıştır
HTML belgelerinin sözdizimi, etiketleri ve nitelikleriyle HTML'ye çok benzer. Bir
önemli özelliğin HTML'de karşılığı yoktur: satır sonuna kadar yorumlar. Tüm metin
aşağıdaki üç iki nokta üst üste satırın sonuna kadar atılır, örneğin

;;; Bu bir yorumdur

işlev Makrolar
Not: Bu belgedeki tüm örnekler, mp4h genişletme bayraklarıyla
sıfıra ayarlanmış (belgenin sonunda olası genişletme işaretlerinin açıklamasına bakın),
neden basit etiketlerin sonunda eğik çizgi bulunur? Ancak mp4h diğerleriyle düz HTML dosyalarının çıktısını alabilir
genişleme bayrakları.

Yeni etiketlerin tanımı, tarafından sağlanan en yaygın görevdir. mp4h. HTML'de olduğu gibi makro
Bu varsayılan davranışı değiştirmek için "-c" seçeneği kullanılmadığı sürece adlar büyük/küçük harfe duyarlı değildir.
Bu belgede yalnızca küçük harfler kullanılmıştır. İki tür etiket vardır:
basit ve karmaşık. Basit bir etiket aşağıdaki forma sahiptir:



karmaşık bir etiket ise şöyle görünür:


vücut


versiyon 0.9.1 yana, mp4h XHTML sözdizimini de bildiğinden girdi dosyanız HTML'ye uygun olabilir
veya XHTML sözdizimi. Bu kılavuzda ikincisini benimsedik, bu nedenle basit etiketlerin bir özelliği vardır.
Niteliklerde sondaki eğik çizgi. Bu girdi dosyasıyla HTML dosyaları oluşturmak istiyorsanız,
yeterli bir "--expansion" bayrağı seçebilir veya tidy gibi bir son işlemci kullanabilir
"http://www.w3.org/People/Raggett/tidy/>".

Basit bir etiket şu şekilde tanımlandığında: mp4h, sondaki eğik çizgi olsa bile ayrıştırılabilir
atlandı çünkü mp4h bu etiketin basit olduğunu biliyor. Ancak her zaman iyi bir uygulamadır.
basit etiketlerin sonuna eğik çizgi ekleyin.

Aşağıdaki makro açıklamalarında eğik çizgi basit bir etiketi, V harfi ise
nitelikler kelimesi kelimesine okunur (genişleme olmadan) (bunun için makro genişletme bölümüne bakın)
daha fazla ayrıntı).

· tanımla etiketi

"isim" "[attributes=verbatim]" "[bitiş etiketi=gerekli]" "[boşluk=sil]"

Bu işlev kendi etiketlerinizi tanımlamanıza olanak tanır. İlk argüman komut adıdır.
Değiştirme metni işlevin gövdesidir.

Kaynak:

çubuk


Çıktı:

bar

Boşlukların HTML sözdiziminde genellikle az etkisi olsa da şunu unutmamak gerekir:

çubuk

ve


bar


eşdeğer değildir, ikinci formda mevcut olmayan iki yeni satır bulunur.
önceki.

"boşluk=sil"
Değiştirme metninde bazı boşluklar, özellikle de baştaki veya sondaki boşluklar gizlenmiştir
boşluklar ve açılı parantez içine alınmamış yeni satırlar.

"bitiş etiketi=gerekli"
Karmaşık bir etiket tanımlayın

Kaynak:

çubuk


Çıktı:

bar

Kaynak:

;;;
vücut: %vücut
İşte burada

Çıktı:

vücut: İşte burada

"nitelikler=kelimesi kelimesine"
Varsayılan olarak nitelikler, metin değiştirilmeden önce genişletilir. Bu özellik kullanılırsa
nitelikler, genişletme yapılmadan değiştirilen metne eklenir.

Kaynak:

kuux

Gövde: %Ubody
Nitelikler: %Uattributes

"> İşte başlıyoruz

Çıktı:

Vücut: İşte başlıyoruz
Özellikler: txt=

· etiketi sağlama

"isim" "[attributes=verbatim]" "[bitiş etiketi=gerekli]" "[boşluk=sil]"

Bu komut öncekine benzer ancak bu durumda hiçbir işlem gerçekleştirilmez.
komut zaten tanımlanmıştı.

· Haydi"

"yeni=eski"

Bir işlevi kopyalayın. Bu komut, bir makro tanımını yeniden tanımlamadan önce kaydetmek için kullanışlıdır.

Kaynak:

bir

iki


Çıktı:

iki bir

· tanımsız "S"

"isim"

Bir komut tanımını silin.

Kaynak:

bir



Çıktı:



· kancayı ayarlama

"isim" "[konum=önce|sonra]" "[eylem=ekle|ekle|değiştir]"

Önceden tanımlanmış bir makroya metin ekleyin. Bu mekanizma mevcut makroların değiştirilmesine olanak tanır
karmaşık olup olmadığına bakılmaksızın türü hakkında endişelenmenize gerek kalmadan.

Kaynak:



Önce

Sonrasında


Çıktı:

10'dan önce
Sonra

· "S" kancasını alın

"isim" "[konum=önce|sonra]"

Bir makronun geçerli kancalarını yazdırın.

Kaynak:

konum=önce ile eklenen metin: !
Konum=sonra ile eklenen metin: !

Çıktı:

konum=önce ile eklenen metin:
Önce!
Konum=sonra ile eklenen metin:
Sonrasında!

· nitelikler-alıntı "S"

"%Öznitellikler"

%attributes gibi, ancak "attr=value" çiftleri çift tırnak işaretiyle yazdırılıyor
çevreleyen nitelik değerleri ve bazı metinler yazdırılırsa baştaki boşluk eklenir.

Kaynak:

;;;
%Öznitellikler
/>




Çıktı:

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




· öznitelikler-özetleme "S"

"isim1" "[,isim2[,isim3...]]" "%Öznitellikler"

Aşağıdakilerden herhangi biriyle eşleşen adlar için "öznitelik=değer" çiftlerini %attributes'tan çıkarın name1, name2....

Kaynak:


/>



Çıktı:



· nitelikler-"S"yi kaldırın

"isim1" "[,isim2[,isim3...]]" "%Öznitellikler"

Aşağıdakilerden herhangi biriyle eşleşen adlar için "öznitelik=değer" çiftlerini %attributes'tan kaldırın name1, name2....

Kaynak:


/> />



Çıktı:



Not: Önceki iki işlev özeldir çünkü diğer tüm makrolardan farklı olarak bunların
genişleme bir grup oluşturmaz. Ortaya çıkan listeyi ayrıştırmak için bu gereklidir.
Öznitellikler.

Bu iki fonksiyonda nitelik adları düzenli ifadeler olabilir. Ana hedefi
Bu ilkellerin amacı, herhangi bir özelliği kabul etmeden makroların yazılmasına yardımcı olmaktır.
bunları ilan etmek. Kanonik bir örnek

Kaynak:



/>
/>
href = "/ ">


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

Çıktı:

<a class="web"
href="/http://www.foo.com">Hoşgeldiniz

Ancak şimdi bir resim özelliği eklemek istiyoruz. Yani yazabiliriz

Kaynak:



/>
/>
href = "/ ">

/>
kaynak = "/ " alt = " " sınır=0 />

/>



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

Çıktı:

<a class="web"
href="/http://www.foo.com">
src = "/foo.png" yükleme = "tembel" alt = "Hoş geldiniz" border=0 />

Anlatacak bir mekanizmaya ihtiyacımız var mp4h bazı niteliklerin belirli HTML etiketlerine gönderme yaptığı. A
çözüm, özelliğin başına etiket adını eklemektir, örneğin

Kaynak:



/>
/>
href = "/ ">

/>
kaynak = "/ " alt = " " />

/>



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

Çıktı:

<a a:class="web"
href="/http://www.foo.com">
src = "/foo.png" yükleme = "tembel" alt = "Hoş Geldiniz" />

Bu örnek, nitelik adları içerisinde düzenli ifadelerin kullanılabileceğini göstermektedir, ancak bu
özelliklerden öneki kaldırmak istediğimiz için hâlâ tamamlanmamış. Bir çözüm şu:
"dizenin alt kısmı", ancak daha zarif bir tane var:

Kaynak:



/>
/>
href = "/ ">

/>
kaynak = "/ " alt = " " />

/>



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

Çıktı:

<a class="web"
href="/http://www.foo.com">
src = "/foo.png" yükleme = "tembel" alt = "Hoş Geldiniz" />

Düzenli ifadelerin içinde alt ifadeler olduğunda, bunlar yerine yazdırılır.
tüm ifade. Ayrıca karıştırmamak için önekin önüne iki nokta üst üste koyduğumu da unutmayın
XML ad alanlarıyla.

Varlıklar
Varlıklar, etiketlerle aynı şekilde makrolardır ancak herhangi bir argüman almazlar. Halbuki
Etiketler normalde metni işaretlemek için kullanılır, varlıklar zaten işaretlenmiş metin içerir. Ayrıca
Etiketlerin aksine varlıkların varsayılan olarak büyük/küçük harfe duyarlı olduğunu unutmayın.

Bir varlık aşağıdaki forma sahiptir:

& varlık;

· varlık tanımla

"isim"

Bu işlev kendi varlıklarınızı tanımlamanıza olanak tanır. İlk argüman varlık adıdır.
Değiştirme metni işlevin gövdesidir.

Kaynak:

çubuk
&foo;

Çıktı:

bar

Değişkenler
Değişkenler basit etiketlerin özel bir durumudur çünkü nitelikleri kabul etmezler. İçinde
aslında kullanımları farklıdır çünkü değişkenler metin içerirken makrolar şöyle davranır
operatörler. Değişkenlerle ilgili güzel bir özellik, bunların diziler halinde işlenmesidir. Aslında
değişkenler yeni satırla ayrılmış listeler gibi düşünülebilir, bu da güçlü
Aşağıda göreceğimiz gibi manipülasyon fonksiyonları.

· set-var "S"

"ad[=değer]" "[ad[=değer]] ... "

Bu komut değişkenleri ayarlar.

· set-var-kelimesi kelimesine "S""V"

"ad[=değer]" "[ad[=değer]] ... "

Yukarıdaki gibi ancak nitelikler kelimesi kelimesine okunur.

· set-var-x

"isim=değişken ismi"

Bu komut, bir değişkene komutun gövdesinin değerini atar. Bu özellikle
değişken değerleri yeni satırlar ve/veya tırnak işaretleri içerdiğinde kullanışlıdır.

Değişkenin bu komutla indekslenemeyeceğini unutmayın. Ayrıca bu komutun
set-var-verbatim gibi davranır: Değişken ile gösterilene kadar gövde genişletilmez.
get-var.

· get-var "S"

"isim" "[isim] ... "

Değişken içerikleri göster. Köşeli parantez içindeki sayısal bir değer bir sayıya eklenirse
değişken adı, bir dizinin dizinini temsil eder. Dizilerin ilk dizini 0'dır
Kongre.

Kaynak:


Bu versiyon
İşletim sistemi
" "


Çıktı:

Bu sürüm 0.10.1

Işletim sistemi
"Linux
"

Kaynak:

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


Çıktı:

200
1
2
3

· get-var-one "S""V"

"isim" "[isim] ... "

Yukarıdaki gibidir ancak nitelikler genişletilmemiştir.

Kaynak:

0.10.1
" /> ;;;
İşte versiyon
" /> ;;;
İşte versiyon
" /> ;;;
İşte versiyon

Çıktı:

İşte sürüm 0.10.1
İşte sürüm 0.10.1
İşte versiyon

· "S"yi koru

"isim" "[isim] ... "

Tüm değişkenler globaldir, değişken veya makro kapsamı yoktur. Bu nedenle bir yığın
Değişkenleri korumak için kullanılır. Bu komut çağrıldığında argümanlar isimleridir.
değerleri yığının en üstüne konulan ve değişkenler bir değere sıfırlanan değişkenler
boş dize.

· "S"yi geri yükle

"isim" "[isim] ... "

Bu tam tersidir: argümanlar, bulunan değere ayarlanan değişkenlerin adlarıdır.
yığının en üstünde ve yığın aşağı doğru açılır.

Not: "Preserve" etiketi ilk önce son argümanını iter, oysa "restore" ilk önce onu açar
ilk argüman.

Kaynak:




İçeride: src= isim= metin=



Önce: src= isim= metin=

Sonra: src= isim= metin=

Çıktı:

Önce: src=foo.png name= text=Merhaba Dünya!
İçeride: src=bar adı=quux metni=
Sonra: src=foo.png name= text=Merhaba Dünya!

· var-var "S"yi kaldır

"isim" "[isim] ... "

Tanımsız değişkenler.

· var-mevcut "S"

"isim"

Bu değişken mevcut olduğunda "true" değerini döndürür.

· "S"yi artır

"isim" "[tarafından=değer]"

Adı ilk argüman olan değişkeni artırın. Varsayılan artış birdir.

"tarafından=değer"
Artış miktarını değiştirin.

Kaynak:






Çıktı:

10
11
8

· "S"yi azalt

"isim" "[tarafından=değer]"

Adı ilk argüman olan değişkeni azaltın. Varsayılan azalma birdir.

"tarafından=değer"
Azaltma tutarını değiştirin.

Kaynak:






Çıktı:

10
9
6

· değişkeni kopyala "S"

"kaynak" "hedef"

Bir değişkeni diğerine kopyalayın.

Kaynak:





Çıktı:

10

· defvar "S"

"isim" "değer"

Bu değişken tanımlanmamışsa veya boş bir dizeye tanımlanmışsa, o zaman şu şekilde ayarlanır:
ikinci argüman.

Kaynak:





Çıktı:

Başlık
Başlık

· sembol bilgisi "S"

"isim"

Sembollerle ilgili bilgileri gösterin. Değişken adı ise "STRING" kelimesi şu şekilde yazdırılır:
yanı sıra bu değişkenin içerdiği satır sayısı.

Bir makro adı ise aşağıdaki mesajlardan biri yazdırılır: "PRIM COMPLEX", "PRIM
ETİKETİ", "KULLANICI KOMPLEKSİ" veya "KULLANICI ETİKETİ"

Kaynak:

<set-var x="0\n1\n2\n3\n4" />
çubuk
kuux






Çıktı:

STRING
5
PRIM ETİKETİ
PRIM KOMPLEKSİ
KULLANICI ETİKETİ
KULLANICI KOMPLEKSİ

dizi fonksiyonlar
· dizi uzunluğu "S"

"sicim"

Dizenin uzunluğunu yazdırır.

Kaynak:

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


Çıktı:

7
7

· küçük harf "S"

"sicim"

Küçük harflere dönüştürün.

Kaynak:



Çıktı:

çalışıyor mu?

· büyük harf "S"

"sicim"

Büyük harflere dönüştürün.

Kaynak:



Çıktı:

ÇALIŞIYOR MU?

· "S"yi büyük harfle yaz

"sicim"

Her kelimenin başında büyük harf olacak şekilde başlığa dönüştürün.

Kaynak:



Çıktı:

Çalışır?

· alt dize "S"

"sicim" "[başlama [son]]"

Bir dizeden bir alt dizeyi çıkarır. İlk argüman orijinal dizedir, ikinci ve üçüncü
sırasıyla başlangıç ​​ve bitiş dizinleridir. Geleneksel olarak ilk karakterin boş bir dizini vardır.

Kaynak:


4 />
4 6 />

Çıktı:

efghijk
ef

· string-eq "S"

"dize1" "dize2" "[büyük/küçük harfsiz=doğru]"

İlk iki argüman eşitse "doğru" değerini döndürür.

Kaynak:

1:
2:

Çıktı:

1:
2:doğru

"büyük/küçük harfsiz=doğru"
Karşılaştırma büyük/küçük harfe duyarlı değildir.

Kaynak:

1:
2:

Çıktı:

1:doğru
2:doğru

· dize-neq "S"

"dize1" "dize2" "[büyük/küçük harfsiz=doğru]"

İlk iki bağımsız değişken eşit değilse "doğru" değerini döndürür.

Kaynak:

1:
2:

Çıktı:

1:doğru
2:

"büyük/küçük harfsiz=doğru"
Karşılaştırma büyük/küçük harfe duyarlı değildir.

Kaynak:

1:
2:

Çıktı:

1:
2:

· dize karşılaştırması "S"

"dize1" "dize2" "[büyük/küçük harfsiz=doğru]"

İki dizeyi karşılaştırır ve bağlı olarak küçük, büyük veya eşit değerlerden birini döndürür
bu karşılaştırma.

Kaynak:

1:
2:

Çıktı:

1:daha az
2:eşit

"büyük/küçük harfsiz=doğru"
Karşılaştırma büyük/küçük harfe duyarlı değildir.

Kaynak:

1:

Çıktı:

1:eşit

· karakter ofsetleri "S"

"sicim" "karakter" "[büyük/küçük harfsiz=doğru]"

Karakterin dizede göründüğü dizinleri içeren bir dizi yazdırır.

"büyük/küçük harfsiz=doğru"
Karşılaştırma büyük/küçük harfe duyarlı değildir.

Kaynak:

1:
2:

Çıktı:

1:0
8
2:0
4
8

· printf "S"

"biçim" "sicim" "[dizi ...]"

Belirli bir formata göre yazdırır. Şu anda yalnızca %s bayrak karakteri tanınıyor,
ve bağımsız değişkenlerin sırasını değiştirmek için "$" uzantısı desteklenir.

Kaynak:

1:
2:

Çıktı:

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

Düzenli İfadeler
Düzenli ifade desteği PCRE (Perl Uyumlu Düzenli İfadeler) tarafından sağlanır.
Açık kaynaklı bir yazılım olan kütüphane paketinin telif hakkı Cambridge Üniversitesi'ne aittir.
Bu çok güzel bir yazılımdır, en son versiyonları şu adreste mevcuttur:
"ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/>".

Sürüm 1.0.6'dan önce POSIX düzenli ifadeleri uygulanıyordu. Bu nedenle
aşağıdaki makrolar iki özelliği tanır: "büyük/küçük harfsiz=doğru" ve "tek satır=doğru|yanlış".
Ancak Perl, değiştiriciler adı verilen düzenleyicilerle düzenli ifadeler üzerinde çok daha iyi bir kontrol sağlar.
yeni "reflags" özelliğine atanır. Bir veya daha fazla değiştirici içerebilir:

i Eşleştirme büyük/küçük harfe duyarlı değildir
m Dizeyi birden çok satır olarak ele alın. Ayarlandığında, "^" herhangi bir satır başlangıcıyla eşleşir ve "$"
herhangi bir satır sonu. Varsayılan olarak dizenin başlangıcı ve bitişiyle eşleşirler.
s Dizeyi tek satır olarak ele alın. Bir nokta (".") aynı zamanda yeni satırla da eşleşebilir ancak eşleşmez.
varsayılan olarak.
x Biçimlendirilmiş normal ifadeye izin ver; bu, boşlukların, yeni satırların ve yorumların
işlenmeden önce normal ifadeden kaldırıldı.

Not: "Singleline=true" özelliği "s" değiştiricisinin eşanlamlısıdır, oysa
"tek satır=yanlış", "m" değiştiricisinin eş anlamlısıdır. Bu davranış şu ana kadar farklıydı
mp4h 1.0.6

· dizedeki alt alt öğe "S"

"sicim" "normal ifade" "[yenisiyle değiştirme]" "[büyük/küçük harfsiz=doğru]" "[tek satır=doğru|yanlış]"
"[reflags=[imsx]]"

Bir dizedeki normal ifadeyi bir değiştirme metniyle değiştirin.

Kaynak:


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

Çıktı:

abfghijk
abc de fghijk

Kaynak:


".$" "" />
".$" "" tek satır=yanlış />
"
([ac]) | [0-9]
" ":\\1:" reflags=x />

Çıktı:

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

· değişkenin alt öğesi "S"

"isim" "normal ifade" "[yenisiyle değiştirme]" "[büyük/küçük harfsiz=doğru]" "[tek satır=doğru|yanlış]"
"[reflags=[imsx]]"

Değişken içerik içinde değişiklik yapar.

· "S" ile eşleş

"sicim" "normal ifade" "[büyük/küçük harfsiz=true]" "[singleline=true|false]" "[reflags=[imsx]]"
"[işlem=rapor|çıkarma|silme|başlangıçkonumu|bitiş konumu|uzunluk]"

"eylem=rapor"
Dize regexp içeriyorsa "true" yazdırır.

"eylem=çıkarma"
Dizedeki normal ifadeyle eşleşen ifadeyi yazdırır.

"işlem=sil"
Dizedeki regexp ile eşleşen ifade olmadan dizeyi yazdırır.

"eylem=başlangıç ​​durumu"
Dizedeki normal ifadeyle eşleşen ifadenin ilk karakterini yazdırır. eğer yoksa
eşleşir, "-1" değerini döndürür.

"eylem=son konum"
Dizedeki normal ifadeyle eşleşen ifadenin son karakterini yazdırır. eğer yoksa
eşleşir, "-1" değerini döndürür.

"eylem=uzunluk"
Dizedeki normal ifadeyle eşleşen ifadenin uzunluğunu yazdırır.

Kaynak:

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

Çıktı:

1:doğru
2:cde
3:abfghijk
4:2
5:5
6:3

Diziler
İle mp4h dize dizileriyle kolayca başa çıkılabilir. Değişkenler tek bir değişken olarak ele alınabilir
değer veya yeni satırla ayrılmış dize listesi olarak. Böylece tanımladıktan sonra

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

içeriğini veya şu değerlerden birini görüntüleyebilirsiniz:

Kaynak:




Çıktı:

0
1
2
3
2

· dizi boyutu "S"

"isim"

Değişkende bulunan satırların sayısı olan bir dizi boyutunu döndürür.

Kaynak:



Çıktı:

4

· dizi tuşuna basarak "S"

"isim" "değer"

Dizinin sonuna bir değer (veya bu değer yeni satırlar içeriyorsa daha fazla) ekleyin.

Kaynak:




Çıktı:

0
1
2
3
10
11
12

· dizi-pop "S"

"isim"

Bir dizinin üst düzey değerini kaldırın ve bu dizeyi döndürür.

· dizi üst değeri "S"

"isim"

Bir dizinin son girişini yazdırır.

Kaynak:



Çıktı:

12

· dizi-ekleme-benzersiz "S"

"isim" "değer" "[büyük/küçük harfsiz=doğru]"

Bu değer bu değişkende zaten mevcut değilse, dizinin sonuna bir değer ekleyin.

Kaynak:




Çıktı:

0
1
2
3
10
11
12

"büyük/küçük harfsiz=doğru"
Karşılaştırma büyük/küçük harfe duyarlı değildir.

· dizi-birleşik "S"

"isim1" "[isim2] ... "

Tüm dizileri ilk dizide birleştirir.

Kaynak:





Çıktı:

foo
bar

· dizi üyesi "S"

"isim" "değer" "[büyük/küçük harfsiz=doğru]"

Değer dizide yer alıyorsa dizinin dizinini döndürür, aksi takdirde -1 değerini döndürür.

Kaynak:



Çıktı:

5

"büyük/küçük harfsiz=doğru"
Karşılaştırma büyük/küçük harfe duyarlı değildir.

· dizi kaydırma "S"

"isim" "telafi etmek" "[başlangıç=başlangıç]"

Bir diziyi kaydırır. Ofset negatifse 0'ın altındaki indeksler kaybolur. Ofset pozitif ise,
ilk indeksler boş dizelerle doldurulur.

Kaynak:


Şimdi:

Ve:

Çıktı:

Şimdi:

0
1
2
3
10
11
12

Ve 2
3
10
11
12

"başlangıç=başlangıç"
Kaydırmaların başlangıç ​​noktasını değiştirin (varsayılan 0'dır).

Kaynak:



Çıktı:

2
3
12

· "S"yi sırala

"isim" "[büyük/küçük harfsiz=doğru]" "[sayısal=doğru]" "[sıralama düzeni=tersine]"

Bir dizinin satırlarını yerinde sıralayın. Varsayılan satırları alfabetik olarak sıralamaktır.

Kaynak:



Çıktı:

12
2
3

"büyük/küçük harfsiz=doğru"
Karşılaştırma büyük/küçük harfe duyarlı değildir.

"sayısal=doğru"
Satırları sayısal olarak sıralama

Kaynak:



Çıktı:

2
3
12

"sıralama=tersine çevirme"
Ters sıralama düzeni

Kaynak:

;;;


Çıktı:

12
3
2

Sayısal operatörler
Bu operatörler temel aritmetik işlemleri gerçekleştirir. Tüm işlenenler tamsayı olduğunda
sonuç da bir tam sayıdır, aksi takdirde bir kayan noktadır. Bu operatörler kendi kendini açıklamaktadır.

· "S" ekle

"1 numara" "2 numara" "[3 numara] ... "

· "S"yi çıkar

"1 numara" "2 numara" "[3 numara] ... "

· "S"yi çarpın

"1 numara" "2 numara" "[3 numara] ... "

· "S"yi böl

"1 numara" "2 numara" "[3 numara] ... "

· en az "S"

"1 numara" "2 numara" "[3 numara] ... "

· maksimum "S"

"1 numara" "2 numara" "[3 numara] ... "

Kaynak:




Çıktı:

21
21.000000

Kaynak:


/>" /> />



Çıktı:

720

· modül "S"

"1 numara" "2 numara"

Yukarıda listelenen işlevlerden farklı olarak modulo işlevi 2'den fazla bağımsız değişkeni işleyemez ve
bu bağımsız değişkenler tamsayı olmalıdır.

Kaynak:



Çıktı:

2

Bu işlevler iki sayıyı karşılaştırır ve bu karşılaştırma doğru olduğunda "doğru" değerini döndürür. Eğer
bir argüman sayı değildir, karşılaştırma yanlıştır.

· gt "S"

"1 numara" "2 numara"

İlk argüman ikinciden büyükse "doğru" değerini döndürür.

· "S"

"1 numara" "2 numara"

İlk argüman ikinciden küçükse "doğru" değerini döndürür.

· eşdeğer "S"

"1 numara" "2 numara"

Bağımsız değişkenler eşitse "doğru" değerini döndürür.

· soyadı "S"

"1 numara" "2 numara"

Bağımsız değişkenler eşit değilse "true" değerini döndürür.

İlişkisel operatörler
· "S" değil

"sicim"

Dize boşsa "true" değerini döndürür, aksi takdirde boş bir dize döndürür.

· ve "S"

"sicim" "[sicim] ... "

Tüm bağımsız değişkenler boş değilse son bağımsız değişkeni döndürür.

· veya "S"

"sicim" "[sicim] ... "

Boş olmayan ilk bağımsız değişkeni döndürür.

akış fonksiyonlar
· grup "S""V"

"ifade" "[ifade] ... " "[ayırıcı=sicim]"

Bu fonksiyon birden fazla ifadeyi tek bir ifadede gruplandırır. Bazı örnekler görülecek
koşullu işlemlerle aşağıda.

Bu makronun daha az sezgisel fakat çok yararlı bir kullanımı, yeni satırları korumaktır.
"boşluk=sil" belirtildi.

Kaynak:


açık metin
3 satır olmadan
boşluk=sil


açık metin
3 satır ile
boşluk=sil


<group "Text on
3 satır ile
boşluk=sil" />





Çıktı:

açık metin
3 satır olmadan
boşluk=sil

Beyaz boşluklu 3 satırlık metin=sil
açık metin
3 satır ile
boşluk=sil

"Metin2"de yeni satırların gizlendiğini ve sonucun kesinlikle istenmeyen olduğunu unutmayın.

· birleştirmek

"ifade" "[ifade] ... " "[ayırıcı=sicim]"

"Grup" gibi, ancak bu etiket karmaşıktır.

"ayırıcı=sicim"
Varsayılan olarak argümanlar bir kenara bırakılır. Bu özellik eklenen bir ayırıcıyı tanımlar
argümanlar arasında.

· "S" harfini ayırın

"ifade"

"Gruplama"nın tersini yapar, argümanı artık tek bir nesne olarak değerlendirilmez.
başka bir komut tarafından işlenir.

· no"S""V"yi genişletin

"emretmek" "[emretmek] ... "

Bağımsız değişkenlerini genişleme olmadan yazdırır. "Genişlet" seçeneği olmadıkça asla genişletilmeyecekler
etiketi bu "noexpand" etiketini iptal etmek için kullanılır.

· "S"yi genişlet

"emretmek" "[emretmek] ... "

"Noexpand" etiketini iptal eder.

Kaynak:

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

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


Çıktı:

bar
kuux
bar

· eğer "S""V"

"sicim" "o zaman cümleciği" "[else cümleciği]"

Dize boş değilse ikinci argüman değerlendirilir, aksi takdirde üçüncü argüman değerlendirilir
değerlendirildi.

Kaynak:







Çıktı:

Evet
yok hayır

· ifeq "S""V"

"dize1" "dize2" "o zaman cümleciği" "[else cümleciği]"

İlk iki argüman aynı dizelerse, üçüncü argüman aksi halde dördüncü olarak değerlendirilir
argüman değerlendirilir.

· ifneq "S""V"

"dize1" "dize2" "o zaman cümleciği" "[else cümleciği]"

İlk iki argüman aynı dizeler değilse üçüncü argüman farklı şekilde değerlendirilir
dördüncü argüman değerlendirilir.

· Ne zaman

"sicim"

Argüman boş olmadığında gövdesi değerlendirilir.

· "V" iken

"koşul"

Koşul doğruyken vücut fonksiyonu değerlendirilir.

Kaynak:


0 />>;;;
;;;


Çıktı:

10 9 8 7 6 5 4 3 2 1

· her biri için

"değişken" "sıralamak" "[başlangıç=başlangıç]" "[son=son]" "[adım=pas]"

Bu makro "foreach" Perl makrosuna benzer: bir değişken dizi değerleri üzerinde döngü yapar
ve işlev gövdesi her değer için değerlendirilir.

ilk argüman genel bir değişken adıdır ve ikincisi bir dizinin adıdır.

Kaynak:

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


Çıktı:

1 2 3 4 5 6

"başlangıç=başlangıç"
İlk dizinleri atlar.

Kaynak:

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


Çıktı:

+4 5 6

"son=son"
Endeks bu değere ulaştıktan sonra durur.

Kaynak:

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


Çıktı:

+1 2 3

"adım=adım"
Dizin artışını değiştirin (varsayılan 1'dir). Adım negatifse dizi ele alınır
Ters sipariş.

Kaynak:

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



Çıktı:

+1 3 5
+6 4 2

· var-case "S""V"

"var1=değer1 eylem1" "[var2=değer2 action2 ... "

Bu komut, tek bir talimatla birden fazla koşulu gerçekleştirir.

Kaynak:



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




Çıktı:

x1y0

y-1

· "S"yi kır

En içteki "while" döngüsünü kırar.

Kaynak:


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


Çıktı:

10 9 8 7 6

· İadeler"

"[yukarı=sayı]" "sicim"

Bu komut hemen en içteki makrodan çıkar. Bir mesaj da eklenebilir.
Ancak bu makro, jeton ayrıştırmayı değiştirdiğinden bazı durumlarda kullanımı çok tehlikeli olabilir.
durumlar.

"yukarı=sayı"
Bu özellik ne kadar seviyeden çıkılması gerektiğini belirler. Varsayılan olarak yalnızca bir tane
seviye atlanır. Boş bir değerle, geçerli tüm makrolardan çıkılır. Olumsuz
değer aynısını yapar ve geçerli dosyanın işlenmesini durdurur.

· "S" uyarısı

"sicim"

Standart hatayla ilgili bir uyarı yazdırır.

· "S"den çık

"[durum=rc]" "[mesaj=sicim]"

Programdan hemen çıkar.

"mesaj=sicim"
Standart hataya bir mesaj yazdırır.

"durum=rc"
Program tarafından döndürülen kodu seçer (varsayılan olarak -1).

· dosyanın sonunda

Bu özel bir komuttur: içeriği saklanır ve girişin bitiminden sonra genişletilecektir.

fileto fonksiyonlar
· dizin içeriği "S"

"dizin adı" "[eşleşme=regexp]"

Belirli bir dizinde bulunan dosyaların yeni satırlarla ayrılmış listesini döndürür.

Kaynak:



Çıktı:

mp4h.mp4h

· gerçek yol "S"

"patname=yol adı"

Tüm sembolik bağlantıları, ekstra ``/'' karakterlerini ve referansları çözer /./ ve /../ in
yol adı ve sonuçtaki mutlak yol adına genişler. Son bileşen hariç hepsi
Gerçek yol çağrıldığında yol adı mevcut olmalıdır.

Bu etiket özellikle dosya veya dizin adlarının aynı olup olmadığını karşılaştırırken kullanışlıdır.

Kaynak:

/>

Çıktı:

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

· dosya-mevcut "S"

"dosya adı"

Dosya mevcutsa "true" değerini döndürür.

· dosya-özelliklerini al "S"

"dosya adı"

Bu dosyadaki bilgilerin bir dizisini döndürür. Bu bilgiler şunlardır: boyut, tür, ctime,
mtime, atime, sahip ve grup.

Kaynak:

/>

Çıktı:

68603
DOSYA
1450038844
1450038844
1450038844
kök
kök

· içerir"

"dosya=Dosya | komut=komut satırı" "[alt=aksiyon]" "[verbatim=doğru]"

Bir dosyanın içeriğini dosya sistemine ekleyin - eğer "dosya" niteliği verilmişse - veya
bir sistem komutunun yürütülmesinden elde edilen çıktı - eğer "komut" niteliği verilmişse -
giriş akışı. Geriye dönük uyumluluk için, ne "dosya" ne de "komut" yoksa
nitelikler verilirse, ilk argüman eklenecek bir dosya olarak alınır.

"dosya=dosya adı"
Verilen dosya okunur ve giriş akışına eklenir. Bu özellik olamaz
komut özelliğiyle birleştirilir.

Dosyalar önce geçerli dizinde, ardından belirtilen dizinlerde aranır.
"MP4HLIB"de listelenen dizinlerin yanında "-I" seçeneği bulunan komut satırı
ortam değişkeni (4'ten önceki sürümler için "MP1.3HPATH" idi) ve sonuncusu
derleme zamanı konumu altında ("/usr/local/lib/mp4h/1.3.1:/usr/local/share/mp4h" tarafından)
varsayılan).

"komut=Komut satırı"
Verilen komut satırı işletim sisteminde yürütülür ve çıktısı
giriş akışına eklenir. Bu özellik dosyayla birleştirilemez
özniteliği.

Verilen komut satırı kullanılarak yürütülür. açmak(3) standart C kütüphanesi rutini.
komut, Posix uyumlu sistemlerde bulunan standart sistem kabuğu kullanılarak yürütülür.
is sh(1).

"alt=eylem"
Dosya bulunamazsa bu alternatif eylem gerçekleştirilir. Bu özellik ayarlanmamışsa
ve dosya bulunamazsa bir hata ortaya çıkar. Bu özelliğin hiçbir etkisi yoktur.
komut niteliği belirtildi.

"kelimesi kelimesine=doğru"
Dosya içeriği genişletilmeden dahil edilmiştir. Bu, şunu kullanmaya benzer: m4 yönünü değiştirmek
argüman olarak bir dosya adı içeren makro.

Kaynak:



Çıktı:

Linux

· "S"yi kullanın

"isim=paket"

Tanımları bir paket dosyasından yükleyin.

· Yorum

Bu etiket hiçbir şey yapmaz, gövdesi basitçe atılır.

· set-eol-yorum "S"

"[sicim]"

Yorum karakterlerini değiştirin.

· "S" tırnaklarını ayarla

"[dizi sicim]" "[görüntü=görünür]"

Varsayılan olarak "<@[" ve ​​"]@"> çiftleri arasındaki tüm karakterler ayrıştırılmadan okunur. Ne zaman
argüman olmadan çağrıldığında bu makro bu özelliği engeller. İki kişiyle çağrıldığında
argümanlar, başlangıç ​​ve bitiş sınırlayıcılarını yeniden tanımlar. Başlangıç ​​sınırlayıcısı soldan başlamalıdır
açılı ayraç ve uç sınırlayıcı dik açılı ayraçla bitmelidir.

"görüntü=görünür"
Sınırlayıcılar da çıktıya yazılır.

Saptırma fonksiyonlar
Yönlendirmeler, çıktıyı geçici olarak kaydetmenin bir yoludur. Çıktısı mp4h her an olabilir
geçici bir dosyaya yönlendirilir ve yönlendirilmeden tekrar çıkış akışına eklenir
daha sonra.

Numaralandırılmış yönlendirmeler 0'dan yukarı doğru sayılır; yönlendirme numarası 0 normal çıkıştır
aktarım. Eş zamanlı yönlendirmelerin sayısı esas olarak kullanılan hafıza ile sınırlıdır.
onları tanımlayın çünkü mp4h Yönlendirmeleri hafızada tutmaya çalışır. Ancak bir sınır var
tamamen alınan tüm yönlendirmeler tarafından kullanılabilen genel belleğe. Bu maksimum olduğunda
Aşılmak üzere olan en büyük içeriğin alınması için geçici bir dosya açılır.
saptırma hala hafızada, bu hafızayı başka eğlenceler için serbest bırakıyor. İşte bu
Yönlendirmelerin sayısının mevcut olanların sayısıyla sınırlı olması teorik olarak mümkündür.
dosya tanımlayıcıları.

· "S"yi yönlendir

"[ divnum=yönlendirme numarası ]"

Çıkış, bu etiket kullanılarak yönlendirilir; burada yönlendirme numarası, kullanılacak yönlendirmedir. Eğer
divnum özelliği atlanır, saptırma numarasının sıfır olduğu varsayılır. Çıkış ise
var olmayan bir saptırmaya yönlendirilirse, basitçe bir kenara atılır. Bu, şu amaçlarla kullanılabilir:
İstenmeyen çıkışı bastırın. Aşağıdaki örneğe bakın.

Ne zaman mp4h giriş işlenecek, mevcut tüm yönlendirmeler otomatik olarak gerçekleştirilecek
numara sırasına göre yönlendirilmemiş.

Aynı argümana sahip birden fazla yönlendirme çağrısı, önceki yönlendirilen çağrının üzerine yazılmaz
metin, ancak ona ekleyin.

Kaynak:


Bu hiçbir yere gönderilmez...

Bu çıktı.

Çıktı:

Bu hiçbir yere gönderilmez...

Bu çıktı.

· "S" yönlendirmesini geri al

"[ divnum=yönlendirme numarası ]"

Bu etiket, belirtilen yöntemle yönlendirmede kaydedilen yönlendirilmiş metnin yönlendirmesini açıkça geri alır.
sayı. Divnum özelliği verilmemişse, tüm yönlendirmeler sayısal olarak yönlendirilmez.
sipariş.

Yönlendirilen metin yönlendirilmediğinde, yeniden okunmaz. mp4h, bunun yerine doğrudan şuraya kopyalandı:
akım çıkışı. Bu nedenle, dikkati başka yöne çevirmek bir hata değildir.

aksine m4, mp4h undivert etiketi argüman olarak bir dosya adına izin vermez. Aynısı olabilir
kelimesi kelimesine = "true" niteliğine sahip include etiketiyle gerçekleştirilir.

Kaynak:


Bu metin yönlendirildi.

Bu metin yönlendirilmiyor.


Çıktı:

Bu metin yönlendirildi.

Bu metin yönlendirilmiyor.

· divnum "S"

Bu etiket mevcut yönlendirmenin sayısına kadar genişler.

Kaynak:

İlk

Birinci saptırma:

Yönlendirme iki:


Çıktı:

İlk 0

Birinci saptırma: 1

İkinci saptırma: 2

Hata ayıklama fonksiyonlar
Yapılar karmaşık hale geldiğinde, bunların hatalarını ayıklamak zor olabilir. Aşağıda listelenen işlevler şunlardır:
Neyin yanlış olduğunu anlayamadığınızda çok faydalıdır. Bu işlevler henüz mükemmel değil
ve gelecek sürümlerde geliştirilmelidir.

· fonksiyon-tanımlı "S"

"isim"

Kullanıcı tanımlı bir makronun değiştirme metnini yazdırır. Örneğin, kullanılan makro
bu dokümantasyonun tüm örneklerini oluşturmak

Kaynak:



Çıktı:


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



Çıktı:



"/>

· hata ayıklama modu "S"

"sicim"

Bu komut "-d" bayrağı gibi davranır ancak dinamik olarak değiştirilebilir.

· hata ayıklama dosyası "S"

"dosya adı"

Hata ayıklama mesajlarının yönlendirileceği dosyayı seçer. Bu dosya adı boşsa,
hata ayıklama mesajları standart hataya geri gönderilir ve eğer "-" olarak ayarlanırsa bu mesajlar
atılır.

Not: Bu hata ayıklama mesajlarını işlenmekte olan belgeye yazdırmanın bir yolu yoktur.

· "S" üzerinde hata ayıklama

"isim" "[isim] ... "

Bu makroların izlendiğini bildirin, yani bu makrolarla ilgili bilgiler "-d" ise yazdırılacaktır.
flag veya "debugmode" makrosu kullanılır.

· "S" hata ayıklaması

"isim" "[isim] ... "

Bu makrolar artık izlenmiyor.

Diğer
· __Dosyalar"

"[isim]"

Bu makro bağımsız değişken olmadan geçerli giriş dosya adını yazdırır. Bir argümanla bu makro
bu makronun gelecekte çalıştırılmasıyla döndürülen dizeyi ayarlar.

· __satır__ "S"

"[sayı]"

Bu makro, bağımsız değişken olmadan, giriş dosyasındaki geçerli sayı satırını yazdırır. Bir argümanla,
bu makro, bu makronun gelecekte çalıştırılmasıyla döndürülen sayıyı ayarlar.

Kaynak:

Bu <__file__/>, <__line__/> satırı.

Çıktı:

Bu ./mp4h.mp4h, satır 2201'dir.

Kaynak koduna yakından bakarsanız bu rakamın yanlış olduğunu göreceksiniz. Gerçekten de
sayı satırı bu talimatı içeren tüm bloğun sonudur.

· __versiyon__ "S"

sürümünü yazdırır mp4h.

· dnl "S"

Yeni satıra ulaşılıncaya kadar tüm karakterleri atın. Bu makro aşağıdaki dizenin olmasını sağlar
bir yorumdur ve yorum karakterlerinin değerine bağlı değildir.

Kaynak:

Bu bir yorumdur
foo
Bu bir yorumdur
bar

Çıktı:

foo
bar

· tarih"

"[dönem]"

Bağımsız değişkende aktarılan çağa göre yerel saati yazdırır. Tartışma yoksa,
Geçerli yerel saat yazdırılır.

"Zaman"
Bir dönem zaman spesifikasyonu.

"biçim"
ile kullanıldığı şekliyle bir format spesifikasyonu strftime(3) C kütüphanesi rutini.

Kaynak:


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

Çıktı:

Pazar 13 Aralık 20:34:04 2015

Pazar 13 Aralık 20:34:04 2015
2015-12-13 20:34:04

· zamanlayıcı "S"

Bu makroya yapılan son çağrıdan bu yana geçen süreyi yazdırır. Yazdırılan değer,
saatin ilerlemesi CPU'nuza bağlıdır.

Kaynak:


Ayrıştırmanın başlangıcından bu yana saatin tik taklarının sayısı
bu örnek &mp4h; dır-dir:


Çıktı:

kullanıcı 9
sistem 0

Ayrıştırmanın başlangıcından bu yana saatin tik taklarının sayısı
bu örnek tarafından mp4h olduğu:
kullanıcı 9
sistem 0

· mp4h-l10n "S"

"isim=değer"

Yerel ayara özgü değişkenleri ayarlayın. Varsayılan olarak taşınabilir "C" yerel ayarı seçilidir. Gibi
yerel ayarların farklı platformlarda farklı isimleri vardır, sisteminize başvurmalısınız
Hangi değerlerin sisteminize uyarlandığını bulmak için belgeler.

· mp4h-çıkış-radix "S"

"sayı"

Ondalık sayıdan sonraki basamak sayısını ayarlayarak kayan noktalı çıkış formatını değiştirin
nokta. Varsayılan, sayıların "%6.f" biçiminde yazdırılmasıdır.

Kaynak:





Çıktı:

4.600000

4.60

DIŞ TUR PAKETLERİ


"Include" komutu ile harici dosyaları dahil etmek mümkündür. Dosyalar ilk sırada
Geçerli dizinde, ardından komut satırında "-I" ile belirtilen dizinlerde arandı
seçeneği, "MP4HLIB" ortam değişkeninde listelenen dizinlerin yanındadır (eskiden
4'ten önceki sürümler için "MP1.3HPATH" ve derleme zamanı konumunda sonuncusu
("/usr/local/lib/mp4h/1.3.1:/usr/local/share/mp4h" varsayılan olarak).

Paketleri dahil etmenin başka bir yolu da "use" komutunu kullanmaktır. İki fark var
"kullan" ve "dahil et" arasında: birincisi, paket adının son eki yoktur; ve daha da önemlisi, bir
paket birden fazla yüklenemez.

MAKRO GENİŞLEME


Bu bölüm makro genişlemenin iç mekanizmasını açıklamaktadır. Bu kadar kesin olmalı ve
mümkün olduğunca kapsamlı bu yüzden benimle iletişime geçin "mailto:[e-posta korumalı]>" eğer varsa
öneri.

Temeller
Bazı örneklerle başlayalım:

Kaynak:


Bu basit bir etiket


Bu karmaşık bir etikettir


Vücut fonksiyonu

Çıktı:

Bu basit bir etiket

Bu karmaşık bir etikettir

Kullanıcı tanımlı makrolar HTML etiketleri gibi niteliklere sahip olabilir. Bu nitelikleri işlemek için
değiştirme metni, aşağıdaki kurallar benimsenmiştir (çoğunlukla şunlardan türetilmiştir): Meta-HTML):

· Sıra %name, komut adı ile değiştirilir.

· Nitelikler 0'dan itibaren numaralandırılır. Değiştirilen metinde %0, ilk argümanla değiştirilir,
%1, 2. sırada, vb. Argüman sayısında herhangi bir sınırlama olmadığından %20,
21. argüman ve üçüncü değil, ardından 0 harfi geliyor.

Kaynak:


%0

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

Çıktı:

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

· "% #" dizisi özniteliklerin sayısını yazdırır.

· "%%" dizisinin yerini "%" alır, bu da iç içe tanımlamalarda faydalıdır.

Kaynak:

;;;
dış, # nitelik: % #
;;;
iç1, # öznitelikler: % #;;;
;;;
;;;
iç2, # özellikler: %%#;;;
;;;





Çıktı:

dış, # nitelik: 2
iç1, # nitelik: 2
iç2, # nitelik: 5

· %öznitelikler sırası, boşlukla ayrılmış öznitelikler listesiyle değiştirilir.

Kaynak:







<mail1 name="Dr. Foo" mail="[e-posta korumalı]"/>

Çıktı:

Dr.Foo
[e-posta korumalı]

· %body dizisinin yerini karmaşık bir makronun gövdesi alır.

Kaynak:



">%vücut

<mail2 mail="[e-posta korumalı]">



Çıktı:

<a href="/mailto:[e-posta korumalı]">



· Yukarıdaki iki form değiştiricileri kabul eder. %Aattributes veya %Abody kullanıldığında yeni satır
niteliklerin ayrılmış listesi yazdırılır.

Kaynak:




: " />



<show-attributes name="Dr. Foo" mail="[e-posta korumalı]"/>

Çıktı:

%0: isim=Dr. Foo%1: posta=[e-posta korumalı]

· "A" harfinin "U" ile değiştirilmesiyle başka bir alternatif biçim elde edilir; bu durumda metin
değiştirilecek ancak genişletilmeyecek. Bu yalnızca makro etkinleştirildiğinde anlamlıdır.
"öznitelikler=verbatim" ile tanımlanır, aksi takdirde nitelikler daha önce genişletilir
yedek.

Kaynak:


Genişletmeden önce: %Uattributes
Genişletmeden sonra: %attributes


Genişletmeden önce: %Uattributes
Genişletmeden sonra: %attributes

ve burada %nitelikler
/>
/>

Çıktı:

Genişletmeden önce: işte başlıyoruz
Genişlemeden sonra: işte başlıyoruz

Genişletmeden önce:
Genişlemeden sonra: işte başlıyoruz

· "A" ve "U" değiştiricileri birleştirilebilir.

Not: Giriş genişletme tamamen farklıdır Meta-HTML ve mp4h. Ile Meta-HTML it
Bazen %xbody ve %qbody gibi diğer yapıların kullanılması gerekebilir. İçin
ile uyumluluğu geliştirin Meta-HTMLbu yapılar tanınır ve yorumlanır
%body gibi. Uyumluluk amacıyla sağlanan bir diğer özellik ise basit
%body ve %attributes etiketleri eşdeğerdir. Bu özellikler mevcut mp4h versiyon
ancak gelecek sürümlerde kaybolabilir.

Özellikler
Nitelikler boşluklarla, tablolarla veya yeni satırlarla ayrılır ve her bir nitelik bir
geçerli mp4h varlık. Örneğin yukarıdaki tanımlarla, " "bir olamaz
" ile bitmesi gerektiğinden özellik ". Ancak bu geçerlidir:

/>

ya da

/>

Bu örneklerde "foo" etiketinin yalnızca bir argümanı vardır.

Belirli koşullar altında birden fazla ifadeyi tek bir ifadede gruplandırmak gerekir.
bir. Bu, çift tırnak işaretiyle veya "grup" ilkeliyle yapılabilir, örneğin

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

Not: HTML'den farklı olarak tek tırnak işaretleri bu amaçla çift tırnakların yerini alamaz.

Bir bağımsız değişkende çift tırnak görünüyorsa, bunların önüne ters eğik çizgi "\" konulmalıdır.

Kaynak:




Çıktı:

Çift tırnaklı metin " içeride

Makro değerlendirme
Makrolar aşağıdakilerle karakterize edilir:

· isim

· konteyner durumu (basit veya karmaşık)

· niteliklerin genişletilip genişletilmediği

· fonksiyon tipi (ilkel veya kullanıcı tanımlı makro)

· ilkeller için, bellekteki karşılık gelen kodun adresi ve kullanıcı tanımlı makrolar için
değiştirme metni

Karakterler, sol köşeli parantez bulunana kadar girişte okunur. O zaman makro adı
Okumak. Bundan sonra öznitelikler okunur, bu makronun nasıl olduğuna bağlı olarak kelimesi kelimesine veya değil
tanımlandı. Ve eğer bu makro karmaşıksa, gövdesi kelimesi kelimesine okunur. Bu bittiğinde,
değiştirme metnindeki bazı özel diziler değiştirildi (%body, %attributes, %0, %1, gibi)
vb.) ve elde edilen metin yeniden taranmak üzere giriş yığınına konur.

Not: Varsayılan olarak nitelikler herhangi bir değiştirmeden önce değerlendirilir.

Daktilo yazı tipindeki metni değiştirmek için aşağıdaki örneği inceleyin:


%vücut


Bu tanımın büyük bir dezavantajı var:

Kaynak:

Bu bir örnek

Çıktı:

Bu bir örnektir

İç etiketlerin kaldırılmasını istiyoruz.

İlk fikir, hala böyle bir durumun içinde olup olmadığımızı bilmek için bir yardımcı değişken kullanmaktır.
çevre:




1 " " />
%vücut
1 " " />



(HTML etiketlerinde yıldız işaretlerinin varlığı bir sonraki bölümde açıklanmaktadır).

Kaynak:

Bu bir örnek

Çıktı:

Bu bir örnektir

Ancak aşağıdaki örnekte olduğu gibi basit etiketler kullanırsak tanımımız işe yaramayacaktır.
Bunun nedeni, niteliklerin değiştirilecek metne yerleştirilmeden önce genişletilmesidir.

Kaynak:

%Öznitellikler
" />

Çıktı:

Bu bir örnektir

Bu sorunu önlemek istiyorsak, özelliklerin genişletilmesini yasaklamalıyız.

Kaynak:

;;;
%Öznitellikler ;;;

" />

Çıktı:

Bu bir örnektir

Genişleme bayraklar
Sayfalarınıza sunucu tarafı komut dosyası dili eklemek istediğinizde bazı sorunlarla karşı karşıya kalırsınız.
gibi garip problemler

>Merhaba

Asıl soru nasıl yapılacağıdır mp4h bu girişin bazı ekstra sınırlayıcıları olduğunu biliyor musunuz? Cevap
o mp4h bazı özel sınırlayıcıları ele almaya çalışmamalı çünkü hepsini idare edemez
bunlardan bazıları (ASP, ePerl, PHP,... vardır ve bazıları özelleştirilebilir). Şimdi hatırla
o mp4h bir XML ayrıştırıcısı değil, bir makro işlemcidir. Bu yüzden makrolara ve formata odaklanmalıyız
Giriş dosyamızın sorunsuz bir şekilde ayrıştırılabilmesi için. Önceki örnek olabilir
yazılı

">Merhaba

çünkü tırnak işaretleri iç dik açılı parantezlerin "a" etiketini kapatmasını engeller.

Diğer bir yaygın sorun, yalnızca bir başlangıç ​​veya bitiş etiketini tek başına yazdırmamızın gerekmesidir. İçin
örneğin kendi üstbilgilerini ve altbilgilerini tanımlamak çok arzu edilir.




... buraya biraz bilgi koyun ....








Yıldız işaretleri bu etiketleri sözde basit etiketler olarak işaretler; bu da bunların karmaşık HTML olduğu anlamına gelir
etiketler, ancak içinde basit etiketler olarak kullanılır mp4h çünkü aksi takdirde etiketler iyi bir şekilde iç içe geçemezdi.

Bu yıldız işareti “sondaki yıldız” olarak adlandırılır ve etiket adının sonunda görünür.

Bazen HTML etiketleri şu javascript kodunda olduğu gibi ayrıştırılamaz:

Kendi ID’n ile mağazalarını oluştur
document.write('<*img src="/foo.gif"');
if (metin) document.write(' alt = "'+metin+'"');
document.write('>');
Kendi ID’n ile mağazalarını oluştur

``Öncü yıldız'', sol köşeli parantez ile etiket adı arasında yer alan bir yıldız işaretidir.
bu etiketin ayrıştırılmasını engeller.

Bununla birlikte artık "--expansion" bayrağının ne işe yaradığını anlayabiliyoruz. Nasıl olduğunu kontrol ediyor
genişletme mp4h tarafından gerçekleştirilir. Bunu, bit toplamı olan bir tamsayı takip eder.
aşağıdaki değerler

1 bilinmeyen etiketleri ayrıştırmayın.
Ayarlandığında HTML etiketleri ayrıştırılmaz. Ayarlanmadığında HTML etiketleri ayrıştırılır;
nitelikler ve/veya gövde toplanır.

2 bilinmeyen etiketlerin basit olduğu varsayılır.
Ayarlandığında HTML etiketleri varsayılan olarak basittir. Ayarlanmadığında HTML etiketleri karmaşıktır
öznitelikleri sonunda bir eğik çizgi içermediği veya sonunda bir yıldız görünmediği sürece varsayılandır
etiket adından sonra (aşağıya bakın).

4 Etiket adında sondaki yıldız, bu etiketi basitleştirmez.
Ayarlandığında, etiket adındaki sondaki yıldızın özel bir etkisi yoktur. Ayarlanmadığında, bir
HTML etiketi basit olmalıdır.

8 eşleşmeyen bir bitiş etiketi, önceki tüm eşleşmeyen başlangıç ​​etiketlerini kapatır.
Ayarlandığında tüm eksik uç kapatma etiketleri otomatik olarak eklenir. Ayarlanmadığında, bir
eşleşmeyen bitiş etiketi atılır ve normal metin olarak yorumlanır, böylece işlem devam eder
eşleşen ve etiket bulunana kadar.

16 Ters eğik çizgileri printf olarak yorumlayın.
Ayarlandığında, özel olmayan karakterlerin önündeki ters eğik çizgiler kaldırılır. Ayarlanmadığında, bunlar
korunmuş.

32 etiket niteliklerinde sondaki eğik çizgiyi kaldırın.
Ayarlandığında, çıktıdaki etiket niteliklerinde sondaki eğik çizgiyi kaldırın. Ayarlanmadığında, bunlar
korunmuş.

64 etiket adında sondaki yıldızı kaldırmayın.
Ayarlandığında, çıktıda etiket adından sonraki yıldız korunur. Ayarlanmadığında, bunlar
çıkarıldı.

128 etiket adının başındaki yıldızı kaldırmayın.
Ayarlandığında, çıktıda etiket adından önce gelen yıldız korunur. Ayarlanmadığında, bunlar
çıkarıldı.

256 etiket niteliklerinde eğik çizginin sonuna boşluk eklemeyin
Varsayılan olarak, etiket niteliklerinde eğik çizginin sonuna bir boşluk eklenir. Ayarlandığında bu
boşluk öne eklenmemiştir.

1024 Kötü iç içe geçmiş etiketlerle ilgili uyarıları bastırır.
Ayarlandığında, hatalı iç içe geçmiş etiketlerle ilgili uyarılar görüntülenmez. Ayarlanmadığında, bunlar
standart hata üzerine basılmıştır.

2048 sondaki eğik çizginin eksik olmasıyla ilgili uyarıları bastırır.
Ayarlandığında, sondaki eğik çizginin eksik olduğuna ilişkin uyarılar görüntülenmez. Ayarlanmadığında, bunlar
standart hata üzerine basılmıştır.

koşmak

mp4h-h

Varsayılan değeri bulmak için. Geçerli değer HTML sözdizimiyle eşleşir ve şu durumlarda sıfıra yönelir:
XHTML sözdizimi daha tanıdık hale geliyor.

Onworks.net hizmetlerini kullanarak mp4h'yi çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

  • 1
    AstroOrzOyuncu
    AstroOrzOyuncu
    AstrOrz Player ücretsiz bir medya oynatıcıdır
    yazılım, WMP ve VLC tabanlı kısım. bu
    oynatıcı, minimalist tarzda,
    ondan fazla tema rengi ve ayrıca
    b ...
    AstrOrzPlayer'ı indirin
  • 2
    film başlatıcısı
    film başlatıcısı
    Kodi Movistar+ TV, XBMC/ için bir ADDON'dur
    Kod, bir öğe dağıtılmasına izin verebilir
    IPTV hizmetlerinin kod çözücüsü
    Movistar tek bir cihazda entegre
    medya merkezleri ma...
    movistartv'yi indir
  • 3
    Code :: Blocks
    Code :: Blocks
    Code::Blocks ücretsiz, açık kaynaklı,
    platformlar arası C, C++ ve Fortran IDE
    en zorlu ihtiyaçları karşılamak için inşa edilmiştir
    kullanıcılarının Çok olacak şekilde tasarlanmıştır
    uzanır...
    Kodu İndir::Bloklar
  • 4
    ortasında
    ortasında
    Ortasında veya Gelişmiş Minecraft Arayüzü
    ve Veri/Yapı İzleme,
    Minecraft'a genel bir bakış göster
    dünya, aslında onu yaratmadan. Bilişim Teknoloji
    Yapabilmek ...
    Arada İndir
  • 5
    MSYS2
    MSYS2
    MSYS2 bir araçlar topluluğudur ve
    size sağlayan kütüphaneler
    bina için kullanımı kolay ortam,
    yerel Windows'u yükleme ve çalıştırma
    yazılım. ...
    MSYS2'yi İndirin
  • 6
    libjpeg turbo
    libjpeg turbo
    libjpeg-turbo bir JPEG görüntü codec bileşenidir
    SIMD talimatlarını kullanan (MMX, SSE2,
    NEON, AltiVec) temel çizgiyi hızlandırmak için
    JPEG sıkıştırma ve açma
    x86, x8...
    libjpeg-turbo'yu indirin
  • Daha fazla »

Linux komutları

Ad