background preloader

Programming Languages

Facebook Twitter

Classp by google. Welcome to Classp Parser generators are a great help in writing parsers, but they all have one major drawback--they are based on grammars.

Classp by google

So what's wrong with grammars? Well ... nothing as an expository tool. When you want to diagram a complex rule for deriving tree-like structures within a string of symbols, nothing beats a good old-fashioned grammar. But when you want to write a computer program to convert a string into the logical structure that it represents and then use that logical structure for further processing, then grammars are not ideal. There are a couple of problems with grammars as a computer parsing language. In addition to these general problems with grammars, there is a more specific problem that goes with the restricted sorts of grammars offered in most parser-generator systems. So how does Classp avoid these problems? Future Right now, Classp doesn't do much besides parsing and formatting, but it is intended to evolve into a general language processing system. Status.

Query Languages

DonnoDK/408f13-compiler · GitHub. Programming Language by Family. Welcome. Welcome!


This page was created in year 2000 and initially contains only one my article "How to create programming language and compiler" (written in year 1997). In year 2002 this article was fully rewritten and partially translated to english. It describe relatively simple demonstration compiler and more complex compiler of Context language. Demonstration compiler are obsolete now, in archive You may find very small self-compiler of Context subset. Some other articles (about program languages and common algorithms) available only in russian. Translation of syntax-driven parser article. Yet another simple compiler. Two bugs fixed in compiler Context 2.2 (indirect function call and element offset calculation in multidimensional array). Bug fixed in Linux-version of Context 2.0 (Incorrect file attributes assigned when assembler listing created).

In Linux FASM 1.66 or later must be used. Context 2.0 update. Update of compilers and processors tests. Some bugs fixed in Context for Windows: Vote. An Introduction to Programming by Contract · andresteingress/gcontracts Wiki. An Example Programming by Contract is known under the name of Design by Contract™ first implemented by Eiffel, a programming language introduced by Bertrand Meyer1.

An Introduction to Programming by Contract · andresteingress/gcontracts Wiki

The main principle of programming by contract is to actually add a program’s specification as expressions in the form of meta-data to certain elements in the source code. Let us take a look at the Rocket class below: import org.gcontracts.annotations.* @Invariant({ (started == true && speed > 0) || (started == false && speed == 0) })class Rocket { boolean started = false int speed = 0 @Requires({ !

Started }) @Ensures({ started && speed > 0 }) def start() { speed += 10 started = true } @Requires({ started }) @Ensures({ old -> speed - old.speed > 0 }) def accelerate() { speed += 10 }} Note that the code above is valid Groovy code. All annotations have in common that they make use of so-called closure annotations – special annotations which allow Groovy closures as attributes. Programming languages. Higher Logics: On the Importance of Purity. The benefits of advanced programmings languages are sometimes difficult to grasp for everyday programmers.

Higher Logics: On the Importance of Purity

The features of such languages and how they relate to industrial software development are sometimes hard to understand, especially since the arguments are couched in terms such as "referential transparency", "totality", "side-effect-free", "monads", "non-determinism", "strong static typing", "algebraic data types", "higher-order functions", "laziness/call-by-need", and so on. Many of these features are attributed to "pure" languages, but purity is also a nebulous concept. I will explain the importance of a number of these features and how they impact the everyday programmer's life.

The Benefits of Referential Transparency Referential transparency (RT) is a simple principle with profound consequences. This may not sound very significant, but permitting functions which are notRT is literally a nightmare for software developers. The Benefits of Determinism. Functional Programming For The Rest of Us. Openvmtil - openVm : Tookit for Implementing (and exploring) Languages - a bottom-up vm that is an extensible scripting language. Lastest downloads at An Exploration of Language Theory - and its Machine Implementation Imagine a low level, optimizing, virtual machine (like llvm) that is an extensible scripting language and that is small enough to be easily verified, where even the runtime is reconfigurable - minimize that.

openvmtil - openVm : Tookit for Implementing (and exploring) Languages - a bottom-up vm that is an extensible scripting language

Current focus (to do) : minimal bootstrap, self-hosting, patterns/sets, logic, tail call, type checking, gui The Turing Machine, the Lambda Calculus and Type/Category Theory are the theoretical foundations. MELT Home - Minnesota Extensible Language Tools. Programming languages study.

Programming Language Lists

M-Z. A-L. .bodycard 1546.