PLDB
Languages Features Calendar CSV Lists Blog About Sponsor Add Language
GitHub icon

Xtend

Xtend

Xtend is a pl created in 2011 by Sven Efftinge and Sebastian Zarnekow.

#448on PLDB 11Years Old 321Users
3Books 0Papers 1kRepos

Xtend is a general-purpose high-level programming language for the Java Virtual Machine. Syntactically and semantically Xtend has its roots in the Java programming language but focuses on a more concise syntax and some additional functionality such as type inference, extension methods, and operator overloading. Being primarily an object-oriented language, it also integrates features known from functional programming, e.g. Read more on Wikipedia...


Example from Linguist:
/******************************************************************************* * Copyright (c) 2012 itemis AG (http://www.itemis.eu) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Author - Sven Efftinge *******************************************************************************/ package example6 import org.junit.Test import static org.junit.Assert.* import java.io.FileReader import java.util.Set import static extension com.google.common.io.CharStreams.* class Movies { /** * @return the total number of action movies */ @Test def void numberOfActionMovies() { assertEquals(828, movies.filter[categories.contains('Action')].size) } /** * @return the year the best rated movie of 80ies (1980-1989) was released. */ @Test def void yearOfBestMovieFrom80ies() { assertEquals(1989, movies.filter[(1980..1989).contains(year)].sortBy[rating].last.year) } /** * @return the sum of the number of votes of the two top rated movies. */ @Test def void sumOfVotesOfTop2() { val long movies = movies.sortBy[-rating].take(2).map[numberOfVotes].reduce[a, b| a + b] assertEquals(47_229, movies) } val movies = new FileReader('data.csv').readLines.map[ line | val segments = line.split(' ').iterator return new Movie( segments.next, Integer::parseInt(segments.next), Double::parseDouble(segments.next), Long::parseLong(segments.next), segments.toSet ) ] } @Data class Movie { String title int year double rating long numberOfVotes Set<String> categories }
Example from Wikipedia:
def sayHello(String name) ''' Hello «name» ! '''

Language features

Feature Supported Example Token
Integers
Floats
Hexadecimals
Comments
/* A comment
*/
MultiLine Comments
/* A comment
*/
/* */
Static Typing
Semantic Indentation ϴ

Books about Xtend from ISBNdb

title authors year publisher
Implementing Domain-Specific Languages with Xtext and Xtend Bettini, Lorenzo 2013 Packt Publishing
Implementing Domain-Specific Languages with Xtext and Xtend Bettini, Lorenzo 2013 Packt Publishing
Implementing Domain-Specific Languages with Xtext and Xtend Lorenzo Bettini 31-08-2016 Packt Publishing
geojson.html · xtend.html · ec.html

View source

PLDB - Build the next great programming language · v2022 · Day 33 · Docs · Build · Acknowledgements · Traffic Today · Traffic Trends · Mirrors · GitHub · feedback@pldb.com