Skip to content

AndreHordd/JSON-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JSON-parser

Опис проекту

JSON-parser — це інструмент для синтаксичного аналізу (парсингу) JSON файлів. Цей парсер забезпечує ефективну обробку вхідних даних, дозволяючи розбирати JSON структури та використовувати результати парсингу у різних додатках.

Технічний опис

Архітектура парсера

JSON-parser використовує бібліотеку Pest для визначення граматики та здійснення синтаксичного аналізу. Основні компоненти парсера включають:

  • Граматика (grammar.pest): Описує правила синтаксису JSON, які парсер використовує для розбору вхідних даних.
  • Основні файли:
    • lib.rs: Містить логіку парсера та визначення граматики.
    • main.rs: Реалізує CLI інтерфейс для взаємодії з парсером.
    • grammar.pest: Файл граматики, що описує правила синтаксису JSON.

Структура парсера

Парсер реалізований за допомогою Pest та використовує визначені граматичні правила для аналізу вхідних JSON даних. Основні кроки парсингу включають:

  1. Визначення граматики: Правила граматики описані у файлі grammar.pest.
  2. Парсинг вхідних даних: Використовуючи визначені правила, парсер аналізує вхідний рядок JSON.
  3. Обробка результатів: Результати парсингу можуть бути використані для подальшої обробки або аналізу.

Синтаксичний аналіз

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, виконайте наступні кроки:

  1. Клонування репозиторію:

    git clone https://github.com/AndreHordd/JSON-parser.git
    cd JSON-parser
  2. Встановлення залежностей:

    Переконайтеся, що у вас встановлено Rust.

    cargo build

Використання

JSON-parser надає інтерфейс командного рядка (CLI) для парсингу JSON файлів та виконання різних команд.

Команди CLI

  • Парсинг 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

Автор

Автор: Гордашко Андрій

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages