main:( and a matching ) at the end. These are not actually required in the language, but are included so as to highlight that the code sample is complete, and works with (at least) [[ALGOL 68G]] unmodified.
+
+On some compilers, it may be necessary to include appropriate "job cards"
+or precludes in order for the programs to compile successfully. Hopefully
+not too much else is required. Examples:
+{|border="1" style="border-collapse: collapse; border: 5px double grey;" align="center"
+|| Brief Algol68
+|| Algol68 as in rosettacode
+|| Actual ELLA Algol 68RS code
+|-
+||
+ print(("Hello, world!",new line))
+||
+ main:(
+ print(("Hello, world!",new line))
+ )
+||
+ PROGRAM helloworld CONTEXT VOID
+ USE standard
+ BEGIN
+ print(("Hello, world!", new line))
+ END
+ FINISH
+|}
+===Example of different program representations===
+At the time when ALGOL 68 was defined some predominant computers had
+36 bit words, and 6 bit character sets. Hence it was desirable that
+ALGOL 68 should be able to run on machines with only uppercase. Hence
+the official spec provided for different representations of the same
+program. Example:
+{|border="1" style="border-collapse: collapse; border: 5px double grey;" align="center"
+|| Algol68 as typically published
+ ¢ bold/underline typeface ¢
+ '''mode''' '''xint''' = '''int''';
+ '''xint''' sum sq:=0;
+ '''for''' i '''while'''
+ sum sq≠70×70
+ '''do'''
+ sum sq+:=i↑2
+ '''od'''
+|| quote stropping (similar to wiki)
+ 'pr' quote 'pr'
+ 'mode' 'xint' = 'int';
+ 'xint' sum sq:=0;
+ 'for' i 'while'
+ sum sq≠70×70
+ 'do'
+ sum sq+:=i↑2
+ 'od'
+|| Code for a 7-bit/ascii compiler
+ .PR UPPER .PR
+ MODE XINT = INT;
+ XINT sum sq:=0;
+ FOR i WHILE
+ sum sq/=70*70
+ DO
+ sum sq+:=i**2
+ OD
+|| Code for a 6-bits/byte compiler
+ .PR POINT .PR
+ .MODE .XINT = .INT;
+ .XINT SUM SQ:=0;
+ .FOR I .WHILE
+ SUM SQ .NE 70*70
+ .DO
+ SUM SQ .PLUSAB I .UP 2
+ .OD
+|| Algol68 using RES stropping
+ .PR RES .PR
+ mode .xint = int;
+ .xint sum sq:=0;
+ for i while
+ sum sq≠70×70
+ do
+ sum sq+:=i↑2
+ od
+|}
+
+== Coercion (casting) ==
+ALGOL 68 has a hierarchy of contexts which determine which kind of
+coercions are available at a particular point in the program. These contexts are:
+* soft - deproceduring
+* weak - dereferencing or deproceduring, yielding a name
+* meek - dereferencing or deproceduring
+* firm - meek, followed by uniting
+* strong - firm, followed by widening, rowing or voiding
+
+Depending on the context a MODE (type) will be coerced (widened) to another type if there is no loss
+of precision. For example: An INT will be coerced to a REAL, and a REAL will be
+coerced to a LONG REAL. But not vice-versa. Examples:
+* INT to REAL
+* REAL to COMPL
+* BITS to []BOOL
+* BYTES to STRING
+A variable can also be coerced (rowed) to an array of length 1. For example:
+* INT to [1]INT
+* REAL to [1]REAL etc
+Pointers are followed (dereferenced), For example:
+* REF REF REAL to REAL
+== Code Specimen ==
+{{language programming paradigm|Concurrent}}
+{{language programming paradigm|Imperative}}
\ No newline at end of file
diff --git a/Lang/ALGOL-68/99-Bottles-of-Beer b/Lang/ALGOL-68/99-Bottles-of-Beer
new file mode 120000
index 0000000000..65de91c87d
--- /dev/null
+++ b/Lang/ALGOL-68/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Ackermann-function b/Lang/ALGOL-68/Ackermann-function
new file mode 120000
index 0000000000..97ae839907
--- /dev/null
+++ b/Lang/ALGOL-68/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Arrays b/Lang/ALGOL-68/Arrays
new file mode 120000
index 0000000000..16d3858c3d
--- /dev/null
+++ b/Lang/ALGOL-68/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Assertions b/Lang/ALGOL-68/Assertions
new file mode 120000
index 0000000000..c7832e25ce
--- /dev/null
+++ b/Lang/ALGOL-68/Assertions
@@ -0,0 +1 @@
+../../Task/Assertions/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Binary-search b/Lang/ALGOL-68/Binary-search
new file mode 120000
index 0000000000..d60a3809d1
--- /dev/null
+++ b/Lang/ALGOL-68/Binary-search
@@ -0,0 +1 @@
+../../Task/Binary-search/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Binary-strings b/Lang/ALGOL-68/Binary-strings
new file mode 120000
index 0000000000..610cd8fcaa
--- /dev/null
+++ b/Lang/ALGOL-68/Binary-strings
@@ -0,0 +1 @@
+../../Task/Binary-strings/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Bulls-and-cows b/Lang/ALGOL-68/Bulls-and-cows
new file mode 120000
index 0000000000..ae868bb333
--- /dev/null
+++ b/Lang/ALGOL-68/Bulls-and-cows
@@ -0,0 +1 @@
+../../Task/Bulls-and-cows/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Caesar-cipher b/Lang/ALGOL-68/Caesar-cipher
new file mode 120000
index 0000000000..86f4aba2c5
--- /dev/null
+++ b/Lang/ALGOL-68/Caesar-cipher
@@ -0,0 +1 @@
+../../Task/Caesar-cipher/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Calendar b/Lang/ALGOL-68/Calendar
new file mode 120000
index 0000000000..f28fefdbb9
--- /dev/null
+++ b/Lang/ALGOL-68/Calendar
@@ -0,0 +1 @@
+../../Task/Calendar/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Classes b/Lang/ALGOL-68/Classes
new file mode 120000
index 0000000000..574e90930a
--- /dev/null
+++ b/Lang/ALGOL-68/Classes
@@ -0,0 +1 @@
+../../Task/Classes/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Define-a-primitive-data-type b/Lang/ALGOL-68/Define-a-primitive-data-type
new file mode 120000
index 0000000000..47f79a9356
--- /dev/null
+++ b/Lang/ALGOL-68/Define-a-primitive-data-type
@@ -0,0 +1 @@
+../../Task/Define-a-primitive-data-type/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Delete-a-file b/Lang/ALGOL-68/Delete-a-file
new file mode 120000
index 0000000000..67b4b042e6
--- /dev/null
+++ b/Lang/ALGOL-68/Delete-a-file
@@ -0,0 +1 @@
+../../Task/Delete-a-file/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Detect-division-by-zero b/Lang/ALGOL-68/Detect-division-by-zero
new file mode 120000
index 0000000000..b928aedf86
--- /dev/null
+++ b/Lang/ALGOL-68/Detect-division-by-zero
@@ -0,0 +1 @@
+../../Task/Detect-division-by-zero/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Determine-if-a-string-is-numeric b/Lang/ALGOL-68/Determine-if-a-string-is-numeric
new file mode 120000
index 0000000000..26ff8622a5
--- /dev/null
+++ b/Lang/ALGOL-68/Determine-if-a-string-is-numeric
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-numeric/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/FizzBuzz b/Lang/ALGOL-68/FizzBuzz
new file mode 120000
index 0000000000..7ed0c1ac6c
--- /dev/null
+++ b/Lang/ALGOL-68/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Forest-fire b/Lang/ALGOL-68/Forest-fire
new file mode 120000
index 0000000000..f7d85c501c
--- /dev/null
+++ b/Lang/ALGOL-68/Forest-fire
@@ -0,0 +1 @@
+../../Task/Forest-fire/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Infinity b/Lang/ALGOL-68/Infinity
new file mode 120000
index 0000000000..06754ee068
--- /dev/null
+++ b/Lang/ALGOL-68/Infinity
@@ -0,0 +1 @@
+../../Task/Infinity/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Knuth-shuffle b/Lang/ALGOL-68/Knuth-shuffle
new file mode 120000
index 0000000000..7f9e4b0bf8
--- /dev/null
+++ b/Lang/ALGOL-68/Knuth-shuffle
@@ -0,0 +1 @@
+../../Task/Knuth-shuffle/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Narcissist b/Lang/ALGOL-68/Narcissist
new file mode 120000
index 0000000000..a9f34e0755
--- /dev/null
+++ b/Lang/ALGOL-68/Narcissist
@@ -0,0 +1 @@
+../../Task/Narcissist/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Pi b/Lang/ALGOL-68/Pi
new file mode 120000
index 0000000000..34758192d8
--- /dev/null
+++ b/Lang/ALGOL-68/Pi
@@ -0,0 +1 @@
+../../Task/Pi/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Quine b/Lang/ALGOL-68/Quine
new file mode 120000
index 0000000000..99cd94562f
--- /dev/null
+++ b/Lang/ALGOL-68/Quine
@@ -0,0 +1 @@
+../../Task/Quine/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Search-a-list b/Lang/ALGOL-68/Search-a-list
new file mode 120000
index 0000000000..59edcce483
--- /dev/null
+++ b/Lang/ALGOL-68/Search-a-list
@@ -0,0 +1 @@
+../../Task/Search-a-list/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-W/0DESCRIPTION b/Lang/ALGOL-W/0DESCRIPTION
new file mode 100644
index 0000000000..fbd35eb835
--- /dev/null
+++ b/Lang/ALGOL-W/0DESCRIPTION
@@ -0,0 +1,32 @@
+{{language|ALGOL W
+|parampass=both
+|strength=strong
+|safety=safe
+|express=explicit
+|compat=structural
+|checking=both
+|LCT=yes}}
+Algol W is a successor to [[wp:Algol 60|Algol 60]] closely based on A
+Contribution to the Development of ALGOL by [[wp:Niklaus Wirth|Niklaus Wirth]]
+and [[wp:C.A.R. Hoare|C. A. R. Hoare]]. It includes dynamically
+allocated records, string handling, complex numbers and a standard I/O
+system. A copy of the Algol W Language Description can be found on Karl
+Kleine's [http://www.fh-jena.de/~kleine/history/history.html Historic Documents in Computer Science]
+page. [http://everything2.com/title/Algol%2520W Dabcanboulet's Algol W @ Everything2]
+page contains an excellent
+history and tutorial.
+
+[http://www.jampan.co.nz/~glyn/ aw2c] is a new compiler for the Algol W
+language. It is a complete implementation of the language described in
+the Algol W Language Description, June 1972. aw2c should be able to
+compile code intended for the [[wp:OS/360|OS/360]] Algol W compilers
+with little or no modification. See the aw2c manual for more details.
+
+aw2c correctly compiles Tony Marsland's computer [[wp:chess|chess]] player
+[http://webdocs.cs.ualberta.ca/~tony/Public/Awit-Wita-ComputerChess/ Awit]
+and Hendrik Boom's [http://mtn-host.prjek.net/projects/a68h/ A68H]
+[[Algol 68]] compiler.
+
+== Code Specimen ==
+{{language programming paradigm|Concurrent}}
+{{stub}}
\ No newline at end of file
diff --git a/Lang/ALGOL/0DESCRIPTION b/Lang/ALGOL/0DESCRIPTION
new file mode 100644
index 0000000000..f66cf163bf
--- /dev/null
+++ b/Lang/ALGOL/0DESCRIPTION
@@ -0,0 +1 @@
+{{language}}{{stub}}
\ No newline at end of file
diff --git a/Lang/AMPL/0DESCRIPTION b/Lang/AMPL/0DESCRIPTION
new file mode 100644
index 0000000000..1721b8cb25
--- /dev/null
+++ b/Lang/AMPL/0DESCRIPTION
@@ -0,0 +1,5 @@
+{{stub}}
+{{language
+|site=http://www.ampl.com/
+}}
+AMPL is a comprehensive and powerful algebraic modeling language for linear and nonlinear optimization problems, in discrete or continuous variables. One particular advantage of AMPL is the similarity of its syntax to the mathematical notation of optimization problems.
\ No newline at end of file
diff --git a/Lang/ANT/0DESCRIPTION b/Lang/ANT/0DESCRIPTION
new file mode 100644
index 0000000000..3cdd7ec2f3
--- /dev/null
+++ b/Lang/ANT/0DESCRIPTION
@@ -0,0 +1,12 @@
+{{stub}}
+{{language
+|site=http://ant.berlios.de/
+}}
+ANT (ant is not TeX) is a typesetting system inspired by [[TeX]]. In addition to all major features of TeX, ANT provides:
+* an improved macro language
+* a builtin high-level scripting language
+* UNICODE support
+* support for various font formats including Type1, TrueType, and OpenType
+* partial support for advanced OpenType features
+* support for colour and graphics
+* simple page layout specifications
\ No newline at end of file
diff --git a/Lang/ANTLR/0DESCRIPTION b/Lang/ANTLR/0DESCRIPTION
new file mode 100644
index 0000000000..98ac2ea159
--- /dev/null
+++ b/Lang/ANTLR/0DESCRIPTION
@@ -0,0 +1,5 @@
+{{language}}
+
+ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.
+
+See: http://www.antlr.org/
\ No newline at end of file
diff --git a/Lang/ANTLR/Balanced-brackets b/Lang/ANTLR/Balanced-brackets
new file mode 120000
index 0000000000..e6f87cfe06
--- /dev/null
+++ b/Lang/ANTLR/Balanced-brackets
@@ -0,0 +1 @@
+../../Task/Balanced-brackets/ANTLR
\ No newline at end of file
diff --git a/Lang/ANTLR/JSON b/Lang/ANTLR/JSON
new file mode 120000
index 0000000000..e146f2a9d3
--- /dev/null
+++ b/Lang/ANTLR/JSON
@@ -0,0 +1 @@
+../../Task/JSON/ANTLR
\ No newline at end of file
diff --git a/Lang/APL/0DESCRIPTION b/Lang/APL/0DESCRIPTION
new file mode 100644
index 0000000000..2252da77e4
--- /dev/null
+++ b/Lang/APL/0DESCRIPTION
@@ -0,0 +1,4 @@
+{{stub}}{{language|APL
+|checking=dynamic}}{{language programming paradigm|functional}}
+
+APL is an array oriented interactive programming language and integrated development environment.
\ No newline at end of file
diff --git a/Lang/APL/Ackermann-function b/Lang/APL/Ackermann-function
new file mode 120000
index 0000000000..9ac38aeba8
--- /dev/null
+++ b/Lang/APL/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/APL
\ No newline at end of file
diff --git a/Lang/APL/Determine-if-a-string-is-numeric b/Lang/APL/Determine-if-a-string-is-numeric
new file mode 120000
index 0000000000..8e8c31df37
--- /dev/null
+++ b/Lang/APL/Determine-if-a-string-is-numeric
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-numeric/APL
\ No newline at end of file
diff --git a/Lang/APL/FizzBuzz b/Lang/APL/FizzBuzz
new file mode 120000
index 0000000000..bbd46cfd13
--- /dev/null
+++ b/Lang/APL/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/APL
\ No newline at end of file
diff --git a/Lang/ARM-Assembly/0DESCRIPTION b/Lang/ARM-Assembly/0DESCRIPTION
new file mode 100644
index 0000000000..c9b9f3b5fe
--- /dev/null
+++ b/Lang/ARM-Assembly/0DESCRIPTION
@@ -0,0 +1,3 @@
+{{stub}}{{language}}{{assembler language}}
+
+[[Category:Assembly]]
\ No newline at end of file
diff --git a/Lang/ASP.Net/0DESCRIPTION b/Lang/ASP.Net/0DESCRIPTION
new file mode 100644
index 0000000000..9b7e1c4582
--- /dev/null
+++ b/Lang/ASP.Net/0DESCRIPTION
@@ -0,0 +1 @@
+{{language|site=http://www.asp.net/}}{{stub}}
\ No newline at end of file
diff --git a/Lang/ASP/0DESCRIPTION b/Lang/ASP/0DESCRIPTION
new file mode 100644
index 0000000000..ef4cc0fcc8
--- /dev/null
+++ b/Lang/ASP/0DESCRIPTION
@@ -0,0 +1,5 @@
+{{language|site=http://msdn.microsoft.com/en-us/library/aa286483.aspx}}
+{{implementation|VBScript}}{{implementation|JavaScript}}
+'''Active Server Pages''', usually abbreviated as '''ASP''', is a scripting engine for web servers. Although developed by [[Microsoft]], and used almost exclusively under [[wp:Internet Information Services|IIS]], there are a few third-party implementations, most notably [http://www.apache-asp.org/ Apache::ASP] (and, before the Oracle buyout, Sun's Chilisoft ASP).
+
+By default, the Microsoft implementation of ASP includes [[:Category:VBScript|VBScript]] and [[:Category:JavaScript|JavaScript]], but can be extended to use other languages, such as [[wp:PerlScript|PerlScript]] (derived from [[:Category:Perl|Perl]]).
\ No newline at end of file
diff --git a/Lang/ATS/0DESCRIPTION b/Lang/ATS/0DESCRIPTION
new file mode 100644
index 0000000000..c1ac018384
--- /dev/null
+++ b/Lang/ATS/0DESCRIPTION
@@ -0,0 +1,36 @@
+{{language
+|exec=machine
+|gc=allowed
+|safety=safe
+|parampass=both
+|checking=static
+|strength=strong
+|express=explicit
+|tags=ATS
+|bnf=http://www.ats-lang.org/DOCUMENTATION/GRAMMAR/ats_grammar_desc.html
+|site=http://www.ats-lang.org/
+|hopl=no
+}}
+{{language programming paradigm|Declarative}}
+{{language programming paradigm|Functional}}
+{{language programming paradigm|Imperative}}
+{{language programming paradigm|Concurrent}}
+{{language programming paradigm|Modular}}
+'''ATS''' is a [[Type checking|statically typed]] programming language that unifies implementation with formal specification. It is equipped with a highly expressive [[type system]] rooted in the framework Applied Type System, which gives the language its name. In particular, both dependent types and linear types are available in ATS.
+
+
+
+* [[Functional programming]]. The core of ATS is a functional language based on eager (aka. call-by-value) evaluation, which can also accommodate lazy (aka. call-by-need) evaluation. The availability of linear types in ATS often makes functional programs written in it run not only with surprisingly high efficiency (when compared to [[C]]) but also with surprisingly small (memory) footprint (when compared to [[C]] as well).
+
+* [[Imperative programming]]. The novel and unique approach to imperative programming in ATS is firmly rooted in the paradigm of programming with theorem-proving. The type system of ATS allows many features considered dangerous in other languages (e.g., explicit pointer arithmetic and explicit memory allocation/deallocation) to be safely supported in ATS, making ATS a viable programming langauge for low-level systems programming.
+
+* [[Concurrent programming]]. ATS, equipped with a multicore-safe implementation of [[garbage collection]], can support multithreaded programming through the use of pthreads. The availability of linear types for tracking and safely manipulating resources provides a effective means to constructing reliable programs that can take advantage of multicore architectures.
+
+* [[Modular programming]]. The module system of ATS is largely infuenced by that of [[Modula-3]], which is both simple and general as well as effective in supporting large scale programming.
+
+
+
+In addition, ATS contains a subsystem ATS/LF that supports a form of (interactive) theorem-proving, where proofs are constructed as total functions. With this component, ATS advocates a programmer-centric approach to program verification that combines programming with theorem-proving in a syntactically intertwined manner. Furthermore, this component can serve as a logical framework for encoding deduction systems and their (meta-)properties.
+
+==Citations==
+* [[wp:ATS_%28programming_language%29|Wikipedia:ATS (programming language)]]
\ No newline at end of file
diff --git a/Lang/ATS/99-Bottles-of-Beer b/Lang/ATS/99-Bottles-of-Beer
new file mode 120000
index 0000000000..dd6d877b0c
--- /dev/null
+++ b/Lang/ATS/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/ATS
\ No newline at end of file
diff --git a/Lang/ATS/Ackermann-function b/Lang/ATS/Ackermann-function
new file mode 120000
index 0000000000..847076f3b5
--- /dev/null
+++ b/Lang/ATS/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/ATS
\ No newline at end of file
diff --git a/Lang/Agda/0DESCRIPTION b/Lang/Agda/0DESCRIPTION
new file mode 100644
index 0000000000..85bf37c8e6
--- /dev/null
+++ b/Lang/Agda/0DESCRIPTION
@@ -0,0 +1,3 @@
+{{language|Agda
+|site=http://wiki.portal.chalmers.se/agda/pmwiki.php}}{{implementation|Agda}}{{stub}}
+Agda is a dependently typed functional programming language.
\ No newline at end of file
diff --git a/Lang/Agda2/0DESCRIPTION b/Lang/Agda2/0DESCRIPTION
new file mode 100644
index 0000000000..ee67ec28e7
--- /dev/null
+++ b/Lang/Agda2/0DESCRIPTION
@@ -0,0 +1 @@
+{{language|Agda2}}{{implementation|Agda2}}{{stub}}
\ No newline at end of file
diff --git a/Lang/Agena/0DESCRIPTION b/Lang/Agena/0DESCRIPTION
new file mode 100644
index 0000000000..5acb744daf
--- /dev/null
+++ b/Lang/Agena/0DESCRIPTION
@@ -0,0 +1,21 @@
+{{language
+|site=http://agena.sourceforge.net/
+|express=implicit}}
+{{language programming paradigm|procedural}}
+== What is Agena ? ==
+Agena is an easy-to-learn procedural programming language designed to be used in scientific, educational, linguistic, and many other applications.
+
+== What can you do with Agena ? ==
+Agena provides all the means to implement ideas quickly: fast real and complex arithmetics, efficient text processing, graphics, flexible data structures, intelligent procedures, simple package management, plus various configuration facilities in multi-user environments.
+
+Besides providing basic operations, it has advanced programming features such as high-speed processing of data structures,
+extended conditionals, abridged and extended syntax for loops, efficient recursion techniques, an arbitrary precision mathematical library, easy-to-use package handling, and much more.
+
+== Which operating systems are supported ? ==
+Installers are available for [[Solaris]], [[Windows]], [[Linux]], [[Mac OS X]], [[OS/2]] & eComStation, and DOS.
+
+== How does it look like ? ==
+The syntax looks like very simplified [[ALGOL 68]] with elements taken from [[Lua]] and [[SQL]].
+
+== How has it been implemented ? ==
+Agena is based on the [[ANSI]] [[C]] source code of [[Lua]], a popular and widely used Open Source programming language.
\ No newline at end of file
diff --git a/Lang/Aikido/0DESCRIPTION b/Lang/Aikido/0DESCRIPTION
new file mode 100644
index 0000000000..4126891ffb
--- /dev/null
+++ b/Lang/Aikido/0DESCRIPTION
@@ -0,0 +1,15 @@
+{{Wikipedia|Aikido (programming language)}}
+{{language
+|site=http://aikido.sourceforge.net/
+|compat=duck
+|strength=weak}}
+{{language programming paradigm|object-oriented}}
+{{language programming paradigm|imperative}}
+{{language programming paradigm|concurrent}}
+'''Aikido''' is an interpreted language that can be used for rapid scripting, prototyping and general programming tasks.
+
+It was developed at [[Sun Microsystems|Sun Microsystems Laboratories]] by David Allison and released as open source in September 2003, with the most recent release dated June 2007. It is a dynamically typed, object oriented language with built-in multithreading.
+
+In some respects it is similar in functionality to [[Python]], [[Perl]], [[JavaScript]] and [[Java]]. Syntactically it is very similar to [[C++]] and Java.
+
+Aikido is available for Linux, Mac OS X and Solaris. The interpreter can be obtained from http://sourceforge.net/projects/aikido. Documentation (in PDF) is at http://downloads.sourceforge.net/aikido/aikido_prm.pdf
\ No newline at end of file
diff --git a/Lang/Aikido/Arrays b/Lang/Aikido/Arrays
new file mode 120000
index 0000000000..b66c7f57fb
--- /dev/null
+++ b/Lang/Aikido/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/Aikido
\ No newline at end of file
diff --git a/Lang/Aikido/Check-that-file-exists b/Lang/Aikido/Check-that-file-exists
new file mode 120000
index 0000000000..56ce2b5b40
--- /dev/null
+++ b/Lang/Aikido/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/Aikido
\ No newline at end of file
diff --git a/Lang/Aikido/Classes b/Lang/Aikido/Classes
new file mode 120000
index 0000000000..4d19216ef1
--- /dev/null
+++ b/Lang/Aikido/Classes
@@ -0,0 +1 @@
+../../Task/Classes/Aikido
\ No newline at end of file
diff --git a/Lang/Aikido/Delegates b/Lang/Aikido/Delegates
new file mode 120000
index 0000000000..6ac82f0c07
--- /dev/null
+++ b/Lang/Aikido/Delegates
@@ -0,0 +1 @@
+../../Task/Delegates/Aikido
\ No newline at end of file
diff --git a/Lang/Aikido/Delete-a-file b/Lang/Aikido/Delete-a-file
new file mode 120000
index 0000000000..eda88a8016
--- /dev/null
+++ b/Lang/Aikido/Delete-a-file
@@ -0,0 +1 @@
+../../Task/Delete-a-file/Aikido
\ No newline at end of file
diff --git a/Lang/Aime/0DESCRIPTION b/Lang/Aime/0DESCRIPTION
new file mode 100644
index 0000000000..d66e830a7a
--- /dev/null
+++ b/Lang/Aime/0DESCRIPTION
@@ -0,0 +1,4 @@
+{{language|aime
+|site=http://sourceforge.net/projects/aime-embedded/
+}}{{language programming paradigm|Imperative}}[[derived from::C| ]]
+''aime'' is a simple, [[C|C]]-like, [[procedural programming|procedural]], [[imperative programming|imperative]] computer programming language. It is designed as a lightweight language targeted towards application extension [http://en.wikipedia.org/wiki/List_of_programming_languages_by_category#Extension_languages]. As such, the aime interpreter is easily embeddable in other applications. For the same reasons, the language stresses application integrity and accessibility.
\ No newline at end of file
diff --git a/Lang/Aime/99-Bottles-of-Beer b/Lang/Aime/99-Bottles-of-Beer
new file mode 120000
index 0000000000..65eb460373
--- /dev/null
+++ b/Lang/Aime/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/Aime
\ No newline at end of file
diff --git a/Lang/Algae/0DESCRIPTION b/Lang/Algae/0DESCRIPTION
new file mode 100644
index 0000000000..6a063f3094
--- /dev/null
+++ b/Lang/Algae/0DESCRIPTION
@@ -0,0 +1,6 @@
+{{stub}}
+{{language
+|site=http://algae.sourceforge.net/
+}}
+
+Algae is an interpreted language for numerical analysis.
\ No newline at end of file
diff --git a/Lang/Alice-ML/0DESCRIPTION b/Lang/Alice-ML/0DESCRIPTION
new file mode 100644
index 0000000000..64f573c86d
--- /dev/null
+++ b/Lang/Alice-ML/0DESCRIPTION
@@ -0,0 +1,8 @@
+{{language|Alice ML
+|site=http://www.ps.uni-saarland.de/alice/
+}}
+
+Alice ML is a functional programming language based on [[Standard ML]], With ideas from [[Oz]]. It has rich support for concurrent, distributed, and constraint programming. Alice ML extends [[Standard ML]] with laziness, light-weight concurrency with implicit data-flow synchronisation, higher-order functors and abstract signatures, Packages, Pickling, type-safe cross-platform remote functions and network mobility & Constraints. It also has a lot of similarities to [[Erlang]].
+
+==See Also==
+* [[wp:Alice_(programming_language)|Wikipedia: Alice ML]]
\ No newline at end of file
diff --git a/Lang/Alore/0DESCRIPTION b/Lang/Alore/0DESCRIPTION
new file mode 100644
index 0000000000..c54f9e4e0b
--- /dev/null
+++ b/Lang/Alore/0DESCRIPTION
@@ -0,0 +1,9 @@
+{{stub}}{{language
+|exec=bytecode
+|strength=strong
+|checking=both
+|gc=yes
+|site=http://www.alorelang.org/}}
+{{language programming paradigm|Object-oriented}}
+
+Alore is an [[object-oriented programming]] language with a clean syntax that resembles [[Python]] and [[Lua]]. Alore is optionally-typed like Google Dart: it is both a dynamic scripting language and a general-purpose language with static typing. It is aimed at diverse programming tasks, from short scripts to complex applications. Alore also allows you to freely mix static and dynamic typing within a program.
\ No newline at end of file
diff --git a/Lang/AmbientTalk/0DESCRIPTION b/Lang/AmbientTalk/0DESCRIPTION
new file mode 100644
index 0000000000..a08b778a3b
--- /dev/null
+++ b/Lang/AmbientTalk/0DESCRIPTION
@@ -0,0 +1,31 @@
+{{language|AmbientTalk
+|strength=strong
+|safety=safe
+|express=explicit
+|compat=duck
+|checking=dynamic
+|parampass=value
+|gc=yes
+|LCT=yes}}
+AmbientTalk is a concurrent, distributed programming language designed specifically for mobile ad hoc networks. It's concurrency model is inspired by actors, and more specifically the event loop concurrency model of the [[E]] language. AmbientTalk has built-in support for distributed service discovery and (asynchronous) messaging.
+
+The language was designed at the Software Languages Lab of the Vrije Universiteit Brussel, primarily as a research framework for exploring new concurrent and distributed language features for highly dynamic, decentralized networks, such as wireless, mobile ad hoc networks.
+
+The default implementation of AmbientTalk is a Java interpreter, which features full interoperability with the JVM, enabling AmbientTalk code to use existing Java libraries, and enabling Java code to use AmbientTalk as a distributed scripting language. Recent version of AmbientTalk also run on the Android OS, making AmbientTalk portable across a wide range of mobile phones.
+
+==Trying AmbientTalk==
+
+[http://ambienttalk.googlecode.com The open source AmbientTalk interpreter]
+
+To run an AmbientTalk program:
+
+ : -> real diff --git a/Task/JSON/ANTLR/json.antlr b/Task/JSON/ANTLR/json.antlr new file mode 100644 index 0000000000..e518f6b9be --- /dev/null +++ b/Task/JSON/ANTLR/json.antlr @@ -0,0 +1,23 @@ +// Parse JSON +// +// Nigel Galloway - April 27th., 2012 +// +grammar JSON ; +@members { +String Indent = ""; +} +Number : (('0')|('-'? ('1'..'9') ('0'..'9')*)) ('.' ('0'..'9')+)? (('e'|'E') ('+'|'-')? ('0'..'9')+)?; +WS : (' ' | '\t' | '\r' |'\n') {skip();}; +Tz : ' ' .. '!' | '#' .. '[' | ']' .. '~'; +Control : '\\' ('"'|'\\'|'/'|'b'|'f'|'n'|'r'|'t'|UCode); +UCode : 'u' ('0'..'9'|'a'..'f'|'A'..'F') ('0'..'9'|'a'..'f'|'A'..'F') ('0'..'9'|'a'..'f'|'A'..'F') ('0'..'9'|'a'..'f'|'A'..'F'); +Keyword : 'true' | 'false' | 'null'; +String : '"' (Control? Tz)* '"'; +object : '{' {System.out.println(Indent + "{Object}"); Indent += " ";} (pair (',' pair*)*)? '}' {Indent = Indent.substring(4);}; +pair : e = String {System.out.println(Indent + "{Property}\t" + $e.text);} ':' value; +value : Number {System.out.println(Indent + "{Number} \t" + $Number.text);} + | object + | String {System.out.println(Indent + "{String} \t" + $String.text);} + | Keyword {System.out.println(Indent + "{Keyword} \t" + $Keyword.text);} + | array; +array : '[' {System.out.println(Indent + "Array"); Indent += " ";} (value (',' value)*)? ']' {Indent = Indent.substring(4);}; diff --git a/Task/Knuth-shuffle/ALGOL-68/knuth-shuffle-1.alg b/Task/Knuth-shuffle/ALGOL-68/knuth-shuffle-1.alg new file mode 100644 index 0000000000..f5202e6668 --- /dev/null +++ b/Task/Knuth-shuffle/ALGOL-68/knuth-shuffle-1.alg @@ -0,0 +1,14 @@ +PROC between = (INT a, b)INT : +( + ENTIER (random * ABS (b-a+1) + (a maxlen) + { + list := thisword + maxlen := ThisLen + } +} + +IsSorted(word){ ; This function uses the ASCII value of the letter to determine its place in the alphabet. + ; Thankfully, the dictionary is in all lowercase + lastchar=0 + Loop, parse, word + { + if ( Asc(A_LoopField) < lastchar ) + return false + lastchar := Asc(A_loopField) + } + return true +} + +GUI, Add, Edit, w300 ReadOnly, %list% +GUI, Show +return ; End Auto-Execute Section + +GUIClose: +ExitApp diff --git a/Task/Pi/ALGOL-68/pi.alg b/Task/Pi/ALGOL-68/pi.alg new file mode 100644 index 0000000000..c1ae844874 --- /dev/null +++ b/Task/Pi/ALGOL-68/pi.alg @@ -0,0 +1,51 @@ +#!/usr/local/bin/a68g --script # + +INT base := 10; + +MODE YIELDINT = PROC(INT)VOID; +PROC gen pi digits = (INT decimal places, YIELDINT yield)VOID: +BEGIN + INT nine = base - 1; + INT nines := 0, predigit := 0; # First predigit is a 0 # + [decimal places*10 OVER 3]#LONG# INT digits; # We need 3 times the digits to calculate # + FOR place FROM LWB digits TO UPB digits DO digits[place] := 2 OD; # Start with 2s # + FOR place TO decimal places + 1 DO + INT digit := 0; + FOR i FROM UPB digits BY -1 TO LWB digits DO # Work backwards # + INT x := #SHORTEN#(base*digits[i] + #LENG# digit*i); + digits[i] := x MOD (2*i-1); + digit := x OVER (2*i-1) + OD; + digits[LWB digits] := digit MOD base; digit OVERAB base; + nines := + IF digit = nine THEN + nines + 1 + ELSE + IF digit = base THEN + yield(predigit+1); predigit := 0 ; + FOR repeats TO nines DO yield(0) OD # zeros # + ELSE + IF place NE 1 THEN yield(predigit) FI; predigit := digit; + FOR repeats TO nines DO yield(nine) OD + FI; + 0 + FI + OD; + yield(predigit) +END; + +main:( + INT feynman point = 762; # feynman point + 4 is a good test case # +# the 33rd decimal place is a shorter tricky test case # + INT test decimal places = UPB "3.1415926.......................502"-2; + + INT width = ENTIER log(base*(1+small real*10)); + +# iterate throught the digits as they are being found # +# FOR INT digit IN # gen pi digits(test decimal places#) DO ( #, + ## (INT digit)VOID: ( + printf(($n(width)d$,digit)) + ) +# OD #); + print(new line) +) diff --git a/Task/Quine/ALGOL-68/quine-1.alg b/Task/Quine/ALGOL-68/quine-1.alg new file mode 100644 index 0000000000..003098ad90 --- /dev/null +++ b/Task/Quine/ALGOL-68/quine-1.alg @@ -0,0 +1 @@ +STRINGa="STRINGa=,q=REPR34;print(a[:8]+q+a+q+a[9:])",q=REPR34;print(a[:8]+q+a+q+a[9:]) diff --git a/Task/Quine/ALGOL-68/quine-2.alg b/Task/Quine/ALGOL-68/quine-2.alg new file mode 100644 index 0000000000..6cd1abe369 --- /dev/null +++ b/Task/Quine/ALGOL-68/quine-2.alg @@ -0,0 +1 @@ +[]CHARa="[]CHARa="";print(2*a[:9]+2*a[9:])";print(2*a[:9]+2*a[9:]) diff --git a/Task/Quine/AutoHotkey/quine-1.ahk b/Task/Quine/AutoHotkey/quine-1.ahk new file mode 100644 index 0000000000..e985ef2fbc --- /dev/null +++ b/Task/Quine/AutoHotkey/quine-1.ahk @@ -0,0 +1,2 @@ +FileRead, quine, %A_ScriptFullPath% +MsgBox % quine diff --git a/Task/Quine/AutoHotkey/quine-2.ahk b/Task/Quine/AutoHotkey/quine-2.ahk new file mode 100644 index 0000000000..6543472d63 --- /dev/null +++ b/Task/Quine/AutoHotkey/quine-2.ahk @@ -0,0 +1,32 @@ +D(n, s) +{ + global + Loop %n% + { + l := %s%%A_Index% + If l = # + l := "script =" . nl . "( %" . nl . script . nl . ")" + FileAppend %l%%nl%, %A_ScriptDir%\Q.txt + } +} +nl := Chr(13) . Chr(10) +script = +( % +D(n, s) +{ + global + Loop %n% + { + l := %s%%A_Index% + If l = # + l := "script =" . nl . "( %" . nl . script . nl . ")" + FileAppend %l%%nl%, %A_ScriptDir%\Q.txt + } +} +nl := Chr(13) . Chr(10) +# +StringSplit q, script, %nl% +D(q0, "q") +) +StringSplit q, script, %nl% +D(q0, "q") diff --git a/Task/Quine/AutoHotkey/quine-3.ahk b/Task/Quine/AutoHotkey/quine-3.ahk new file mode 100644 index 0000000000..c99ad39da6 --- /dev/null +++ b/Task/Quine/AutoHotkey/quine-3.ahk @@ -0,0 +1,8 @@ +quote := Chr(34) +sep := Chr(36) +nl := Chr(13) . Chr(10) +script := "quote := Chr(34)$sep := Chr(36)$nl := Chr(13) . Chr(10)$script := #$s := script$StringReplace script, script, %sep%, %nl%, All$StringReplace script, script, #, %quote%%s%%quote%$FileAppend %script%, %A_ScriptDir%\Q.txt" +s := script +StringReplace script, script, %sep%, %nl%, All +StringReplace script, script, #, %quote%%s%%quote% +FileAppend %script%, %A_ScriptDir%\Q.txt diff --git a/Task/Quine/AutoHotkey/quine-4.ahk b/Task/Quine/AutoHotkey/quine-4.ahk new file mode 100644 index 0000000000..73728f5479 --- /dev/null +++ b/Task/Quine/AutoHotkey/quine-4.ahk @@ -0,0 +1 @@ +FileCopy, %A_ScriptFullPath%, %A_ScriptDir%\Copy-Of--%A_ScriptName% diff --git a/Task/Search-a-list/ALGOL-68/search-a-list-1.alg b/Task/Search-a-list/ALGOL-68/search-a-list-1.alg new file mode 100644 index 0000000000..a61d4195e6 --- /dev/null +++ b/Task/Search-a-list/ALGOL-68/search-a-list-1.alg @@ -0,0 +1,24 @@ + FORMAT hay stack := $c("Zig","Zag","Wally","Ronald","Bush","Krusty","Charlie","Bush","Bozo")$; + + FILE needle exception; STRING ref needle; + associate(needle exception, ref needle); + + PROC index = (FORMAT haystack, REF STRING needle)INT:( + INT out; + ref needle := needle; + getf(needle exception,(haystack, out)); + out + ); + + test:( + []STRING needles = ("Washington","Bush"); + FOR i TO UPB needles DO + STRING needle := needles[i]; + on value error(needle exception, (REF FILE f)BOOL: value error); + printf(($d" "gl$,index(hay stack, needle), needle)); + end on value error; + value error: + printf(($g" "gl$,needle, "is not in haystack")); + end on value error: reset(needle exception) + OD + ) diff --git a/Task/Search-a-list/ALGOL-68/search-a-list-2.alg b/Task/Search-a-list/ALGOL-68/search-a-list-2.alg new file mode 100644 index 0000000000..da1f3432d2 --- /dev/null +++ b/Task/Search-a-list/ALGOL-68/search-a-list-2.alg @@ -0,0 +1,28 @@ + []STRING hay stack = ("Zig","Zag","Wally","Ronald","Bush","Krusty","Charlie","Bush","Bozo"); + + PROC index = ([]STRING hay stack, STRING needle)INT:( + INT index; + FOR i FROM LWB hay stack TO UPB hay stack DO + index := i; + IF hay stack[index] = needle THEN + found + FI + OD; + else: + LWB hay stack - 1 + EXIT + found: + index + ); + test:( + []STRING needles = ("Washington","Bush"); + FOR i TO UPB needles DO + STRING needle := needles[i]; + INT result = index(hay stack, needle); + IF result >= LWB hay stack THEN + printf(($d" "gl$, result, needle)) + ELSE + printf(($g" "gl$,needle, "is not in haystack")) + FI + OD + ) diff --git a/Task/Search-a-list/AutoHotkey/search-a-list.ahk b/Task/Search-a-list/AutoHotkey/search-a-list.ahk new file mode 100644 index 0000000000..56486ac814 --- /dev/null +++ b/Task/Search-a-list/AutoHotkey/search-a-list.ahk @@ -0,0 +1,9 @@ +haystack = Zig Zag Wally Ronald Bush Krusty Charlie Bush Bozo +needle = bush, washington +Loop, Parse, needle, `, +{ + If InStr(haystack, A_LoopField) + MsgBox, % A_LoopField + Else + MsgBox % A_LoopField . " not in haystack" +}