<?xml version='1.0' encoding='UTF-8'?>

<div1 id="grammar">
<head>BB2 Dilbilgisi Kuralları</head>
<p><emph>Bu ek bölüm uyulması zorunlu bölümlerden biridir.</emph></p>

<p>Aşağıdaki dilbilgisi kuralları BB2'nin sözdizimini tanımlar. Bazı bakımlardan, belirtimin kendisi bu dilbilgisi içinde ifade edilmemiş ek anlambilgisi içermektedir. Belirtime uyumlu bir kullanıcı arayüzünün ayrıca, <specref ref="syntax"/>, <specref ref="property-defs"/> ve birim gösterimlerine de uyması gerekir. Ek olarak, belge dili de kısıtlamalar getirebilir; örneğin HTML '<tt>class</tt>' özniteliğinin olası değerleri üzerinde kısıtlamalara sahiptir.</p>

<div2 id="grammar1">
<head>Dilbilgisi</head>
<p>Aşağıdaki sözdizimi tanımları, <titleref ref="parsing-errors">çözümleme uzlaşımlarını</titleref> ifade etmediğinden kullanıcı arayüzlerinin kullanması için değildir, sadece BB2 sözdizimini belirtir. Sözdizimi tanımları insanlar tarafından kullanılabilsin diye eniyilenmiş olup bazı kısa gösterimler için <bibref ref="ref-YACC"/> gösterimleri kullanılmıştır:</p>

<slist>
<sitem><kw>*</kw>: 0 veya fazlası</sitem>
<sitem><kw>+</kw>: 1 veya fazlası</sitem>
<sitem><kw>?</kw>: 0 ya da 1</sitem>
<sitem><kw>|</kw>: seçenekler arasına konur</sitem>
<sitem><kw>[ ]</kw>: gruplama için</sitem>
</slist>

