background preloader

ANTLR

ANTLR

Best Java IDE to do more high-quality code in less time Java 8 & Java EE 7 Support Straightforward User Interface Editor New Features New Tools for Android Developers Refined Gradle Integration New Tools for Database Access IntelliJ IDEA 13.1, the Java IDE with the fastest-growing mindshare, includes support for Java 8 and Java EE 7, new tools for Android development, the editor enhancements, and refined Gradle integration. IntelliJ IDEA 13 adopts Java 8 and Java EE 7, the latest versions of Oracle's Java language and enterprise platform, along with support for new versions of enterprise application servers. The new editor comes with Sublime Text style multiple selections and also introduces Postfix code completion, a new kind of completion for Java which extends your productivity even more. IntelliJ IDEA 13.1, the Java IDE with the fastest-growing mindshare, includes enhanced support for Java EE 7, better Spring support, new tools for Android development and refined Gradle integration.

JCilk -- Java based Cilk Home Page We are currently developing JCilk, a Java-based multithreaded programming language. JCilk extends the Java language to provide call-return semantics for multithreading, much as Cilk does for C. Java's built-in thread model does not support the passing of exceptions or return values from one thread back to the "parent" thread that created it. JCilk imports Cilk's fork-join primitives spawn and sync into Java to provide procedure-call semantics for concurrent subcomputations. JCilk is unique in that it supports an exception-handling mechanism that handles concurrency in spawned methods, using semantics that are consistent with the existing semantics of Java's try and catch constructs. We have developed a working version of the JCilk system, including both the compiler and the runtime system.

8 Useful and Interesting Bash Prompts Many people don’t think of their command prompt as a particularly useful thing, or even pay it much attention. To me, this is a bit of a shame, as a useful prompt can change the way you use the command line. Well I’ve scoured the Interwebs looking for the best, most useful, or sometimes most amusing bash prompts. Here, in no particular order, are the ones I’d be most likely to use on my computers. Note – to use any of these prompts, you can copy & paste the “PS1=” line directly into your terminal. 1. This prompt is probably the most amusing one on the list, but remains useful. Example: Code: 2.Change color on bad command Here’s one of my favorites. 3. If you’re the type who wants to pack your prompt full of information, then here’s the one for you. 4. There’s nothing particularly fancy about this prompt, other than the good use of color to separate the different pieces of information. 5. This one’s a nice, clean, minimal 2-line prompt (plus a blank line at the top). Code: 6. 7. 8.

K Tutorial - K Framework Here you will learn how to use the K tool to define languages by means of a series of screencast movies. It is recommended to do these in the indicated order, because K features already discussed in a previous language definition will likely not be rediscussed in latter definitions. The screencasts follow quite closely the structure of the files under the tutorial folder in the K tool distribution. If you'd rather follow the instructions there and do the tutorial exercises yourself, then go back to and download the K tool, if you have not done it already. K Overview Make sure you watch the K overview video before you do the K tutorial: [9'59"] K Overview Learning K [34'46"] Part 1: Defining LAMBDA Here you will learn how to define a very simple functional language in K and the basics of how to use the K tool. [04'07"] Lesson 1, LAMBDA: Syntax Modules and Basic K Commands [04'03"] Lesson 2, LAMBDA: Module Importing, Rules, Variables Poster (uncommented) Poster (commented)

Efficient and Insightful Generalization This section continues the exposition of the ideas behind Rémy's algorithm. Now that we have seen how the unsound generalization relates to the releasing of memory still in use, we apply the standard fix for premature deallocation -- ownership tracking, or regions -- and cure the unsound generalization without much overhead. We develop two algorithms. Clearly, before deallocating memory we must check if it is still in use. More promising is ownership tracking, associating an allocated resource with an owner, an object or a function activation. These intuitions underlie the sound and efficient generalization algorithms. type level = int let current_level = ref 1 let enter_level () = incr current_level let leave_level () = decr current_level The type inferencer maintains the let type-checking depth: The only change to the main type-inference function was adding enter_level and leave_level to track the level. Free type variables now carry the level identifying their owner.

Konsider the K-Framework - Garbage Collective Firing Range - Quora From the inimitable Grigore Rosu (K and Matching Logic): Would you like to wake up some morning, have a coffee, then design a non-trivial programming language, say with multidimensional arrays and array references, with functions and references to them, with blocks and local declarations, with input/output, with exceptions, with nondeterminism and concurrency with synchronization, and so on, and by evening to have a reasonably efficient interpreter, a state-space search tool and a model checker, as well as a deductive program verifier for your language, all correct-by-construction? Then you may be interested in K and Matching Logic... I'm not going to spend much time justifying language semantics or K in particular; suffice it to say that if you have a language, it is useful to have a semantics beyond "uh, that's how my interpreter works". So, K. file. Now that the rambly bit is done, I can start in on specifics. K wants you to learn the K way. So, bit by bit: What's syntax? . cell. .

LaTeX:Symbols From AoPSWiki This article will provide a short list of commonly used LaTeX symbols. Operators Relations Negations of many of these relations can be formed by just putting \not before the symbol, or by slipping an n between the \ and the word. To use other relations not listed here, such as =, >, and <, in LaTeX, you may just use the symbols on your keyboard. Greek Letters Headline text Arrows (For those of you who hate typing long strings of letters, \iff and \implies can be used in place of \Longleftrightarrow and \Longrightarrow respectively.) Dots (The '2's after \ldots and \cdots are only present to make the distinction between the two clear.) Accents When applying accents to i and j, you can use \imath and \jmath to keep the dots from interfering with the accents: \tilde and \hat have wide versions that allow you to accent an expression: Others Command Symbols Some symbols are used in commands so they need to be treated in a special way. (Warning: Using \$ for will result in . Bracketing Symbols

Fold In functional programming, fold (or reduce) is a family of higher order functions that process a data structure in some order and build a return value. This is as opposed to the family of unfold functions which take a starting value and apply it to a function to generate a data structure. 1 Overview fold (+) [1,2,3,4,5] which would result in 1 + 2 + 3 + 4 + 5, which is 15. However, in the general case, functions of two parameters are not associative, so the order in which one carries out the combination of the elements matters. -- if the list is empty, the result is the initial value z; else-- apply f to the first element and the result of folding the restfoldr f z [] = z foldr f z (x:xs) = f x (foldr f z xs) -- if the list is empty, the result is the initial value; else-- we recurse immediately, making the new initial value the result-- of combining the old initial value with the first element.foldl f z [] = z foldl f z (x:xs) = foldl f (f z x) xs 2 Special folds for nonempty lists

Related: