Posts

Showing posts from December, 2011

Kotlin Language Features Related to Null Handling

Any software engineer with a Java background would find the null handling features in the Kotlin language interesting. Let's summarize this topic with some examples. Nullable types: In Kotlin, types are non-nullable by default. If you want a variable to be able to hold a null value, you need to explicitly declare its type as nullable using the Type? syntax. For example, String? denotes a nullable string, while String represents a non-nullable string. Safe calls (?.): Kotlin introduces the safe call operator (?.) for handling nullable types. It allows you to safely invoke a method or access a property on a nullable object. If the object is null, the expression returns null instead of throwing a NullPointerException. Example: data class Person(val name: String, val age: Int, val address: String?) fun main() {     // Create a person with a nullable address     val person1 = Person("John Doe", 25, "123 Main Street")     val person2 = Person("Jane Doe", 30,

ANTLR ile Lexer Generation

Java platformunda bir lexer oluşturmak istediğimizde elimizdeki seçenekler JavaCC, SableCC ve ANTLR olarak karşımıza çıkıyor. ANTLR ile elimizdeki dil için bir lexer oluşturmaya çalışalım. Lexer için kullanacağımız dilin token kuralları: Identifier: Harf ile başlar. Harf, rakam ve alt çizgilerden oluşan stringdir. Büyük haft – küçük harf farklı olarak değerlendirilir. Integer constant: Rakamlardan oluşan string. Binary operator: Aşağıdakilerden biri: + - * / && Yorum: İki türlü yorum olabilir: Blok tipi yorum: /* */ Satır tipi yorum: // ANTLR kurulumu için yapılması gerekenler: Antlrworks'ü indir ve üzerine tıkla. En sevdiğin kafeinli içecek de dahil olmak üzere bilgilerini göndermeyi kabul et. ;) Yeni gramer dökümanı mı oluşturmak istiyorsun? Evet Grammar name: MyLexer Type: Lexer Lexical items: Identifier, Integer, Comments (single line + multiline), Whitespace Oluşturacağımız lexer için belirlenen kuralları ana pencerede görüyoruz: ID : ('a'..'z

"REGULAR EXPRESSIONS" KONUSUNU TAM OLARAK VE KOLAYCA ANLAMAK

Herhangi bir dilde yazılmış bilgisayar programının derlenebilmesi veya yorumlanabilmesi için öncelikle "lexical analysis" denilen aşamadan geçmesi gerekiyor. Bu aşamada program kelimelere veya "token" denilen yapıtaşlarına ayrılıyor. Programlama dilinin sentaksı, tokenlerin türleri hakkında bilgi verir. Örneğin birçok dilde yer alan bazı token türleri: ID Örnek: price calculateRate lastItem NUM Örnek: 73 0 REAL Örnek: 12.5 0.23 COMMA , IF if Bir lexical analyser (lexer) yazabilmek için herhangi bir programlama dili kullanılabilir. Fakat özellikle "regular expressions" dili bu iş için kullanıma uygun. Regular Expressions Dil (language), bir string kümesi olarak tanımlansın. Örneğin Java dili, legal java programı oluşturabilecek tüm string lerin kümesidir. Bu durumda Java dili sonsuz elemana sahip bir küme. Peki bir dili (belki sonsuz elemana sahip), nasıl sonlu ifadelerle (açıklamalarla) tanımlayabiliriz? İşte burad

nijhof2axon

Axon framework kullanıcılarına katkıda bulunmak amacıyla paylaştığım proje ile ilgili yorum ve sorular gelmeye başladı. http://code.google.com/p/nijhof2axon/ >>You share the Data between the Domain and the Query Model? When a command is dispatched, a CommandHandler uses the aggregate root to handle the command. Aggregate root fires DomainEvents. => Query layer related code listens to domain events and updates the query model. (Example: ClientTableUpdater) Domain entities are first class objects but Query Model classes are just DTOs with getters and setters. We have Client as entity and ClientDetailsEntry as DTO. >>The (generated?) table domainevententry looks like you can not replay events? missing the event data? To observe how events are replayed by the framework, you can follow these steps: Click on sample client change name stop server start server put a breakpoint to EventSourcingRepository.doLoad() method put a breakpoint to Client.handleClientNameChangedEvent() me

Popular posts from this blog

Trie Data Structure and Finding Patterns in a Collection of Words

swapLexOrder: Finding lexicographically largest string

A Graph Application in Java: Using WordNet to Find Outcast Words