Історія
У середині 1980-х в комп'ютерній лабораторії компанії Ericsson досліджували можливість застосування існуючих на той момент мов програмування для програмного забезпечення телекомунікаційних систем. Джо Армстронг (Joe Armstrong), Роберт Вірдінг (Robert Virding) і Майк Вільямс (Mike Williams) під керівництвом Бьярне Деккера (Bjarne Däcker), написавши прототипи програм на різних мовах, прийшли до висновку, що жоден з цих мов не мав повного набору можливостей, необхідних в області телекомунікаційних систем. В результаті був створений новий мову програмування - Erlang.
Вплив на Erlang надали ML, Міранда, Ада, Модула-2, CHILL, Пролог. Крім того, на спосіб оновлення програмного забезпечення вплинув Smalltalk і використані Ericsson пропрієтарні мови EriPascal і PLEX.
У грудні 1995 проект AXE-N в Ellemtel зі створення нового маршрутизатора (як обладнання, так і системного програмного забезпечення на C ++) зазнав невдачі. В результаті реорганізації проекту вдалося, використавши розроблене обладнання та мову програмування Erlang, почати роботи над ATM-маршрутизаторами серії AXD. Для робіт по Erlang було створено виробничий підрозділ під назвою OTP (Open Telecom Platform) .
В 2006 році спільними зусиллями команди OTP з Ericsson і команди HiPE була випущена перша версія Erlang з підтримкою SMP. Незабаром після цього вийшла перша майже за десятиліття велика монографія по Erlang: «Programming Erlang» Джо Армстронга, після чого багато розробників «відкрили» для себе Erlang / OTP, і мова стала набирати популярність .
Термінальні символи
Термінальні символи та їх класи наведені в табл. 1.
Таблиця 1.Термінальні символи
-
Класи лексем
Термінальні символи
кількість
Операції арифметичні
‘+’, ‘-‘, ‘*’ ,‘/’, ‘div’, ‘rem’
6
Операції відношення
‘==’, ‘/=’, ‘=<’, ‘>=’, ‘=/=’, ‘=:=’, ‘> ‘, ’<’
8
Операції логічні
‘not’,’end’,’andalso’,’or’,’orelse’, ‘xor’
6
Роздільники списків та операторів
‘|’, ‘,’, ‘.’, ‘;’
4
Зарезервовані слова та символи, з яких складаються оператори
‘=’, ‘->’, ‘<-’, ‘=>’, ‘||’
‘after’, ‘ band’, ‘begin’, ‘bnot’, ‘bor’, ‘bsl’, ‘bsr’, ‘bxor’, ‘case’, ‘catch’, ‘cond’, ‘if’, ‘let’, ‘of’, ‘query’, ‘receive’, ‘rem’, ‘try’,‘when’ , ‘ok’
25
Зарезервовані слова та символи для опису даних, процедур
‘{’, ‘}’, ‘[’, ‘]’, ‘(’, ‘)’, ‘#’, ‘ ” ’, ‘ _ ’, ’<<’ , ’>>’ , ‘fun’
12
Правила побудови констант та ідентифікаторів
Ідентифікатор(змінна) : [A-Z _][A-Z a-z 0-9 @ _]*
Атом: ([a-z][ A-Z a-z 0-9 @ _]* | ’[A-Z a-z 0-9 @ _]+’)
Числова константа(Ціле число): [1-9][0-9]*
Числова константа(Дробове число): [0-9]+.[0-9]+
Числова константа(з плаваючою комою): [1-9][0-9]*.[0-9]+e-[1-9][0-9]*
Строкова константа: “[^“]+”
