links-notation
v0.13.0
Published
Links Notation parser for JavaScript
Downloads
1,844
Readme
Парсер протокола Lino для JavaScript
Реализация парсера протокола Lino для JavaScript с использованием Bun и генератора парсеров Peggy.js.
Установка
Использование Bun (рекомендуется)
cd js
bun installИспользование npm
cd js
npm installСборка
Компиляция грамматики Peggy.js:
bun run build:grammarСборка проекта:
bun run buildТестирование
Запуск тестов:
bun testРежим наблюдения:
bun test --watchИспользование
Базовый парсинг
import { Parser, Link } from 'links-notation';
// Создание парсера
const parser = new Parser();
// Парсинг строки в формате Lino
const input = `папа (любитМаму: любит маму)
сын любитМаму
дочь любитМаму
все (любят маму)`;
const result = parser.parse(input);
console.log(result);
// Обращение к распарсенной структуре
result.forEach((link) => {
console.log(link.toString());
});Работа со связями
import { Link } from 'links-notation';
// Создание связей программно
const link = new Link('родитель', [new Link('ребенок1'), new Link('ребенок2')]);
console.log(link.toString()); // (родитель: ребенок1 ребенок2)
// Доступ к свойствам связи
console.log('ID:', link.id);
console.log('Значения:', link.values);Расширенное использование
// Обработка вложенных структур
const input = `родитель
ребенок1
ребенок2
внук1
внук2`;
const parsed = await parser.parse(input);
// Работа с группами
import { LinksGroup } from 'links-notation';
const group = new LinksGroup(parsed);
console.log(group.format());Примеры синтаксиса
Дуплеты (2-кортежи)
папа (любитМаму: любит маму)
сын любитМаму
дочь любитМаму
все (любят маму)Триплеты (3-кортежи)
папа имеет машину
мама имеет дом
(папа и мама) счастливыN-кортежи со ссылками
(нотацияСвязей: нотация связей)
(Это тоже нотацияСвязей)
(нотацияСвязей поддерживает (неограниченное количество (ссылок) в каждой связи))Структура с отступами
родитель
ребенок1
ребенок2
внук1
внук2Справочник API
Классы
Parser
Основной класс парсера для преобразования строк в связи.
initialize()- Инициализация парсера (асинхронно)parse(input)- Парсинг строки Lino и возвращение связей
Link
Представляет одну связь с ID и значениями.
constructor(id, values = [])- Создание новой связиtoString()- Преобразование связи в строковый форматid- Идентификатор связиvalues- Массив дочерних значений/связей
LinksGroup
Контейнер для группировки связанных связей.
constructor(links)- Создание новой группыformat()- Форматирование группы в строку
Структура проекта
src/grammar.pegjs- Определение грамматики Peggy.jssrc/Link.js- Структура данных связиsrc/LinksGroup.js- Контейнер групп связейsrc/Parser.js- Обертка парсераsrc/index.js- Главная точка входаtests/- Файлы тестов
Зависимости
- Peggy.js (5.0.6) - Генератор парсеров
- Среда выполнения Bun (разработка)
Информация о пакете
- Пакет:
links-notation - Версия: 0.1.0
- Лицензия: MIT
