BLM210 HAFTA 2 FORMAL METHODS OF SYNTAX DESCRIPTION (SÖZDİZİM TARİFİNİN BİÇİMSEL YÖNTEMLERİ)

Benzer belgeler
Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

Context-Free Grammars and Languages

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Dilbilgisi ve Diller

First Stage of an Automated Content-Based Citation Analysis Study: Detection of Citation Sentences

Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Bölüm 4. Sözcüksel ve Sözdizimsel Analiz ISBN


Syntax Analysis. 4/5/2004 Formal Diller 4.1

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

Bölüm 3. Söz Dizilimi ve Anlamı Tanımlama ISBN

WEEK 11 CME323 NUMERIC ANALYSIS. Lect. Yasin ORTAKCI.

Soru Toplam Puan Not

YZM Biçimsel Diller ve Otomata Teorisi. Ders#06

Bölüm 3. Sözdizimi(Syntax) ve Anlamsal(Semantics) Tanımlama ISBN

Bölüm 3. Sentaks ve semantik tarifi ISBN

CmpE 320 Spring 2008 Project #2 Evaluation Criteria

Yüz Tanımaya Dayalı Uygulamalar. (Özet)

a, ı ı o, u u e, i i ö, ü ü

BAĞLAMDAN BAĞIMSIZ VE BAĞLAMDAN BAĞIMSIZ OLMAYAN DİLLER (CONTEXT-FREE AND NON-CONTEXT-FREE LANGUAGES)

Unlike analytical solutions, numerical methods have an error range. In addition to this

IDENTITY MANAGEMENT FOR EXTERNAL USERS

BBM Discrete Structures: Final Exam Date: , Time: 15:00-17:00

Argumentative Essay Nasıl Yazılır?

İngilizce konu anlatımlarının devamı burada Tıkla! Spot On 8 Ders Kitabı Tüm Kelimeleri. How do we spell the Present Continuous Tense?

Regular Expression vs. Context-Free Grammars. Ambiguity. NFA to CFG. Neden RE ler kullanilir?

BIM Bahar Programlama Dilleri

BAĞLAMDAN BAĞIMSIZ (CONTEXT-FREE) GRAMERLER (CFG) VE DİLLER (CFL)

"IF CLAUSE KALIPLARI"

AB surecinde Turkiyede Ozel Guvenlik Hizmetleri Yapisi ve Uyum Sorunlari (Turkish Edition)

12. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

Present continous tense

BBM Discrete Structures: Midterm 2 Date: , Time: 16:00-17:30. Question: Total Points: Score:

WEEK 4 BLM323 NUMERIC ANALYSIS. Okt. Yasin ORTAKCI.

Level Test for Beginners 2

Formal Diller Ve Otomat Teorisi

İŞLETMELERDE KURUMSAL İMAJ VE OLUŞUMUNDAKİ ANA ETKENLER

Bağlaç 88 adet P. Phrase 6 adet Toplam 94 adet

Matematik Mühendisliği - Mesleki İngilizce

4. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

İZDÜŞÜM. İzdüşümün Tanımı ve Önemi İzdüşüm Metodları Temel İzdüşüm Düzlemleri Noktanın İzdüşümü Doğrunun İzdüşümü Düzlemlerin İz Düşümleri

Properties of Regular Languages. Mart 2006 Ankara Üniversitesi Bilgisayar Mühendisliği - TY 1

! " # $ % & '( ) *' ' +, -. /) /) 0 # /) %, %, 1 2

FINITE AUTOMATA. Mart 2006 Ankara Üniversitesi Bilgisayar Mühendisliği 1

GAZİ İLKÖĞRETİM OKULU EĞİTİM-ÖĞRETİM YILI YETİŞTİRME KURSU İNGİLİZCE DERSİ 6. SINIF KURSU YILLIK PLANI

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

Delta Pulse 3 Montaj ve Çalıstırma Kılavuzu.

A LANGUAGE TEACHER'S PERSONAL OPINION

VT Sistem Gerçeklemesi. Ders Notları- #8

Lambda İfadeleri (Lambda Expressions)

