JSON-parser — це інструмент для синтаксичного аналізу (парсингу) JSON файлів. Цей парсер забезпечує ефективну обробку вхідних даних, дозволяючи розбирати JSON структури та використовувати результати парсингу у різних додатках.
JSON-parser використовує бібліотеку Pest для визначення граматики та здійснення синтаксичного аналізу. Основні компоненти парсера включають:
- Граматика (grammar.pest): Описує правила синтаксису JSON, які парсер використовує для розбору вхідних даних.
- Основні файли:
lib.rs
: Містить логіку парсера та визначення граматики.main.rs
: Реалізує CLI інтерфейс для взаємодії з парсером.grammar.pest
: Файл граматики, що описує правила синтаксису JSON.
Парсер реалізований за допомогою Pest та використовує визначені граматичні правила для аналізу вхідних JSON даних. Основні кроки парсингу включають:
- Визначення граматики: Правила граматики описані у файлі
grammar.pest
. - Парсинг вхідних даних: Використовуючи визначені правила, парсер аналізує вхідний рядок JSON.
- Обробка результатів: Результати парсингу можуть бути використані для подальшої обробки або аналізу.
JSON-parser здатний аналізувати різні структури даних JSON, включаючи:
- Об'єкти: Наприклад,
{}
,{ "key": "value" }
. - Масиви: Наприклад,
[]
,[1, 2, 3]
. - Рядки: Наприклад,
"Hello, World!"
. - Числа: Цілі та дробові числа, як
123
,-45.67
. - Булеві значення:
true
,false
. - Null:
null
.
Нижче представлена спрощена діаграма граматики JSON, яку використовує JSON-parser:
JSON → VALUE
VALUE → OBJECT | ARRAY | STRING | NUMBER | TRUE | FALSE | NULL
OBJECT → "{" MEMBERS? "}"
MEMBERS → PAIR ("," PAIR)*
PAIR → STRING ":" VALUE
ARRAY → "[" ELEMENTS? "]"
ELEMENTS → VALUE ("," VALUE)*
STRING → "\"" (ESCAPED_CHAR | NON_ESCAPED_CHAR)* "\""
ESCAPED_CHAR→ "\\" ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t")
NON_ESCAPED_CHAR → !( "\"" | "\\" ) ANY
NUMBER → "-"? ASCII_DIGIT+ ("." ASCII_DIGIT+)?
TRUE → "true"
FALSE → "false"
NULL → "null"
Щоб встановити та запустити JSON-parser, виконайте наступні кроки:
-
Клонування репозиторію:
git clone https://github.com/AndreHordd/JSON-parser.git cd JSON-parser
-
Встановлення залежностей:
Переконайтеся, що у вас встановлено Rust.
cargo build
JSON-parser надає інтерфейс командного рядка (CLI) для парсингу JSON файлів та виконання різних команд.
-
Парсинг JSON файлу:
cargo run -- path/to/file.json
Приклад:
cargo run -- sample.json
-
Показати інформацію про авторів:
cargo run -- authors
-
Показати довідку:
cargo run -- --help
use anyhow::anyhow;
use pest::Parser;
use JSON_parser::*;
fn main() -> anyhow::Result<()> {
let input = "{ \"key\": \"value\" }";
let parsed = JSONParser::parse_json(input)?
.next()
.ok_or_else(|| anyhow!("Не вдалося розпарсити JSON"))?;
println!("Parsed successfully: {:#?}", parsed);
Ok(())
}
Проект включає детальні юніт-тести для перевірки коректності парсера. Тести розміщені у файлі tests/grammar_tests.rs
та покривають кожне граматичне правило.
Для запуску тестів виконайте:
cargo test
Автор: Гордашко Андрій