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 11 12
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.
January 28, 2021

Version 3.4.6 released

The parser has a built-in web server, activated when started with the option -p <port number> from the command line. In web server mode, requests are processed by the main method of the httpd class, which is added to the configuration auto.p and which implements the logic of the web server.

64-bit bit version of the parser for Windows is available.

Method ^image::measure[] now supports measuring of files in tiff, bmp, webp formats and with the $.video(true) option also mp4 (mov).

Method ^image::measure[] accepts options for XMP and EXIF load, $.xmp(true) and $.exif(true). Incompatible change: EXIF is no longer loaded by default as it is resource intensive.

Method for converting numbers from one base to another ^math:convert[] now supports arbitrary precision, it is possible to set your own alphabet, bases greater than 16 are now supported.

Methods for converting to base64 and back accept options $.wrap(false) to remove line breaks, $.url-safe(true) to use a modified alphabet (instead of “+” and “/” use “-” and “_”).

Method ^memory:auto-compact(N) is added to enable automatic garbage collection mode.

Method ^table.rename[column name from; column name to] is added to rename a column or multiple columns.

With the option $.http_version[2] you can tell curl protocol to use when connecting to a site.

Method ^file:copy[] accepts option $.append(true) to append a file to the end of another file.

Method ^[key;value](bool-condition)[options] is added (similar to ^[]) and method ^hash.reverse[] is added, which returns a hash with elements in reverse order.

^table.hash[] now supports unnamed tables, unnamed columns are not ignored.

The method for getting the date at beginning of the day ^date::today(N) accepts an optional parameter to shift by an arbitrary number days.

Method ^math:uuid[] accepts options $.lower(true) and $.solid(true) to get the GUID in lowercase and to exclude “-” from the result.

The ability to sequentially connect to several servers (if the first ones are unavailable) is implemented in the mysql driver, you can list servers in connection string, mysql://user:password@host1,host2,.../database.

Connection options config_file and config_group are added to the mysql driver for my.cnf load, multi_statements has been implemented.

As was done a long ago for hash, a whitespace string is now considered a valid argument for a table parameter, equivalent to an empty table.

When parser is used with fcgiwrap, fewer environment variables are required.

For large files $response:download[ $.file[] ] is now several times faster, partial file downloads (Range Requests) are processed correctly.

Method ^use[file] can be called with the $.main(true) option to load auto.p files from web server root to the directory with the file.

In the config method @conf[] you can set $.LOCALS(true) to make all variables local by default.

^xdoc::create[] supports parsing of very large files (using XML_PARSE_HUGE mode).

Exceptions in SQL are unified, now they all show the query that led to an error.

Diagnostics about ^curl:load[] and ^file::load[] methods errors is improved.

Libraries in use are updated: garbage collection gc (8.0.4), regular expressions pcre (8.43), xml (2.9.9), xslt (1.1.34).

Testing coverage of the parser source code has significantly increased.

Incoming emails parsing (-m command line option) supports gmime library version 3.X.

A number of bugs were fixed:

In 32-bit mode, parser now works correctly with files larger than 4Gb.

Looping in recursive class inheritance when using @autouse[] fixed.

Long e-mail headers are now split into multiple lines.

In Windows version the -f and -d methods now work correctly with Russian filenames in UTF-8.

In the Windows version, the error of moving directories ending with / has been fixed.

Assigning $result as the last action in the method is no longer failing to define the use of $result.

The calls ^return{code} and ^return(expre+ssion) work correctly.

The message length in $exception.comment is not limited to 1024 characters.

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