← man/dev_and_programming
bison — man bison — 80×24
ugur@toprak:~/man/dev_and_programming$man bison
Bölüm 1 Geliştirme & Programlama

bison

GNU Projesi ayrıştırıcı üreteci (yacc alternatifi)

Kullanım

       bison [ -b file-prefix ] [ --file-prefix=file-prefix ] [ -d ] [ --defines=defines-file ] [ -g
       ] [ --graph=graph-file ] [ -k ] [ --token-table ] [ -l ] [ --no-lines ] [ -n ] [ --no-parser
       ] [ -o outfile ] [ --output-file=outfile ] [ -p prefix ] [ --name-prefix=prefix ] [ -t ] [
       --debug ] [ -v ] [ --verbose ] [ -V ] [ --version ] [ -y ] [ --yacc ] [ -h ] [ --help ] [
       --fixed-output-files ] file
       yacc [ similar options and operands ]

Açıklama

Bison, yacc(1) tarzında bir ayrıştırıcı üretecidir (parser generator). yacc için tasarlanmış girdi dosyaları ile yukarıya doğru uyumlu (upwardly compatible) olmalıdır.

Girdi dosyaları, yacc kuralına uygun olarak .y ile bitmelidir. yacc'tan farklı olarak, üretilen dosyaların sabit adları yoktur, bunun yerine girdi dosyasının öneki kullanılır. Ayrıca, girdi dosyasına C++ kodu yerleştirmeniz gerekiyorsa, dosya adını C++ benzeri bir uzantıyla (.ypp veya .y++) sonlandırabilirsiniz; bu durumda bison, çıktı dosyasını adlandırmak için sizin uzantınızı takip edecektir (.cpp veya .c++). Örneğin, parse.yxx adındaki bir dil bilgisi (grammar) açıklama dosyası, üretilen ayrıştırıcıyı yacc'ın y.tab.c veya eski Bison sürümlerinin parse.tab.c dosyası yerine parse.tab.cxx adlı bir dosyada üretecektir.

Bison'a verilebilecek seçeneklerin bu açıklaması, yetkili kılavuz olarak kabul edilmesi gereken bison.texinfo kılavuzundaki "Invocation" düğümünden uyarlanmıştır.

Bison hem geleneksel tek harfli seçenekleri hem de hatırlatıcı (mnemonic) uzun seçenek adlarını destekler. Uzun seçenek adları - yerine -- ile belirtilir. Seçenek adlarının kısaltmalarına, benzersiz oldukları sürece izin verilir. --file-prefix gibi uzun bir seçenek bir bağımsız değişken aldığında, seçenek adı ile bağımsız değişkeni = ile birbirine bağlayın.

SEÇENEKLER

-b file-prefix

--file-prefix=file-prefix Tüm bison çıktı dosya adları için kullanılacak bir önek belirtir. İsimler, sanki girdi dosyası file-prefix.c olarak adlandırılmış gibi seçilir.

-d Dil bilgisinde tanımlanan belirteç (token) türü adları ve semantik değer türü YYSTYPE için makro tanımlarının yanı sıra birkaç harici (extern) değişken bildirimi içeren ek bir çıktı dosyası yazar.

Ayrıştırıcı çıktı dosyası name.c olarak adlandırılmışsa, bu dosya name.h olarak adlandırılır.

yylex tanımını ayrı bir kaynak dosyasına koymak istiyorsanız bu çıktı dosyası gereklidir, çünkü yylex'in belirteç türü kodlarına ve yylval değişkenine başvurabilmesi gerekir.

--defines=defines-file --defines seçeneğinin davranışı -d seçeneği ile aynıdır. Tek farkı, çıktı dosyasının adını belirten isteğe bağlı bir bağımsız değişkene sahip olmasıdır.

-g Bison tarafından hesaplanan LALR(1) dil bilgisi otomatının bir VCG tanımını çıktı olarak verir. Dil bilgisi dosyası foo.y ise, VCG çıktı dosyası foo.vcg olacaktır.

