Язык AML

  «Мой профиль»  

Уважаемые Посетители!

Это моя первая попытка создания подобного редактора. Энтузиазм был велик, творческий порыв подогревался намечавшимся неплохим заказом. К сожалению, сроки прошли, заказчик подвел... А вот программа осталась!

Alex_soldier
(alex_soldier@mail.ru)
Введение Версии Примеры Скачать Мнения

СПЕЦИФИКАЦИЯ AML 1.0

Программный продукт AML-редактор работает с двумя типами файлов. Это проектные файлы *.aml (которые и подвергаются дальнейшей компиляции), а также обычные текстовые файлы *.txt (которые обычно содержат только отдельные фрагменты кода страниц WEB-ресурса). Проектные файлы содержат директивы, задающие имена конечных HTML-файлов, и вставки, формирующие их структуру. Текстовые же файлы обычно содержат только фрагмент HTML-кода, а также вызовы вставок из других текстовых файлов. Иерархия вызовов не ограничена по количеству уровней вложенности.

По синтаксису, AML представляет из себя некий гибрид двух других языков. При записи любых тегов действуют правила HTML (имя тега, атрибуты, их значения), а ключевые слова во многом заимствованы из PASCAL. Теги обрамляются фигурными скобками. Внутри тега через пробел перечисляются его атрибуты. Все заносимые в них значения обязательно должы быть в кавычках!


Список поддерживаемых тегов:

Тег EXEC - задает параметры компиляции
Атрибут TARGET - указывает имя конечного файла (*.htm)
Атрибут TITLE - просто комментарий к данному тегу (рекомендую)

Образец:
{exec target="news/index.html" title="Архив новостей"}


Тег USE - вставка указанного файла в текущую позицию
Атрибут SRC - указывает имя включаемого файла
Атрибут TITLE - просто комментарий к данному тегу (рекомендую)

Образец:
{use src="head.txt" title="Стандартное начало страницы"}


Тег VAR - использование переменной
Атрибут NAME - задает имя переменной (пока только цифры от 0 до 9)
Атрибут VALUE - присваиваемое значение (почти любая строка символов)
Атрибут ACTION - действие (пока только WRITE - напечатать значение)
Атрибут TITLE - просто комментарий к данному тегу (рекомендую)

Образец 1:
{var name="0" value="Главная" title="Присвоить значение"}

Образец 2:
{var name="0" action="write" title="Напечатать значение в этом месте"}


Тег COMMENT - строка-коммментарий (на него имею большие виды)
Атрибут TITLE - комментарий к текущей позиции файла

Образец:
{comment title="Линия границы раздела"}


Правила синтаксиса:

1. Значение атрибутов обязательно заключаются в двойные кавычки
2. Ключевые слова пишутся только маленькими буквами (см. образцы)
3. Неслужебная информация из проектного файла компилируется в HTML без изменений
4. Порядок перечисления атрибутов в теге - свободный
5. Чтобы закомментировать тег, надо поставить в его начале две фигурные скобки {{


Плюсы:

  • Первая полностью автоматическая реализация
    До этого мне приходилось выполнять правки вручную. Править один и тот же код в разных файлах десятки раз. С появлением программы AML время цикла внесения изменений резко сократилось.

  • Многопроходный поиск и обработка AML-тегов
    Программа просматривает текст проектного файла последовательно много раз, пока не будут выявлены и выполнены все AML-теги. Поэтому в конечном HTML-документе вы никогда не увидите "мусора" (остатков исходного кода).

  • Неограниченная вложенность фрагментов кода (послойный обход дерева иерархий)
    Предыдущая особенность обуславливает полное отсутствие ограничений на количество уровней вложенности файлов-вставок друг в друга. Просмотр файла продолжается циклически до последней AML-директивы.

  • Проверка ошибок: парность тегов и кавычек
    Чтобы не пропустить "мусор", в программу встроена проверка четности фигурных скобок (с контролем корректной вложенности) и двойных кавычек. Теперь и теги и параметры должны записываться строго по спецификации!


Минусы:

  • Не определяет текущую рабочую папку
    К сожалению, выявился побочный эффект - программа запоминает последний открытый проект и при следующем запуске открывает ту же папку. Это плюс, если у вас все проектные файлы лежат в одном месте, но если они в разных местах, да еще и называются иногда одинакого, то это сущее наказание!

  • Поддерживает только 1 файл в проекте
    Что делать, в пробной по сути своей версии ПО я реализовал генерацию только одного конечного HTML-файла. Соответственно директива {exec ... должна быть только одна (в самом начале).

  • Поддерживает только 10 переменных
    Количество переменных я тоже ограничил: пока это 10 штук. Впрочем, в следующих версиях AML-редактора их число с легкостью увеличится до 100 или даже более.

  • Поддерживает только фиксированные имена
    Для простоты реализации ПО имена переменный пока могут состоять только из одного символа - цифры 0...9.

  • Поддерживает только строковые переменные
    Изначально я хотел реализовать самые разные типы данныХ: символьные, числовые, логические. Времени оказалось только на реализацию значений в виде строк. В ближайшей перспективе планирую сделать поддержку целых чисел, т.к. в реализуемых проектах мне очень не хватает счетчиков.

  • Неоднозначность при изменении их значений (зависит от уровня вложенности)
    Это связано с послойным обходом дерева вложенности. Если мы печатаем переменную на i-ом уровне, а требуемое значение она получает где-то "глубже", то компилятор поросту не успевает его присвоить, и в итоге печатается предыдущее, что чревато крупными ошибками.

  • Сложность создания интерактивных меню
    Данный элемент дизайна, такой популярный и привычный, оказался вне первоначальной зоны охвата. Уже много позже я придумал, как обойти эту сложность и реализовать его имеющимися средствами.

  • Возможность некорректной обработки кода JavaScript
    Со скобками в качестве разделителей, получилась накладка - возможна путаница с внедренными программами на JavaScript. Но менять что-либо уже поздно! Так что при написании скриптов пока что придется делать пробел: { var ...

ДАЛЬНЕЙШИЕ ПЕРСПЕКТИВЫ

Как я уже говорил, пока реализована только малая часть всех замыслов. Язык все еще находится в процессе поиска и становления.
Смотрите следующую версию языка AML >>>
Основные приемы использования языка AML >>>


∙ Форумы ∙
∙ Космос ∙
∙ Игры ∙
∙ Heroes ∙
∙ WEB ∙
∙ AML ∙
∙ Delphi ∙
© Copyright 1998 – 2009 by Alex_soldier
Сайт сделан по технологии AML

РАЗДЕЛЫ САЙТА

Главная страница Мира Идей
Лаборатория WEB-мастера
Уголок Программиста
Игровая Зона
Статьи о Космосе и Вселенной

РАССЫЛКИ САЙТА
(Content.Mail.Ru)

Обзор интересных рассылок

Web-мастерство для каждого

Космос: Новости Вселенной

Чего нам не хватает в играх?

Heroes: только Новые Идеи

HTML, CSS, JS в примерах

Самые-самые убойные
анекдоты сети




Получить архивы на e-mail (RAR ~ 2 Мб)