Links Notation parser for JavaScript
npm install links-notationРеализация парсера протокола Lino для JavaScript с использованием Bun и
генератора парсеров Peggy.js.
``bash`
cd js
bun install
`bash`
cd js
npm install
Компиляция грамматики Peggy.js:
`bash`
bun run build:grammar
Сборка проекта:
`bash`
bun run build
Запуск тестов:
`bash`
bun test
Режим наблюдения:
`bash`
bun test --watch
`javascript
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());
});
`
`javascript
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);
`
`javascriptродитель
// Обработка вложенных структур
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());
`
`lino`
папа (любитМаму: любит маму)
сын любитМаму
дочь любитМаму
все (любят маму)
`lino`
папа имеет машину
мама имеет дом
(папа и мама) счастливы
`lino`
(нотацияСвязей: нотация связей)
(Это тоже нотацияСвязей)
(нотацияСвязей поддерживает (неограниченное количество (ссылок) в каждой связи))
`lino`
родитель
ребенок1
ребенок2
внук1
внук2
#### 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