<scrap><head>Sözdizimi Tanımları</head>
  <prod id="NT-Stylesheet">
    <lhs>Biçembent</lhs>
    <rhs>[ <nt def="NT-CHARSET_SYM">Charset_İmi</nt> <nt def="NT-S">B</nt>* <nt def="NT-String">Dizge</nt> <nt def="NT-S">B</nt>* ';' ]?</rhs>
    <rhs>[ <nt def="NT-S">B</nt> | <nt def="NT-CDO">AçkBaşEtk</nt> | <nt def="NT-CDC">AçkBitEtk</nt>]* [ <nt def="NT-import">İçeren</nt> [ <nt def="NT-S">B</nt> | <nt def="NT-CDO">AçkBaşEtk</nt> | <nt def="NT-CDC">AçkBitEtk</nt>]* ]*</rhs>
    <rhs>[ [ <nt def="NT-Ruleset">KuralKümesi</nt> | <nt def="NT-media">Ortam</nt> | <nt def="NT-page">YazıcıOrtamı</nt> | <nt def="NT-font_face">Yazıtipi</nt> ] [ <nt def="NT-S">B</nt> | <nt def="NT-CDO">AçkBaşEtk</nt> | <nt def="NT-CDC">AçkBitEtk</nt> ]* ]*</rhs>
  </prod><prod id="NT-import">
    <lhs>İçeren</lhs>
    <rhs><nt def="NT-IMPORT_SYM">Import_İmi</nt> <nt def="NT-S">B</nt>*
    [ <nt def="NT-String">Dizge</nt> | <nt def="NT-URI">TanımYeri</nt> ] <nt def="NT-S">B</nt>* [ <nt def="NT-medium">OrtamAdı</nt> [ ',' <nt def="NT-S">B</nt>* <nt def="NT-medium">OrtamAdı</nt> ]* ]? ';' <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-media">
    <lhs>Ortam</lhs>
    <rhs><nt def="NT-MEDIA_SYM">Media_İmi</nt> <nt def="NT-S">B</nt>* <nt def="NT-medium">OrtamAdı</nt> [ ',' <nt def="NT-S">B</nt>* <nt def="NT-medium">OrtamAdı</nt> ]* '{' <nt def="NT-S">B</nt>* <nt def="NT-Ruleset">KuralKümesi</nt>* '}' <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-medium">
    <lhs>OrtamAdı</lhs>
    <rhs><nt def="NT-Ident">Betimleyici</nt> <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-page">
    <lhs>YazıcıOrtamı</lhs>
    <rhs><nt def="NT-PAGE_SYM">Page_İmi</nt> <nt def="NT-S">B</nt>* <nt def="NT-Ident">Betimleyici</nt>? <nt def="NT-pseudo_page">SözdeSayfa</nt>? <nt def="NT-S">B</nt>* '{' <nt def="NT-S">B</nt>* <nt def="NT-Declaration">Bildirim</nt> [ ';' <nt def="NT-S">B</nt>* <nt def="NT-Declaration">Bildirim</nt> ]* '}' <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-pseudo_page">
    <lhs>SözdeSayfa</lhs>
    <rhs>':' <nt def="NT-Ident">Betimleyici</nt></rhs>
  </prod><prod id="NT-font_face">
    <lhs>Yazıtipi</lhs>
    <rhs><nt def="NT-FONT_FACE_SYM">FontFace_İmi</nt> <nt def="NT-S">B</nt>* '{' <nt def="NT-S">B</nt>* <nt def="NT-Declaration">Bildirim</nt> [ ';' <nt def="NT-S">B</nt>* <nt def="NT-Declaration">Bildirim</nt> ]* '}' <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-operator">
    <lhs>İşleç</lhs>
    <rhs>'/' <nt def="NT-S">B</nt>* | ',' <nt def="NT-S">B</nt>* | /* empty */</rhs>
  </prod><prod id="NT-combinator">
    <lhs>Birleştirici</lhs>
    <rhs>'+' <nt def="NT-S">B</nt>* | '>' <nt def="NT-S">B</nt>* | /* empty */</rhs>
  </prod><prod id="NT-unary_operator">
    <lhs>TekTerimli</lhs>
    <rhs>'-' | '+'</rhs>
  </prod><prod id="NT-Property">
    <lhs>Nitelik</lhs>
    <rhs><nt def="NT-Ident">Betimleyici</nt> <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-Ruleset">
    <lhs>KuralKümesi</lhs>
    <rhs><nt def="NT-Selector">Seçici</nt> [ ',' <nt def="NT-S">B</nt>* <nt def="NT-Selector">Seçici</nt> ]* <nt def="NT-Block">Blok</nt> <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-Block">
    <lhs>Blok</lhs>
    <rhs>'{' <nt def="NT-S">B</nt>* <nt def="NT-Declaration">Bildirim</nt> [ ';' <nt def="NT-S">B</nt>* <nt def="NT-Declaration">Bildirim</nt> ]* '}'</rhs>
  </prod>
