Tokenlarin Taninmasi

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

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İ

Syntax Analysis. 4/5/2004 Formal Diller 4.1

Formal Diller Ve Otomat Teorisi

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

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

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

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

Bölüm 4. Sözcük ve Sentaks Çözümlemesi ( Analizi) ISBN

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

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

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

DERLEYİCİ TASARIMI ÖDEV-2 RAPORU

Gramer Tabanlı Değerlendirme Yöntemleri

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Açık Kaynak Kodlu Optik Sınav Kağıtları Depolama Sistemi

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İ

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

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

Stack Islemleri. Postfix ve Infix notasyonlari. Stack ozellikleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Hafta 12 Karakter Tutan Diziler

C Konsol Giriş Çıkış Fonksiyonları

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

FINITE AUTOMATA. Recognizer. Finite Automata (FA)

Otomata Teorisi (BİL 2114)

Dr. Fatih AY Tel: fatihay@fatihay.net

Temel Giriş/Çıkış Fonksiyonları

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

SQLMap ile CSRF Bypass İbrahim BALİÇ

Matematiksel Operatörler

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

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Nesne Tabanlı Programlama

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

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

Nesne Tabanlı Programlama

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

C Programlama printf() Fonksiyonu

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Kocaeli Üniversitesi Bilgisayar Mühendisliği Programlama 2 Dersi Final Sınavı. A Grubu

Fonksiyonlar (Altprogram)

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

C Programlama Dilininin Basit Yapıları

BİLG Dr. Mustafa T. Babagil 1

Diziler (Arrays) Çok Boyutlu Diziler

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Giriş. ENF102 Jeoloji

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

Length: metin uzunluğunu yada diğer bir deyişle dizi elaman sayısını döndürür.

Eln 1001 Bilgisayar Programlama I

Sunum İçeriği. Programlamaya Giriş

C++ Operatörler (Operators)

C++ Dersi: Nesne Tabanlı Programlama

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

C++ Dersi: Nesne Tabanlı Programlama

#include <stdio.h> int main(void) { FILE * dosya; dosya = fopen("soru1.txt", "w"); fprintf(dosya, "Merhaba Dunya!"); fclose(dosya); return 0; }

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Yrd. Doç. Dr. Caner ÖZCAN

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Koşullu Önermeler (if else)

BM312 Ders Notları

OTOMATİK KONTROL SİSTEMLERİ TEMEL KAVRAMLAR VE TANIMLAR

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

C derleyicisinin içeriği

Ders 4: Temel Giriş/Çıkış Fonksiyonları

Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Derleyici Kuramı (Compiler Theory)

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri

#ifndef COMPLEX_H #define COMPLEX_H

Bigisayar Programlama

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

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

İnternet Programcılığı Dersi 2.Dönem Ders Notu

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

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

Algoritma ve Programlamaya Giriş

7.1- Operatörler ve Giriş-Çıkış İşlemleri. M.İLKUÇAR - 1

Sınav tarihi : Süre : 60 dak.

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

Nesne Yönelimli Programlama

BİL-142 Bilgisayar Programlama II

HSancak Nesne Tabanlı Programlama I Ders Notları

BLG 1306 Temel Bilgisayar Programlama

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

ALGORİTMA VE PROGRAMLAMA I

Daha önce bu işlemin iki tane dosya oluşturduğunu gördük. GecDenTest.aspx dosyasının source kısmında içeriğini inceleyecek olursanız en başta

Strings(Karakter Dizisi)

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Transkript:

Tokenlarin Taninmasi stmt t if expr then stmt if expr then stmt else stmt expr t term relop term term term t id num if, then, else, relop, id, ve num terminal (token), stmt, expr, term nonterminal olarak adlandirilirlar. 4/5/2004 Formal Diller 2.1

Tokenlarin Taninmasi if t if then t then else t else relop t < <= = <> > >= id t letter ( letter digit ) * num t digit + (. digit + )?( E ( + - )? digit + )? letter t A B Z a b z digit t 0 1 9 4/5/2004 Formal Diller 2.2

Tokenlarin Taninmasi lexical analyzer keywords if, then, else lexemes relop, id, number lexemes white spacelerle (blanks, tab, newline) birbirlerinden ayrilirlar delim t blank tab newline ws t delim + 4/5/2004 Formal Diller 2.3

