Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c++ da,design pattern ile ilgili ödev hakkında yardım lazım


freemaniacss

Öne çıkan mesajlar

1. In this homework you are asked to model a compiler using one or more design patterns. For simplicity purposes
our compiler will consist of three phases:
a) Scanner,
b) Parser,
c) Code generator
A scanner converts a sequence of characters in a program into tokens. A parser processes the tokens generated
by the scanner and determines if the input text is syntactically correct. The output of a parser is usually a parse
tree. The code generator typically receives a parse tree as input converts it into machine code that can be
readily executed by a computer. A C++ compiler consists of C++ scanner, C++ parser and C++ code generator
and a FORTRAN compiler consists of FORTRAN scanner, FORTRAN parser and FORTRAN code generator. Note
that a compiler cannot have a mix of parser and scanners from different languages. You will be implementing a
compiler generator (Compiler-compiler i.e. CC). You will have three CCs for different languages. One
requirement is that you are going to have only one compiler generator for each language. Fortran CC can
generate several FORTRAN compilers. However, Fortran CC itself will be unique.
2. Create a simple parse tree using Composite pattern for the expression
“slope * x + intercept” where its parse tree is given below. The output of your scanner will be a
composite object corresponding to the parse tree.

arkadaşlar benim şöyle bir ödevim var ve hiçbirşey anlamadım bu ödevden.anladığım kadarıyla benden 3 farklı dil için,kurallarını uygulamasamda 3 farklı class olarak tasarlayıp,aynı kuralları kabul etmesini sağlayacağım.Kodun scanner kısmında girilen inputu ıvır zıvır karakterleri atarak,mantıklı kod olarak geri döndürecek,bu döndürdüğü kod kısmını parser kısmına ileticek,parser kısmında bu ayıklanan kodu parse edip,elde ettiğimiz parent child ilişkisi ile,code generator kısmına iletip programı bitiricez.
iyi güzel hoş ta nasıl olacak bu? İki tane pattern düşündüm,factory design pattern ve composite design pattern,bana biraz şu ödevi anlatabilirmisiniz acaba?
c++ ödevi bu arada
Link to comment
Sosyal ağlarda paylaş

Odev guzelmis, Code generator + compiler yazacaksin. Acik olmayacan kisim generate edecegin code icin yazacagin input markup bir seyler mi olacak, xml mi vereceksin adama generate etmesi ve ardindan compile etmesi icin? Pure text mi vereceksin vs vs.

Cok zor bir durum yok. Scanner dedigi adam atiyorum xml olarak verdigin stream i yorumlayip code generate edecek ardindan bunu yine runtime da yada ayri bir step de compile edecek adama verecek.

Burde scanner denen adamin belli limitleri olmak zorunda, verecegin xml veyahut text in icerecegi syntax in belli sinirlari olmak zorunda. Bunlari belirle, kafandan bir yapi uydur. A isini yapsin sonra A isine gore B isini yapsin ardindan C veyahut D isleri de xml de tanimlanmis ise bunlarida conditional olarak yapsin. Zor kisim burasi, gerisi runtime da compile vs. native method callarindan ibaret.

P.S: Tamamen yanlis anlamisda olabirim odevini orasi ayri.
Link to comment
Sosyal ağlarda paylaş

Gladmir said:

Odev guzelmis, Code generator + compiler yazacaksin.


Design pattern dersinde compiler yazdırmazlar. Temsili olarak model kuracaksın, klasik oop konseptlerini kullandırtmaya çalışmışlar işte inheritance, abstract class, composition vs. + design patternlar. örn: compiler diye bir abstract class'ın olur ondan c++ compiler fortran compiler sınıflarını vs. inherit edersin. compilerın içinde parser scanner code generator classlarının birer instance'ı yaratılır, bunlar dışarıya açık olmaz. sadece compiler'ın sunduğu fonksiyonları kullandırtırsın dışarıya, buna da façade diyorlar falan. Ayrıntısını okumadım vaktim yok ama ilk anda aklıma gelenler böyle.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...