parser
Parser 3 — simple and convenient object-oriented language which allows creating good sites in short time.
parser bird
Download Parser 3:    Windows    Linux    Mac OS X    FreeBSD
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 3 is for?
PHP is a programming language requiring appropriate training. Parser 3 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 10, 2025

Version 3.5.1 released

The new ^syslog[ident;message[;level]] operator has been added that writes a message to syslog.

December 29, 2024

Version 3.5.0 released

In addition to the built-in classes table and hash, the array class has been added, designed for working with regular or sparse arrays and compatible with hashes using numeric keys. A new syntax $a[v1;v2;v3...] has been added for initializing arrays.

Support for the syntax $a.(expression)[value], $a.(expression), and ^v.(expression)[args] has been added to simplify the use of expressions when working with arrays and hashes.

Support for named parameters in methods has been added using the syntax @method[arg;.named_arg;.named_arg2].

The method ^hash.rename[from;to] has been added for renaming hash keys.

The new method ^inet:hostname[] returns the current host name.

The SQLite driver has been updated with the regexp function, implemented using a simplified regular expression library.

In SQL drivers and curl, the ability to specify multiple client libraries separated by commas has been added.

The method ^break[] is now supported in ^hash.select[] and ^table.select[] for interrupting selection operations.

Added the ability to inherit the @auto method when it is declared with two parameters.

Using the option $.order[self|arg], you can set the order of elements in ^a.intersection[$b].

The new method ^math:uuid7[] supports the UUID version 7 standard.

The date class has been updated with the methods ^date.double[] and ^date.int[].

Support for PCRE2, the new version of the regular expression library, has been implemented.

The method ^math:atan2[a;b] has been added for calculating the four-quadrant arctangent.

When setting the response body, the filename* field has been added to the Content-Disposition header to support file names in UTF-8 encoding.

The new field $request:path returns the decoded path from the request URI.

Single quote escaping has been added to the HTML escaping.

Access to the environment variables of the parser process has been implemented in web server mode.

The new method ^reflection:class_alias[] allows creating class aliases.

In ^string.split[], the ’a’ option has been added for converting a string to an array.

The new method ^table.cells[] returns an array of cells of the current table row.

The new method ^table.array[] converts the table into an array.

The script execution method accepts an array of arguments ^file::exec[cmd;;$array].

The $json:array[array|hash] field sets the method of processing JSON arrays during JSON parsing; by default, they are converted into arrays.

The new option $.array[compact|array|object] of the ^json:string[] method sets the format in which arrays are converted to JSON.

A new method ^hash.set[first or last][value] or ^hash.set(index)[value] has been added for setting values of hash elements by index.

The $form:elements field has been added, providing access to all form elements, including files, as arrays.

The command line parameter -l has been added to specify a log file, and the $status:mode field has been added for setting the parser’s operating mode.

Support for HMAC in the form of a file and returning the result in the form of a file has been added to the ^math:digest[] method.

The ability to pass file objects to path handling methods, such as ^file:dirname[], has been added.

Support for file read locks under Windows has been implemented.

The performance of the $result variable has been improved.

A number of bugs have been fixed:

Incorrect handling of constructs like $[a]{ $b } has been fixed.

Issues with generating the column list in multi-SQL query transmission mode have been resolved.

The reception of emails with Windows line endings has been fixed.

Incompatibility issues with number handling in the libxml library on Windows x86 have been fixed.

The retrieval of the return status of ^file::exec[] when called in HTTP server mode has been fixed.

The ability to pass a hash as a file parameter has been removed.

The ability to use numbers as hashes has been removed.

The impact of 80-bit operations when working with double types, which led to incorrect rounding during subtraction, has been eliminated.

Handling of overflow when converting double to int has been added.

The strings “+” and “-” are no longer considered valid numbers.

The “parser already configured” error when launching the parser from a directory with the configuration file auto.p has been fixed.

A possible infinite recursion in @GET[mode] has been resolved.

The method ^json:string[..; $.date[unix-timestamp]] has been fixed to handle large dates.

The current table row is restored after exceptions in ^t.menu{}.

The error httpd.write: error sending response: Success (0) in web server mode has been fixed.

The initialization error in methods with an arbitrary number of parameters when they were not specified has been 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