Tokenlarin RE patternleri RE ws if then else id num < <= = <> > >= Token - if then else id num relop relop relop relop relop relop Attribute-Value - - - - pointer to table entry Pointer to table entry LT LE EQ NE GT GE 4/5/2004 Formal Diller 2.4

Parser bir sonraki bir sonraki tokenu elde etmek icin lexical analyzeri cagirir. Lexical analyzer program icerisindeki tokenlari (lexema ve keywordleri) taniyip bunlarin (token, attribute-value) ciftini parsera geri dondurur. 4/5/2004 Formal Diller 2.5

Transition Diyagramlari Transition diyagramlari lexical analyzerin tokenlari bulmasi esnasinda olusan aksinlari gosterir. start > = 0 6 7 other >= icin Transition Diyagrami 8 * 4/5/2004 Formal Diller 2.6

Transition Diyagrams start < = 0 1 2 return(relop,le) = > 5 return(relop,eq) = > other 6 7 3 4 * return(relop,ne) return(relop,lt) return(relop,ge) other 8 * return(relop,gt) Relational Operatorler (relop) icin transition diyagrami 4/5/2004 Formal Diller 2.7

Identifier ve keywordlar icin transition diyagrami letter veya digit start letter other 9 10 11 * return(gettoken( ),install_id( )) 4/5/2004 Formal Diller 2.8

-Symbol Table: Lexical Analyzer tespit ettigi identifierlari, ve bunlarla ilgili bilgileri yerlestirdigi tabloya denir. -Keywordlari identifierlerden ayirmanin etkin bir yolu, baslangicta keywordlari symbol table a yerlestirmektir. Daha sonra ismi bir keywordla ayni olan identifier bulunursa lexical analyzer hata bilgisini Parsera dondurur. -gettoken( ): token i elde etmek icin Eger lexema keyword ise, keywordun kendisi geri dondurulur, aksi durumda tokenin id si geri dondurulur. -install_id( ): attribute-value yu elde etmek icin Symbol Table a bakilir. Eger bulunan lexema bir keywordse parsera 0 degeri dondurulur. Aksi takdirde lexema bulunur (program degiskeni) ve bu degisken Symbol Table a yerlestirilir ve yerlestirildigi alana ait pointer parsera geri dondurulur. 4/5/2004 Formal Diller 2.9

digit digit digit start digit. digit E +/- digit 12 13 14 15 16 17 other 18 19 * digit E digit digit start 20 digit. digit other 21 22 23 24 * digit start 25 digit 26 other 27 * num t digit + (. digit + )?( E ( + - )? digit + ) 4/5/2004 Formal Diller 2.10

delim start delim other 28 29 30 * delim t blank tab newline ws t delim + 4/5/2004 Formal Diller 2.11

Otamatik Lexical Analyzer Uretimi Gunumuzde derleyici tasariminda Lexical Analyzerlarin uretimi otomatik olarak yapilmaktadir. Zaman ve is gucu tasarrufu Derleyici tasarimini kolaylastirir Lex (Lexical Analyzer Generator) Lexical tanimlardan (RE) C programi uretir. Her bir token tipi icin, bir RE ve action tanimlanir Uretilen C programi tokenlari temsil eden Deterministic Fine Automata (DFA) simule eder ve tanidigi her token icin bu tokenun action ini yerine getirir. 4/5/2004 Formal Diller 2.12

Lex source program lex.l Lex Compiler lex.yy.c lex.yy.c C compiler a.out input a.out tokenlar dizisi 4/5/2004 Formal Diller 2.13

%{ /* C Declarations */ #include tokens.h /* definitions of IF, ID, NUM, */ #include errormsg.h union {int ival; string sval; double fval;} yyval; Int charpos=1; #define ADJ (EM_tokPos=charPos, charpos+=yyleng) %} /* Lex Definitions */ digits [0-9]+ %% 4/5/2004 Formal Diller 2.14

/* Regular Expressions and Actions */ if {ADJ; return IF;} [a-z][a-z0-9]* {ADJ; yylval.sval=string(yytext); return ID; } {digits} {ADJ; yylval.ival=atoi(yytext); return NUM; } ({digits}. [0-9]*) ([0-9]*. {digits}) {ADJ; yylval.fval=atof(yytext); return REAL; } 4/5/2004 Formal Diller 2.15

4/5/2004 Formal Diller 2.16