<indexterm><primary>seçici</primary></indexterm>
  <prod id="NT-Selector">
    <lhs>Seçici</lhs>
    <rhs><nt def="NT-simple_selector">BasitSeçici</nt> [ <nt def="NT-combinator">Birleştirici</nt> <nt def="NT-simple_selector">BasitSeçici</nt> ]*</rhs>
  </prod><prod id="NT-simple_selector">
    <lhs>BasitSeçici</lhs>
    <rhs><nt def="NT-element_name">ElemanAdı</nt>? [ <nt def="NT-Hash">Diyez</nt> | <nt def="NT-class">Sınıf</nt> | <nt def="NT-attrib">Öznitelik</nt> | <nt def="NT-pseudo">SözdeBirŞey</nt> ]* <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-class">
    <lhs>Sınıf</lhs>
    <rhs>'.' <nt def="NT-Ident">Betimleyici</nt></rhs>
  </prod><prod id="NT-element_name">
    <lhs>ElemanAdı</lhs>
    <rhs><nt def="NT-Ident">Betimleyici</nt> | '*'</rhs>
  </prod><prod id="NT-attrib">
    <lhs>Öznitelik</lhs>
    <rhs>'[' <nt def="NT-S">B</nt>* <nt def="NT-Ident">Betimleyici</nt> <nt def="NT-S">B</nt>* [ [ '=' | <nt def="NT-Includes">BoşlukluEşlem</nt> | <nt def="NT-DashMatch">TireliEşlem</nt> ] <nt def="NT-S">B</nt>*</rhs>
    <rhs>[ <nt def="NT-Ident">Betimleyici</nt> | <nt def="NT-String">Dizge</nt> ] <nt def="NT-S">B</nt>* ]? ']'</rhs>
  </prod><prod id="NT-pseudo">
    <lhs>SözdeBirŞey</lhs>
    <rhs>':' [ <nt def="NT-Ident">Betimleyici</nt> | <nt def="NT-Function">İşlevBaşı</nt> <nt def="NT-S">B</nt>* <nt def="NT-Ident">Betimleyici</nt> <nt def="NT-S">B</nt>* ')' ]</rhs>
  </prod><prod id="NT-Declaration">
    <lhs>Bildirim</lhs>
    <rhs><nt def="NT-Property">Nitelik</nt> ':' <nt def="NT-S">B</nt>* <nt def="NT-expr">İfade</nt> <nt def="NT-prio">Önem</nt>? | /* empty */</rhs>
  </prod><prod id="NT-prio">
    <lhs>Önem</lhs>
    <rhs><nt def="NT-IMPORTANT_SYM">Önemli_İmi</nt> <nt def="NT-S">B</nt>*</rhs>
  </prod><prod id="NT-expr">
    <lhs>İfade</lhs>
    <rhs><nt def="NT-term">Terim</nt> [ <nt def="NT-operator">İşleç</nt> <nt def="NT-term">Terim</nt> ]*</rhs>
  </prod><prod id="NT-term">
    <lhs>Terim</lhs>
    <rhs><nt def="NT-unary_operator">TekTerimli</nt>?</rhs>
    <rhs>[ <nt def="NT-Number">Sayı</nt> <nt def="NT-S">B</nt>* | <nt def="NT-Percentage">YüzdeDeğeri</nt> <nt def="NT-S">B</nt>* | <nt def="NT-Length">Uzunluk</nt> <nt def="NT-S">B</nt>* | <nt def="NT-ems">EmUzunluk</nt> <nt def="NT-S">B</nt>* | <nt def="NT-exs">EksUzunluk</nt> <nt def="NT-S">B</nt>* | <nt def="NT-Angle">Açı</nt> <nt def="NT-S">B</nt>* | <nt def="NT-Time">Süre</nt> <nt def="NT-S">B</nt>* | <nt def="NT-Freq">Frekans</nt> <nt def="NT-S">B</nt>* | <nt def="NT-function">İşlev</nt> ] | <nt def="NT-String">Dizge</nt> <nt def="NT-S">B</nt>* | <nt def="NT-Ident">Betimleyici</nt> <nt def="NT-S">B</nt>* | <nt def="NT-URI">TanımYeri</nt> <nt def="NT-S">B</nt>* | <nt def="NT-UnicodeRange">UnicodeAralığı</nt> <nt def="NT-S">B</nt>* | <nt def="NT-hexcolor">Renk</nt></rhs>
  </prod><prod id="NT-function">
    <lhs>İşlev</lhs>
    <rhs><nt def="NT-Function">İşlevBaşı</nt> <nt def="NT-S">B</nt>* <nt def="NT-expr">İfade</nt> ')' <nt def="NT-S">B</nt>*</rhs>
  </prod>
<indexterm><primary>renk</primary></indexterm>
  <prod id="NT-hexcolor">
    <lhs>Renk</lhs>
    <rhs><nt def="NT-Hash">Diyez</nt> <nt def="NT-S">B</nt>*</rhs>
  </prod>
</scrap>