--graph=graph-file --graph seçeneğinin davranışı -g seçeneği ile aynıdır. Tek farkı, çıktı grafiği dosyasının adını belirten isteğe bağlı bir bağımsız değişkene sahip olmasıdır.

-k

--token-table Bu seçenek, name.tab.c çıktısının belirteç numaralarına göre sıralanmış bir belirteç adları listesi içermesini sağlar; bu, yytname dizisinde tanımlanır. Ayrıca YYNTOKENS, YYNNTS, YYNRULES ve YYNSTATES için #define tanımları da üretilir.

-l

--no-lines Ayrıştırıcı dosyasına herhangi bir #line önişlemci komutu koymaz. Normalde bison, C derleyicisinin ve hata ayıklayıcıların hataları kaynak dosyanız olan dil bilgisi dosyasıyla ilişkilendirmesi için bunları ayrıştırıcı dosyasına koyar. Bu seçenek, hataları ayrıştırıcı dosyasıyla ilişkilendirmelerine neden olarak onu kendi başına bağımsız bir kaynak dosya olarak ele alır.

-n

--no-parser Ayrıştırıcı kodunu çıktıya üretmez; yalnızca bildirimleri üretir. Üretilen name.tab.c dosyası yalnızca sabit bildirimlerine sahip olacaktır. Ek olarak, tüm çevrilmiş eylemleri içeren bir switch deyimi gövdesi barındıran bir name.act dosyası oluşturulur.

-o outfile

--output-file=outfile Ayrıştırıcı dosyası için outfile adını belirtir.

Diğer çıktı dosyalarının adları, -v ve -d seçenekleri altında açıklandığı gibi outfile adından oluşturulur.

-p prefix

--name-prefix=prefix Ayrıştırıcıda kullanılan harici sembolleri, yy yerine prefix ile başlayacak şekilde yeniden adlandırır. Yeniden adlandırılan sembollerin tam listesi yyparse, yylex, yyerror, yylval, yychar ve yydebug şeklindedir.

Örneğin, -p c kullanırsanız, isimler cparse, clex vb. olur.

-t

--debug Ayrıştırıcı dosyasında, hata ayıklama kolaylıklarının derlenmesi için YYDEBUG makrosunu zaten tanımlanmamışsa 1 olarak tanımlar.

-v

--verbose Ayrıştırıcı durumlarının ve bu durumdaki her bir ileriye bakış (look-ahead) belirteci türü için ne yapıldığının ayrıntılı açıklamalarını içeren ek bir çıktı dosyası yazar.

Bu dosya ayrıca hem operatör önceliği ile çözülen hem de çözülmemiş olan tüm çelişkileri (conflict) açıklar.

Dosyanın adı, ayrıştırıcı çıktı dosyası adından .tab.c veya .c uzantısı kaldırılarak ve yerine .output eklenerek oluşturulur.

Bu nedenle, girdi dosyası foo.y ise, ayrıştırıcı dosyası varsayılan olarak foo.tab.c olarak adlandırılır. Sonuç olarak, ayrıntılı çıktı dosyası foo.output olarak adlandırılır.

-V

--version bison sürüm numarasını yazdırır ve çıkar.

-h

--help bison seçeneklerinin bir özetini yazdırır ve çıkar.

-y

--yacc

--fixed-output-files -o y.tab.c seçeneğine eşdeğerdir; ayrıştırıcı çıktı dosyası y.tab.c olarak adlandırılır ve diğer çıktılar y.output ve y.tab.h olarak adlandırılır. Bu seçeneğin amacı, yacc'ın çıktı dosyası adı kurallarını taklit etmektir. Dolayısıyla, aşağıdaki kabuk betiği yacc yerine geçebilir ve genellikle yacc olarak kurulur:

bison -y "$@"

Ayrıca Bakınız

yacc(1) Bison kaynak dağıtımında bison.texinfo dosyası olarak yer alan Bison Referans Kılavuzu (The Bison Reference Manual).

Hata ve Uyarı Teşhisleri

Açıklama gerektirmez, kendiliğinden anlaşılırdır.

local BISON(1)