layer-tl-parser 0.5.0

Parser for Telegram's Type Language (.tl) schema files
Documentation

layer-tl-parser

Parser for Telegram's TL (Type Language) schema files.

Crates.io docs.rs License: MIT OR Apache-2.0

Reads .tl schema files and produces a structured AST. Used internally by layer-tl-gen as a build-dependency - most users don't depend on this crate directly.


[!NOTE] This project is no longer maintained or supported. Its original purpose for personal SDK/APK experimentation and learning has been fulfilled.

Instead, please use ferogram, which will receive future development and updates. Development may proceed at a slower pace.

Installation

[dependencies]
layer-tl-parser = "0.5.0"

AST Types

pub struct Definition {
    pub name:     String,
    pub id:       Option<u32>,    // CRC32, may be omitted
    pub params:   Vec<Parameter>,
    pub ty:       Type,
    pub category: Category,       // Type or Function
}

pub enum ParameterType {
    Flags,
    Normal { ty: Type, flag: Option<Flag> },
    Repeated { params: Vec<Parameter> },
}

pub enum Category { Type, Function }

Usage

use layer_tl_parser::{parse_tl_file, TlIterator, tl::Category};

// Collect all definitions
let schema = std::fs::read_to_string("api.tl").unwrap();
let definitions = parse_tl_file(&schema).unwrap();

// Streaming iterator (lower memory)
for def in TlIterator::new(&schema) {
    match def.category {
        Category::Type     => { /* constructor */ }
        Category::Function => { /* RPC function */ }
    }
}

Parse errors return ParseError with the failing line. Malformed tokens stop the iterator rather than silently skipping.


Stack position

layer-tl-types
└ layer-tl-gen
  └ layer-tl-parser  <-- here

License

MIT or Apache-2.0, at your option. See LICENSE-MIT and LICENSE-APACHE.

Ankit Chaubey - github.com/ankit-chaubey