<p><nt def="NT-hexcolor">Renk</nt> değerleri üzerinde bir kısıtlama vardır: bir '#' karakterinden hemen sonra gelen ya 3 ya da 6 adet onaltılık rakamdan (yani, <tt>[0-9a-fA-F]</tt>) oluşmaları gerekir; örneğin, "#000" geçerlidir ama "#abcd" geçerli değildir.</p>

<ednote><edtext>Yukarıdaki sözdizimi tanımlarını alt tanım terimleriyle bir bütün haline getirebilmek ve biçembent yazanların yazım kurallarına çabuk ulaşabilmesini sağlamak için aşağıdaki sözdizimi tanımlarını (Lex sözdizimsel tarayıcı sonuçlarından kodları tercüme ederek) ben ekledim.</edtext></ednote>
<scrap><head>Dizgecik Tanımları</head>
  <prod id="NT-h">
    <lhs>Onaltı</lhs>
    <rhs>[0-9a-f]</rhs>
  </prod><prod id="NT-NonAscii">
    <lhs>AsciiDışı</lhs>
    <rhs>[\80-\10ffff]</rhs>
  </prod><prod id="NT-Unicode">
    <lhs>Unicode</lhs>
    <rhs>'\' <nt def="NT-h">Onaltı</nt>{1,6}[ \t\r\n\f]?</rhs>
  </prod><prod id="NT-Escape">
    <lhs>Öncelem</lhs>
    <rhs><nt def="NT-Unicode">Unicode</nt> | '\' [ -~\80-\10ffff]</rhs>
  </prod><prod id="NT-NmStart">
    <lhs>AdBaşl</lhs>
    <rhs>[_a-z] | <nt def="NT-NonAscii">AsciiDışı</nt> | <nt def="NT-Escape">Öncelem</nt></rhs>
  </prod><prod id="NT-NmChar">
    <lhs>AdKark</lhs>
    <rhs>[_a-z0-9-] | <nt def="NT-NonAscii">AsciiDışı</nt> | <nt def="NT-Escape">Öncelem</nt></rhs>
  </prod><prod id="NT-String1">
    <lhs>Dizge1</lhs>
    <rhs>'"' ([\t !#$%&amp;(-~] | <nt def="NT-NL">SatırSonu</nt> | "'" | <nt def="NT-NonAscii">AsciiDışı</nt> | <nt def="NT-Escape">Öncelem</nt>)* '"'</rhs>
  </prod><prod id="NT-String2">
    <lhs>Dizge2</lhs>
    <rhs>"'" ([\t !#$%&amp;(-~] | <nt def="NT-NL">SatırSonu</nt> | '"' | <nt def="NT-NonAscii">AsciiDışı</nt> | <nt def="NT-Escape">Öncelem</nt>)* "'"</rhs>
  </prod><prod id="NT-Ident">
    <lhs>Betimleyici</lhs>
    <rhs><nt def="NT-NmStart">AdBaşl</nt> <nt def="NT-NmChar">AdKark</nt>*</rhs>
  </prod><prod id="NT-Name">
    <lhs>Ad</lhs>
    <rhs><nt def="NT-NmChar">AdKark</nt>+</rhs>
  </prod><prod id="NT-Number">
    <lhs>Sayı</lhs>
    <rhs>[0-9]+ | [0-9]* '.' [0-9]+</rhs>
  </prod><prod id="NT-String">
    <lhs>Dizge</lhs>
    <rhs><nt def="NT-String1">Dizge1</nt> | <nt def="NT-String2">Dizge2</nt></rhs>
  </prod><prod id="NT-URL">
    <lhs>URL</lhs>
    <rhs>([!#$%&amp;*-~] | <nt def="NT-NonAscii">AsciiDışı</nt> | <nt def="NT-Escape">Öncelem</nt>)*</rhs>
  </prod><prod id="NT-W">
    <lhs>KBoş</lhs>
   <rhs>[ \t\r\n\f]*</rhs>
  </prod><prod id="NT-NL">
    <lhs>SatırSonu</lhs>
   <rhs>\n | \r\n | \r | \f</rhs>
  </prod><prod id="NT-range">
    <lhs>Aralık</lhs>
   <rhs>'?'{1,6} | <nt def="NT-h">Onaltı</nt> ('?'{0,5} | <nt def="NT-h">Onaltı</nt> ('?'{0,4} | <nt def="NT-h">Onaltı</nt> ('?'{0,3} | <nt def="NT-h">Onaltı</nt> ('?'{0,2} | <nt def="NT-h">Onaltı</nt> ('??' | <nt def="NT-h">Onaltı</nt>)))))</rhs>
  </prod><prod id="NT-S">
    <lhs>B</lhs>
   <rhs>[ \t\r\n\f]+</rhs>
  </prod><prod id="NT-Comment">
    <lhs>Açıklama</lhs>
   <rhs>\/\*[^*]*\*+([^/][^*]*\*+)*\/</rhs>
   <com>ignore comments</com>
  </prod><prod id="NT-CDO">
    <lhs>AçkBaşEtk</lhs>
    <rhs>'&lt;!--'</rhs>
  </prod><prod id="NT-CDC">
    <lhs>AçkBitEtk</lhs>
    <rhs>'-->'</rhs>
  </prod><prod id="NT-Includes">
    <lhs>BoşlukluEşlem</lhs>
   <rhs>'~='</rhs>
  </prod><prod id="NT-DashMatch">
    <lhs>TireliEşlem</lhs>
   <rhs>'|='</rhs>
  </prod><prod id="NT-Hash">
    <lhs>Diyez</lhs>
    <rhs>'#' <nt def="NT-Name">Ad</nt></rhs>
  </prod><prod id="NT-IMPORT_SYM">
    <lhs>Import_İmi</lhs>
    <rhs>'@import'</rhs>
  </prod><prod id="NT-PAGE_SYM">
    <lhs>Page_İmi</lhs>
    <rhs>'@page'</rhs>
  </prod><prod id="NT-MEDIA_SYM">
    <lhs>Media_İmi</lhs>
    <rhs>'@media'</rhs>
  </prod><prod id="NT-FONT_FACE_SYM">
    <lhs>FontFace_İmi</lhs>
    <rhs>'@font-face'</rhs>
  </prod><prod id="NT-CHARSET_SYM">
    <lhs>Charset_İmi</lhs>
    <rhs>'@charset'</rhs>
  </prod><prod id="NT-IMPORTANT_SYM">
    <lhs>Önemli_İmi</lhs>
    <rhs>'!' <nt def="NT-W">KBoş</nt> 'important'</rhs>
  </prod><prod id="NT-ems">
    <lhs>EmUzunluk</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'em'</rhs>
  </prod><prod id="NT-exs">
    <lhs>EksUzunluk</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'ex'</rhs>
  </prod><prod id="NT-Length">
    <lhs>Uzunluk</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'px' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'cm' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'mm' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'in' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'pt' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'pc'</rhs>
  </prod><prod id="NT-Angle">
    <lhs>Açı</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'deg' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'rad' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'grad'</rhs>
  </prod><prod id="NT-Time">
    <lhs>Süre</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'ms' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 's'</rhs>
  </prod><prod id="NT-Freq">
    <lhs>Frekans</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'Hz' |</rhs>
    <rhs><nt def="NT-Number">Sayı</nt> 'kHz'</rhs>
  </prod><prod id="NT-Dimension">
    <lhs>Boyut</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> <nt def="NT-Ident">Betimleyici</nt></rhs>
  </prod><prod id="NT-Percentage">
    <lhs>YüzdeDeğeri</lhs>
    <rhs><nt def="NT-Number">Sayı</nt> '%'</rhs>
  </prod><prod id="NT-URI">
    <lhs>TanımYeri</lhs>
    <rhs>'url(' <nt def="NT-W">KBoş</nt> <nt def="NT-String">Dizge</nt> <nt def="NT-W">KBoş</nt> ')' |</rhs>
    <rhs>'url(' <nt def="NT-W">KBoş</nt> <nt def="NT-URL">URL</nt> <nt def="NT-W">KBoş</nt> ')'</rhs>
  </prod><prod id="NT-Function">
    <lhs>İşlevBaşı</lhs>
   <rhs><nt def="NT-Ident">Betimleyici</nt> '('</rhs>
  </prod><prod id="NT-UnicodeRange">
    <lhs>UnicodeAralığı</lhs>
    <rhs>'U+' <nt def="NT-range">Aralık</nt> | 'U+' <nt def="NT-h">Onaltı</nt>{1,6} - <nt def="NT-h">Onaltı</nt>{1,6}</rhs>
  </prod>
</scrap>
</div2>




<div2 id="grammar2"><head>Sözdizimsel tarayıcı</head>
<p><indexterm><primary>dizgeciklere ayırma</primary></indexterm>
Aşağıdaki dizgecikler <bibref ref="ref-FLEX"/> gösterimiyle yazılmıştır ve harf büyüklüğüne duyarlı değillerdir.</p>

<p><indexterm><primary>unicode</primary></indexterm>
<indexterm><primary>iso-10646</primary></indexterm>

Aşağıda yer alan her iki "\377" değeri de Flex'in çalışabildiği en büyük karakter numarasını (onluk tabanda 255) göstermektedir. Bunlar Unicode/ISO-10646'da en büyük karakter kodu olan ve BB2'de geçerli bir karakter öncelemi olarak "\10FFFF" şeklinde okunmalıdır.</p>

<eg>%option case-insensitive

h               [0-9a-f]
nonascii        [\200-\377]
unicode         \\{h}{1,6}[ \t\r\n\f]?
escape          {unicode}|\\[ -~\200-\377]
nmstart         [a-z]|{nonascii}|{escape}
nmchar          [a-z0-9-]|{nonascii}|{escape}
string1         \"([\t !#$%&amp;(-~]|\\{nl}|\'|{nonascii}|{escape})*\"
string2         \'([\t !#$%&amp;(-~]|\\{nl}|\"|{nonascii}|{escape})*\'

ident           {nmstart}{nmchar}*
name            {nmchar}+
num             [0-9]+|[0-9]*"."[0-9]+
string          {string1}|{string2}
url             ([!#$%&amp;*-~]|{nonascii}|{escape})*
w               [ \t\r\n\f]*
nl              \n|\r\n|\r|\f
range           \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|{h})))))

%%

[ \t\r\n\f]+            {return S;}

\/\*[^*]*\*+([^/][^*]*\*+)*\/   /* ignore comments */

"&lt;!--"                  {return CDO;}
"-->"                   {return CDC;}
"~="                    {return INCLUDES;}
"|="                    {return DASHMATCH;}

{string}                {return STRING;}

{ident}                 {return IDENT;}

"#"{name}               {return HASH;}

"@import"               {return IMPORT_SYM;}
"@page"                 {return PAGE_SYM;}
"@media"                {return MEDIA_SYM;}
"@font-face"            {return FONT_FACE_SYM;}
"@charset"              {return CHARSET_SYM;}
"@"{ident}              {return ATKEYWORD;}

"!{w}important"         {return IMPORTANT_SYM;}

{num}em                 {return EMS;}
{num}ex                 {return EXS;}
{num}px                 {return LENGTH;}
{num}cm                 {return LENGTH;}
{num}mm                 {return LENGTH;}
{num}in                 {return LENGTH;}
{num}pt                 {return LENGTH;}
{num}pc                 {return LENGTH;}
{num}deg                {return ANGLE;}
{num}rad                {return ANGLE;}
{num}grad               {return ANGLE;}
{num}ms                 {return TIME;}
{num}s                  {return TIME;}
{num}Hz                 {return FREQ;}
{num}kHz                {return FREQ;}
{num}{ident}            {return DIMEN;}
{num}%                  {return PERCENTAGE;}
{num}                   {return NUMBER;}

"url("{w}{string}{w}")" {return URI;}
"url("{w}{url}{w}")"    {return URI;}
{ident}"("              {return FUNCTION;}

U\+{range}              {return UNICODERANGE;}
U\+{h}{1,6}-{h}{1,6}    {return UNICODERANGE;}

.                       {return *yytext;}</eg>
</div2>

<div2 id="tokenizer-diffs">
  <head>BB1 ile BB2 dizgeciklerinin karşılaştırması</head>

<p>BB1 önergesinde (<bibref ref="ref-CSS1"/>) belirtilen sözdizimi yukarıdakinden biraz farklıdır. Çoğu BB2'deki bazı dizgeciklerin BB1'de bulunmayışındandır. Diğerleri dilbilgisinin daha okunabilir olması için yeniden yazılmasından kaynaklanmıştır. Bununla birlikte, BB1 ile uyumlu olmayan ve BB1'de hatalara yol açabilecek bazı değişiklikler de vardır. Bunlara burada değinilmiştir.</p>

<ulist>
<item><p>BB1 biçembentlerinde karakterler sadece 1 bayt uzunlukta olabilmektedir (ASCII ve ISO-8859-1'de olduğu gibi). BB2 için böyle bir sınırlama yoktur. Uygulamada zaten BB1 dizgeciklerini tahminde küçük zorluklar yaşanmaktaydı ve bazı kullanıcı arayüzleri 2 baytlık kodlamaları kabul etmekteydi.</p></item>

<item><p>BB1'de Unicode karakterlerine atıfta bulunmak için tersbölüden sonra dört adet onaltılık rakama izin verilmekteydi, BB2'de <termref def="escaped-characters">altı rakama</termref> izin verilmektedir. Örneğin, BB1'de "\abcdef" dizgesi üç Unicode karakterini ifade etmesine (\abcd, e
ve f) karşın, BB2'de aynı dizi tek bir karakteri ifade eder. Bundan başka, BB2 karakter öncelemlerini sınırlamak için boşluk karakterlerinin kullanımına da izin vermektedir.</p></item>

<item><p>Dizgelerde sekme karakterlerine (ASCII 9) izin verilmezdi. Bununla birlikte, BB1'de dizgelere sadece yazıtipi isimlerinde ve tanım-yerlerinde izin verilmekteydi. Bu bakımdan, BB2 ile BB1 arasındaki uyumsuzluk isminde sekme karakteri bulunan bir yazıtipi ismi kullanıldığında ortaya çıkacaktır.</p></item>

<item><p>Benzer şekilde, satırsonu karakterlerine de (<titleref ref="strings">tersbölü ile öncelenmiş olarak</titleref>) BB1 dizgelerinde izin verilmezdi.</p></item>

<item><p>BB2 hemen ardından bir betimleyici gelen bir sayıyı bir <nt def="NT-Dimension">Boyut</nt> dizgeciği olarak çözümlerken (örn, bilinmeyen bir birim olarak), BB1 bunu bir sayı ve bir betimleyici olarak çözümlerdi. Bu, şu anlama gelir: BB1'de '<code>font: 10pt/1.2serif</code>' bildirimi doğruydu; BB2'de "serif" dizgesinden önce bir boşluk gerekir; BB2'de '<code>font: 10pt/12pt serif</code>' bildirimi doğrudur. (Bazı kullanıcı arayüzleri birinci bildirimi kabul eder, ikincisini değil.)</p></item>

<item><p>BB1'de bir sınıf ismi, bir boyut olmadıkça (".55in") bir rakamla başlayamaz (".55ft"). BB2'de böyle sınıflar bilinmeyen boyutlar olarak çözümlenir (belirtimin ileri aşamalarında yeni birimleri mümkün kılabilmek için). ".55ft" isminin geçerli bir sınıf olabilmesi için BB2'de ilk rakamın öncelenmesi (".\35 5ft") gerekir.</p></item>
</ulist>
</div2>
</div1>
