Блог программиста

Цель: пассивный доход 100 тыс. руб. в мес.

Задачи:

  1. Разработка языка Cj
  2. ...
  3. ...


Также в блоге: изучаем и разрабатываем что-то новое, делимся опытом.

Подписывайтесь:
Cj - язык программирования

Новый язык программирования, для разработки сайтов и приложений, подробнее...


Спецификация:

  1. Комментарии
  2. Типы данных, переменные, функции
  3. ...

Cj. Двухпроходный парсер

Решили реализовать двухпроходный парсер. Что это такое и зачем это надо? Читайте далее...

Рассмотрим пример №10 на языке Cj (ссылка на Гитхаб: https://github.com/sitev/cj/tree/master/examples/10_webapp_shop). А конкретнее, файл проектов shop.pcj:

project = Project {
	sources: [ "shop.cj" ],
	includes: [],
	namespace: "cms",
	generator: CppGen
}

Итак, мы указываем список файлов проекта в sources.

Концеция языка Cj отказывается от подключения файлов в исходниках, такой конструкции #include "file.h" не будет. Если файл находится в проекте (то есть в списке sources), то каждый файл проекта должен знать о информации, расположенной в других файлах проекта.

В языке С++ могут применяются прототипы функций:

void func2();

void func1() {
	...
	func2();
	...
}

void func2() {
	...
}

или прототипы классов:

class Class2;

class Class1 {
	...
	Class2 *c2;
	...
};

clas Class2 {
	...
};

В языке Cj мы идём по пути отказа от прототипов.

В языке Cj не будет ни инклудов, ни прототипов. Круто! Ура! Давно бы так! ))

Для этого напишем двухпроходный парсер. Как он будет работать?

Всё просто.

Первым проходом мы собирает всю возможную информацию. Если парсер не смог собрать полную картину, запускаем второй проход. Этим проходом мы уже должны получить полную картину. Если это не так - значит ошибка.

Сейчас сосредоточимся на реализации двухпроходного парсера. Пока данная задача не будет реализована, что-то дальше каким-то образом развивать Cj имеет смысла.


Отправить комментарий
Контакты
vk.com/sitev_ru
Skype: sitev.ru
E-mail: mike@sitev.ru
github.com/sitev

Рейтинг@Mail.ru

Besucherzahler
счетчик посещений