Parser 3—simple and convenient object-oriented language which allows creating good sites in short time.
parser bird
Download Parser:    Windows    Linux    Mac OS X   FreeBSD 8 9 10
What is Parser?
Parser is a simple and convenient object-oriented language, which allows creating good sites in short time. Parser was started in Art. Lebedev studio in 1997. Nowadays, most of sites created by Art. Lebedev studio are made with Parser.
What is it for, anyway?
Language is designed and optimized in such a way that it would be more convenient to create good sites. Language supports working with forms, cookies, table files, databases, and XML. Support for user operators and classes allows to extend its functionality.
There is PHP, what Parser is for?
PHP is a programming language requiring appropriate training. Parser has simple tools that resolve complex tasks and is especially good in that it allows mere mortals to create and maintain complex dynamic sites without spending too much time.
April 28, 2016

The updated website is launched

To the day of the fourteenth “Parser” birthday the updated website is launched. Solutions for different tasks are grouped by tags in new “Library” section. Registered users have the possibility by their own add their sites to the “In action” section.
November 18, 2015
Version 3.4.4 released

Date range supported by date class is now extended. Dates from 0000-00-00 00:00:00 to 9999-12-31 23:59:59 are now supported.

Tables now can be edited. Now it is possible to change a cell value and to insert a row ($[value] and ^t.insert{row}).

Appended table row can be specified as a hash (^table.append[ $.a[string] $.b[string] ]).

Table and hash now have method search priority when a method is called (^table.count[]) and methods won’t be returned at all when a field is accessed ($table.count). Before there was method search priority in a table and field search priority in a hash regardless of access way, leading to issues when there was foreach key in a hash.

^hash.keys[], ^hash.count[], ^[...] methods are added to hash class in addition to existing methods, starting with _.

date class now supports a subset of ISO 8601 format, it is now possible to work with dates in any time zone (^date::create[2015-09-08T18:24:52+03:00]).

It is now possible to set the default time zone when server time zone differs from desired web-site time zone, ^date:roll[TZ;MSK-3].

Supported number range is now extended from 32 to 64 bits for ^math:convert[...] function and when a number is specified in hexadecimal form (0XNN).

Support for IDNA (international domain names) is now implemented when using HTTP file load and as separate encoding and decoding methods (^string.idna[] and ^string:idna[encoded string]).

Methods to work with DNS are added: ^inet:name2ip[name; $.ipv[4|6|any] $.table(true) ] to resolve a name into an IP address and ^inet:ip2name[ip; $.ipv[4|6|any] ] for reverse resolving.

$var.CLASS and $var.CLASS_NAME usage is now optimized and processed during compilation.

Hash now can be sorted using string ^hash.sort[key;value]{string-key-maker}[[asc|desc]] or number ^hash.sort[key;value](numeric-key-maker)[[asc|desc]] expression.

^hash.delete[] (without parameters) now clears existing hash.

$request:headers, $request:method, $request:field are added (before this information was available only using $env).

A header in $response:fields can be deleted by specifying an empty value.

HTTP method PUT is now supported.

^curl:info[...] method is added. It returns information about the last request.

$.response-charset options can be specified in ^file::load[...] call (to be used if the service returns incorrect charset).

^string.left(-1) now returns the whole string.

^string.trim[set] call is now supported and is equivalent to ^string.trim[both;set] call.

^string:js-unescape[...] now returns “dirty” string.

^string:unescape[[js|url];escaped; $.charset[charset] ]] method is added.

^json:string[...] method name now can be passed in $._default parameter, and if a method with this name exists in a object, it will be called for the object serialization.

^json:string[...] output format for undefined values can now be set either as empty string ($.void[string]) or as null ($.void[null], by default).

^json:parse[...] error reporting is now improved, json fragment is now included in the exception and separate messages for common mistakes are added.

^json:parse[...] now has option $.int(false) to disable json integers conversion to parser numbers, leaving them as strings.

^reflection:def[;name] method is added to check class existence.

^reflection:class_by_name[class_name] method is added to get class by its name.

^reflection:is[element_name;class_name] method is added. It extends is operator functionality and allows to check if $element_name is junction.

^table.count[columns] now works for nameless tables.

^[...] now can return not only value, but key or key-value pair as well.

double class variable no longer can have NaN or Inf value, ^math:sqrt(-1) calculation will throw an exception.

Compile-time exceptions structure is now unified with run-time exceptions.

Garbage collection library libgc is updated from version 7.2d to version 7.2f and regular expressions library pcre is updated from version 8.33 to version 8.37.

libgc memory limit under Windows is increased and no dialog is shown if memory exception occurs.

A number of bugs were fixed.

International Isotope Society—The International Isotope Society is a chartered, international organization independent of special interests groups or companies, makers or users of isotopes (radioactive or stable), etc. It is run entirely by the enthusiastic and unselfish dedicated vol / CrossRoads Media

Mega for Business website / Art. Lebedev Studio

Welcome to Haven Hotel & Suites!—Haven Hotel Ocean City, MD. On-line reservation system. / Mikhail Kozlov

LANcet Chat 2.3 - Free LAN communication - Home—LANcet Chat project. / Ilya Polsakov

Business Cards—business cards / Pavel Sochnev

Web Hosting—hosting provider (USA) / Mishka Serverniy