Skip to content

MehmetBegun/Assignment-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Calculator Interpreter using Lex and Yacc

Genel Bakış

Bu proje, Lex ve Yacc kullanılarak geliştirilmiş basit bir hesap makinesi yorumlayıcısıdır. Projede:

  • Temel aritmetik işlemler (toplama, çıkarma, çarpma, bölme),
  • Parantez kullanımı,
  • Değişken atamaları,
  • Hata kontrolü,
  • Bonus özellikler: Kayan nokta (floating-point) desteği ve üs alma (exponentiation) operatörleri (^ veya **) desteklenmektedir.

Tasarım Kararları

  • Lex & Yacc Kullanımı:

    • Lex (calculator.l): Girdileri tokenize eder; sayılar (tam sayı ve ondalık), değişkenler, operatörler ve parantezleri tanımlar.
    • Yacc (calculator.y): Gramer kurallarını ve semantik eylemleri tanımlar; ifadelerin doğru parse edilmesi ve hesaplanması sağlanır.
  • Operatör Önceliği ve Bağlayıcılık:
    Operatör öncelikleri şu şekilde belirlenmiştir:

    • + ve -: En düşük öncelik.
    • * ve /: Orta öncelik.
    • EXP (üs alma): En yüksek öncelik ve sağ birleşken (%right EXP).
  • Sembol Tablosu ve Değişkenler:
    Basit bir sembol tablosu kullanılarak değişkenlerin değerleri saklanır. Tanımlanmamış değişken kullanıldığında hata mesajı verilir.

  • Hata Yönetimi:
    Eksik operand, sıfıra bölme veya geçersiz ifadeler yakalanarak kullanıcıya uygun hata mesajları sunulur.

Dosya Yapısı

  • calculator.l:
    Lex spesifikasyon dosyası; sayılar, değişkenler, operatörler ve parantezler için token kuralları içerir.

  • calculator.y:
    Yacc spesifikasyon dosyası; gramer kuralları ve semantik eylemler (hesaplama, değişken ataması, hata kontrolü) tanımlanır.

  • README.md:
    Bu dosya; projenin genel açıklamasını, tasarım kararlarını, derleme ve çalıştırma adımlarını, test senaryolarını ve ek bilgileri içerir.

Derleme ve Çalıştırma Adımları

Aşağıdaki komutları sırasıyla kullanarak projeyi derleyip çalıştırabilirsiniz.

lex calculator.l yacc -d calculator.y gcc lex.yy.c y.tab.c -lfl -lm -o calculator ./calculator Mehmet Begun 231104084

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published