Yarışma Sınavı A ) 60 B ) 80 C ) 90 D ) 110 E ) 120. A ) 4(x + 2) B ) 2(x + 4) C ) 2 + ( x + 4) D ) 2 x + 4 E ) x + 4

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 1

AİLE İRŞAT VE REHBERLİK BÜROLARINDA YAPILAN DİNİ DANIŞMANLIK - ÇORUM ÖRNEĞİ -

MM103 E COMPUTER AIDED ENGINEERING DRAWING I

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Sınavında sık yapılan temel hatalar:

Java da İşleçler, Ders #3 (4 Kasım 2009)

Cases in the Turkish Language

Tokenlarin Taninmasi

Bölüm 4. Sözcüksel ve sözdizimsel analiz ISBN

SNU (Principles of Programming) Part I

1. Superlative lerden sonra gelen fiil infinitive olur. ( the latest species to join the

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 2

A UNIFIED APPROACH IN GPS ACCURACY DETERMINATION STUDIES

Fıstıkçı Şahap d t c ç

JAVASCRIPT JAVASCRIPT DİLİ

Yaz okulunda (2014 3) açılacak olan (Calculus of Fun. of Sev. Var.) dersine kayıtlar aşağıdaki kurallara göre yapılacaktır:

Soru Toplam Puan Not

BLM210 HAFTA 9 STATEMENT-LEVEL CONTROL STRUCTURES (DEYİMLER DÜZEYİNDEKİ KONTROL YAPILARI)

Theory of Dimensioning

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS Y.DİL III.(İNG.) DKB

TEST RESULTS UFED, XRY and SIMCON

Chapter 8. Komut düzeyi kontrol yapıları ISBN


a, ı ı o, u u e, i i ö, ü ü şu that (something relatively nearby) şu ekmek o that (something further away) o dondurma

AKE.ZR Yıkama Durulama Zaman Rölesi Kullanım Kılavuzu Washing and Rinse Time Relay User Manual TR EN

BBM Discrete Structures: Final Exam - ANSWERS Date: , Time: 15:00-17:00

Derleyici Kuramı (Compiler Theory)

AKE Bulaşık Yıkama Makinası Kontrol Kartı Kullanım Kılavuzu Dishwasher Controller User Manual TR EN

Week 5 Examples and Analysis of Algorithms

! " # $ % & '( ) *' ' +, -. /.,

NATURAL LANGUAGE PROCESSING

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Exercise 2 Dialogue(Diyalog)

YAKIN DOĞU ÜNİVERSİTESİ DIŞA AÇIK DERSLER KOORDİNATÖRLÜĞÜ BİLGİSAYAR MÜHENDİSLİĞİ - İNGİLİZCE

e-tartı LTR3 Firmware Upgrade Yazılım Güncelleme Moduler Connection LTR3 Firmware Upgrade / LTR3 Yazılım Güncelleme v1.0.

THE IMPACT OF AUTONOMOUS LEARNING ON GRADUATE STUDENTS PROFICIENCY LEVEL IN FOREIGN LANGUAGE LEARNING ABSTRACT

SBR331 Egzersiz Biyomekaniği

KALEIDOSCOPES N.1. Solo Piano. Mehmet Okonşar

Dairesel grafik (veya dilimli pie chart circle graph diyagram, sektor grafiği) (İngilizce:"pie chart"), istatistik

daha çok göz önünde bulundurulabilir. Öğrencilerin dile karşı daha olumlu bir tutum geliştirmeleri ve daha homojen gruplar ile dersler yürütülebilir.

T.C. Hitit Üniversitesi. Sosyal Bilimler Enstitüsü. İşletme Anabilim Dalı

U3000/U3100 Mini (Linux İşletim Sistemi Yüklü. Eee PC için) Hızlı Başlangıç Kılavuzu

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

.. ÜNİVERSİTESİ UNIVERSITY ÖĞRENCİ NİHAİ RAPORU STUDENT FINAL REPORT

NEY METODU SAYFA 082 NEY METHOD PAGE 082. well.

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI BISON AYRIŞTIRICI (PARSER) ÜRETECİ

Transkript:

1 BLM210 HAFTA 2 FORMAL METHODS OF SYNTAX DESCRIPTION (SÖZDİZİM TARİFİNİN BİÇİMSEL YÖNTEMLERİ) Programming language implementors must be able to determine how the expressions, statements, and program units of a language are formed, and also their intended effect when executed. Bir programlama dilinin ifadeleri, deyimleri ve program birimlerinin nasıl oluşturulduğu ve çalıştırıldığı (koşulduğu) zaman istenen etkileri, dil gerçekleştiricilerince bilinmelidir. Language users must be able to determine how to encode software solutions by referring to a language reference manual. Dili kullananlar, dile başvuru kılavuzuna baktıklarında, yazılım çözümlerini nasıl kodlayacaklarını (nasıl program yazacaklarını) bilmelidir. SYNTAX OF A PROGRAMMING LANGUAGE >> Form of its expressions, statements and program units BİR PROGRAMLAMA DİLİNİN SÖZDİZİMİ >> Dilin ifadelerinin, deyimlerinin ve program birimlerinin biçimi SEMANTICS >> The meaning of those expressions, statements and program units ANLAM >> Bu ifadelerin, deyimlerin ve program birimlerinin anlamı Example (örnek): Syntax of a Java while statement (Java while deyiminin sözdizimi) while (boolean_expr) statement Its semantics (Anlamı) Execute statement as long as boolean_expr is true, otherwise proceed after while boolean_expr doğru olduğu sürece statement ı koş, aksi halde while dan sonra devam et. Syntax and semantics are closely related. In a well-designed language, semantics should follow directly from syntax. Sözdizimi ve anlam yakından ilişkilidir. İyi tasarlanmış bir dilde, anlam doğrudan sözdiziminden çıkarılabilmelidir. Describing syntax is easier than describing semantics. Sözdizimini tarif etmek, anlamı tarif etmekten daha kolaydır. Sentences (statements) >> Strings of a language Cümleler (deyimler) >> Bir dilin dizgileri Syntax rules of a language >> Which strings are in the language? Bir dilin sözdizimi kuralları >> Hangi dizgiler dile aittir?

2 Lexemes >> lowest-level syntactic units Sözcükler (sözlüksel birimler) >> en-alt düzey sözdizimsel birimler Lexemes (sözcükler) o numeric literals (sayısal kalıp deyimler = sayılar) o operators (işleçler) o special words (özel kelimeler) o others (başka şeyler) Program >> string of lexemes, not strings of characters Program >> sözcükler dizgisi, karakterler dizgisi değil Lexemes are partitioned into groups (sözcükler gruplara bölünmüştür) o The names of variables, methods, classes >> identifiers Değişken, yöntem (metot = fonksiyon), sınıf adları >> kimlik tanıtıcılar Token >> A category of lexemes Jeton (andaç) >> Sözcüklere ait bir grup (kategori) Example (örnek): LANGUAGE RECOGNIZERS and LANGUAGE GENERATORS (DİL TANIYICILAR ve DİL ÜRETEÇLERİ) L >> language (dil) >> alphabet of characters (karakterlerden oluşan alfabe) R >> a mechanism that recognizes L (L yi tanıyan bir mekanizma (araç)) o capable of reading strings of characters from dan karakter dizgileri okuyabiliyor o indicates whether a given string is in L or not in L verilen bir dizgi L de mi, L de değil mi, karar verebiliyor

o only accepts strings in L and rejects others sadece L deki dizgileri Kabul edip, diğerlerini reddediyor R >> a description of L (R >> L ye ait bir tanımlama = tarif ) 3 Syntax analysis part of a compiler is a recognizer for the language the compiler translates. Bir derleyicinin sözdizimi çözümleme parçası, derleyicinin çevirdiği dil için bir tanıyıcıdır. Language generators generate sentences of a language (ex: when a button is pressed). Dil üreteçleri, bir dilin cümlelerini retirler (ör: bir düğmeye basılınca). Language generators seem to be of limited usefulness. Dil üreteçleri kısıtlı yarar sağlayan araçlar gibi görünmektedir. However, they can be preferred since they are more easily read and understood. Ancak, daha kolay okunur ve anlaşılır oldukları için tercih edilebilirler. The syntax-analysis portion of a compiler may not be as useful as a language descriptor, because it can be used only in trial/error mode. Yalnız deneme/yanılma modunda kullanılabildikleri için, derleyicilerin sözdizimi çözümleme parçaları dil tanımlama için o kadar yararlı olmayabilir. It is possible to determine whether the syntax of a statement is correct by comparing it with the structure of the generator. Bir üretecin yapısıyla karşılaştırılınca, verilen bir deyimin sözdiziminin doğru olup olmadığını anlamak kolay olur. There is a close connection between RECOGNIZERS and GENERATORS. TANIYICILAR ve ÜRETEÇLER arasında yakın bir ilişki vardır. FORMAL METHODS OF SYNTAX DESCRIPTION (SÖZDİZİM TARİFİNİN BİÇİMSEL YÖNTEMLERİ) Grammar >> formal language generation mechanism Gramer >> dil üretmenin biçimsel mekanizması Chomsky s hierarchy of grammars (Chomsky nin gramer hiyerarşisi (sıradüzeni)) Type 0 (Tip 0) >> unrestricted (kısıtsız) Type 1 (Tip 1) >> context-sensitive (bağlama duyarlı) Type 2 (Tip 2) >> context-free (bağlama duyarsız) Type 3 (Tip 3) >> regular (düzenli) Tip 0 Tip 1 Tip 2 Tip 3 The forms of tokens can be described by Type 3 (regular) grammars. Jetonların (= andaç = grup = kategori) biçimleri Tip 3 (düzenli) gramerlerle tanımlanır. The syntax of programming languages can be described by Type 2 (context-free) grammars. Programlama dillerinin sözdizimleri Tip 2 (bağlama duyarsız) gramerlerle tanımlanır.

4 The formal method of syntax description >> Backus-Naur Form (BNF) Sözdizimi tarifinin biçimsel yöntemi >> BNF metalanguage >> a language used to describe another language Öte dil >> başka bir dili tanımlamak için kullanılan dil BNF >> a metalanguage for programming languages (programlama dilleri için öte dil) Example (Örnek): Here is the form of a Java assignment statement in BNF: Aşağıdaki satır bir Java atama deyiminin BNF biçimidir. <assign> <var> = <expression> <.> >> abstraction (soyutlama) arrow (ok) >> lefthand side of the arrow (okun sol tarafı) >> LHS righthand side of the arrow (okun sağ tarafı) >> RHS the text to the right of >> (definition of LHS) = RHS un sağ tarafındaki metin >> (LHS nin tanımı) = RHS RHS >> a mixture of tokens, lexemes and other abstractions RHS >> jetonlar, sözcükler ve başka soyutlamalardan oluşur Actually, tokens are also abstractions. Aslında, jetonlar da soyutlamalardır. The overall definition is a rule or production. Tanımın tamamı kural ya da yapım olarak adlandırılır. <assign>, <var> and <expression> are abstractions. (Bunlar soyutlamalardır) For the example rule to be useful, the abstractions <var> and <expression> must be defined. Örnekteki kuralın yararlı olması için, <var> ve <expression> soyutlamaları da tanımlanmalıdır. The abstraction <assign> is defined as an instance of the abstraction <var>, followed by the lexeme, followed by an instance of the abstraction <expression>. <assign> soyutlaması, <var> soyutlamasının bir örneğini takip eden = sözcüğü ve = sözcüğünü takip eden <expression> soyutlamasının bir örneği olarak tanımlanmıştır. An example sentence of the rule is (Kuralın örnek bir cümlesi aşağıdadır):

5 Abstractions in BNF descriptions (grammars) >> nonterminal symbols OR nonterminals BNF tanımlarındaki (gramerlerdeki) soyutlamalar >> dalllanma simgeleri VEYA dallanmalar Lexemes and tokens of the rules >> terminal symbols OR terminals Kuralların sözcük ve jetonları >> uç simgeler YA DA uçlar A BNF description (grammar) >> a collection of rules Bir BNF tanımı (gramer) >> bir kurallar topluluğu Rule example (Kural örneği): OR (veya) BNF can describe lists of similar constructs, the order in which different constructs must appear, and nested structures to any depth, and even imply operator precedence and operator associativity. BNF; benzer yapıların listelerini, farklı yapıların hangi sırada bulunması gerektiğini, herhangi bir derinliğe kadar iç-içe yapıları ve hatta işleç önceliği ile işleç birleşmeliliğini tanımlayabilir. Example >> describing lists (Örnek >> listeleri tanımlama) Grammars and derivations (Gramerler ve türetmeler) Grammar >> generative device for defining languages Gramer >> dilleri tanımlamak için üretici araç Start symbol >> special nonterminal of the grammar Başlangıç simgesi >> gramerin özel bir dalllanma simgesi Example (Örnek): In a grammar for a complete programming language, the start symbol represents a complete program and is usually named <program>. Tam bir programlama dilinde, genellikle <program> adı verilen başlangıç simgesi tam bir programı gösterir (ifade eder).

6 Derivation >> a sequence of rule applications Türetme >> art arda kuralların uygulanması Example grammar for a small language and example derivation (Küçük bir dil için örnek gramer ve örnek türetme): sentential form >> each string in the derivation (including <program>) cümlesel biçim >> türetmedeki her dizgi (<program> dahil) leftmost derivation >> always choose the nonterminal on the LHS of sentential forms en soldan türetme >> hep cümlesel biçimlerin en solundaki (LHS) dallanmayı seçin rightmost derivation >> always choose the nonterminal on the RHS of sentential forms en sağdan türetme >> hep cümlesel biçimlerin en sağındaki (RHS) dallanmayı seçin Derivation order has no effect on the language generated by a grammar. Türetme sırası, bir gramer tarafından üretilen dilde etkiye sahip değildir. (Dil aynı dildir)

7 Example (Örnek): # A grammar for simple assignment statements (Basit atama deyimleri için bir gramer) Derivation of A = B * (A + C) Parse trees (ayrışma ağaçları) Parse tree >> hierarchical syntactic structure of the sentences of the languages described by a grammar Ayrışma ağacı >> Bir gramer tarafından tanımlanan dile ait cümlelerin sıradüzensel sözdizim yapısı

8 Ambiguity (belirsizlik) Ambiguous grammar >> a grammar for which there are two or more distinct parse trees for a given sentential form Belirsiz gramer >> Verilen bir cümlesel biçim için, birden daha çok farklı ayrışma ağacı bulunan gramer Example (örnek): % Consider the following sentence (Aşağıdaki cümleyi değerlendirin): A = B + C * A Syntactic ambiguity is a problem because compilers base the semantics of the sentences on their syntactic form. Sözdizimsel belirsizlik bir sorundur, çünkü derleyiciler cümleleri anlamlandırma işini onların sözdizimsel biçimine dayalı olarak yaparlar. There is no mathematical way to determine whether an arbitrary grammar is ambiguous. Verilen herhangi bir gramerin belirsiz olduğunu belirleyebilmenin matematiksel bir yolu yoktur.

Simple rules to determine ambiguity of a grammar (Bir gramerin belirsizliğini anlamak için basit kurallar) 9 1. If the grammar generates a sentence with more than one leftmost derivation Eğer gramer bir cümleyi birden fazla en soldan türetmeyle oluşturabiliyorsa 2. If the grammar generates a sentence with more than one rightmost derivation Eğer gramer bir cümleyi birden fazla en sağdan türetmeyle oluşturabiliyorsa Some parsing algorithms may be based on ambiguous grammars. Bazı ayrıştırma algoritmaları belirsiz gramerler üzerine oluşturulmuş olabilir. The designer provides nongrammatical information to construct the correct parse tree, in the cases when an ambiguous construct is encountered. Ayrıştırıcı belirsiz bir yapıyla karşılaşınca, tasarımcı doğru ayrışma ağacını oluşturmak için gramere bağlı olmayan bilgi sağlar. In many cases, an ambiguous grammar can be written to be unambiguous but still generate the same language. Çoğu zaman, belirsiz bir gramer belirli bir gramere dönüştürülebilir ve bu durumda da aynı dili üretebilir. Operator precedence (işleç önceliği) An operator in an arithmetic expression is generated lower in the parse tree (and therefore must be evaluated first) can be used to indicate that it has precedence over an operator produced higher up in the tree. Bir aritmetik ifadedeki işlecin ayrışma ağacında daha aşağıda üretilmesi (yani, ilk olarak koşulup değerinin bulunması gereği), ağaçta daha yukarıda üretilen başka bir işlece göre önceliğinin bulunduğunu gösterir. Example (örnek): The first and second parse trees of Example % indicate conflicting operator precedence information. Örnek % in birinci ve ikinci ayrışma ağaçları çelişen işleç önceliğine işaret ediyor. Example (örnek): The grammar of Example # is not ambiguous but oprator precedence is not the usual one. Örnek # nin grameri belirsiz değil ama işleç önceliği olması gereken gibi değil.

10 Example of a grammar both unambiguous and with correct operator precedence (Hem belirli hem de doğru işleç önceliğini gözeten bir gramer örneği) & This grammar generates the same language as those with Example * and Example #, but it is both unambiguous and dictates correct operator precedence. Yukarıdaki gramer Örnek % ve Örnek # aynı dili üretmektedir. Üstelik, hem belirli bir gramerdir, hem de doğru işleç önceliğini gözetmektedir. Consider the derivation of (Aşağıdaki cümlenin türetilmesine bakalım) A = B + C * A Leftmost (en soldan) Rightmost (en sağdan) No matter how you derive a sentence using an unambiguous grammar, you obtain a unique parse tree. Belirli bir gramer kullanarak bir cümleyi nasıl türetirseniz türetin, tek bir ayrışma ağacı elde edilir.

Unique parse tree of Example & (Örnek & a ait tek ayrışma ağacı) 11 Associativity of operators (işleçlerin birleşmeliliği) Operators with the same precedence (aynı önceliğe sahip işleçler) Which operation must be done first? (Hangi işlem önce yapılmalı?) This property is called associativity (Bu özelliğe birleşmelilik denir.) Ex(ör): A / B * C >> Does / or * have precedence? (/ ve * hangisi öncelikli?) Example (örnek): A = B + C + A The parse tree as defined by the grammar of Example & is the following: Örnek & ın grameriyle tanımlanan ayrışma ağacı aşağıdadır:

12 Left recursion and Right recursion (Sol özyineleme ve Sağ özyineleme) L L R R Left recursion implies left associativity, Right recursion implies right associativity Sol özyineleme sol birleşmeliliği, Sağ özyineleme sağ birleşmeliliği gösterir. Example of a right associative exponentiation operator (Sağ birleşmeli bir üs alma işleci örneği) A ** B = A B >> üs alma (exponentiation) A ** B ** C = A ** (B ** C) >> sağ birleşmeli (right associative) 2 ** 3 ** 2 = 2 ** 9 = 512 >> (Doğru) 2 ** 3 ** 2 = 8 * 2 = 64 >> (Yanlış) The following grammar is for a right associative exponentiation operation. Aşağıdaki gramer sağ birleşmeli üs alma işlemi içindir.

13 An unambiguous grammar for if then-else statements (if then-else deyimleri için belirli bir gramer) Example (örnek): The problem of matching then and else clauses then ve else cümleciklerinin eşleşme problemi Two distinct parse trees (iki farklı ayrışma ağacı)

14 Solution with an unambiguous grammar (belirli bir gramerle bulunan çözüm): The rule for if constructs in many languages is that an else clause, when present, is matched with the nearest previous unmatched then. Birçok dildeki if yapıları şöyle işler: Varolan bir else yan tümcesi önce gelen ve eşleştirilmemiş olan en yakın then ile eşleştirilir. No unmatched if sntence (an if without an else) takes place between a matched then and else pair. Eşleştiği bilinen bir then ve else çiftinin arasına eşleşmemiş bir if cümlesi (else i bulunmayan if) giremez.