Crate clex_gen

Source
Expand description

Clex - Custom Language Generator

This module provides functionality to work with a custom language generator designed for creating test patterns. It includes methods for tokenizing, parsing, and generating code based on the custom language specification.

§Main Modules

  • clex_language: Module containing lexer, parser, generator, and abstract syntax tree (AST) for the custom language clex.

§Usage

To use the clex_gen module, add it as a dependency in your Cargo.toml:

[dependencies]
clex_gen = "0.1"

Import the module in your Rust code:

use clex_gen::{get_tokens, get_ast, generator};

§Example

Here’s a complete example demonstrating how to use the functions provided by the clex module:

use clex_gen::{get_tokens, get_ast, generator};
// Get tokens from custom language
let tokens = get_tokens("(N) (?:N){\\1}".to_string()).unwrap();
println!("Tokens: {:?}", tokens);

// Get the Abstract Syntax Tree (AST)
let ast = get_ast("(N) (?:N){\\1}".to_string()).unwrap();
println!("AST: {:?}", ast);

// Generate code based on the custom language specification
let generated_code = generator("(N[1,10]) (?:N){\\1}".to_string()).unwrap();
println!("Generated Code: {}", generated_code);

§Modules

This module consists of the following sub-modules:

  • lexer: Responsible for tokenizing the input language.
  • parser: Handles the parsing of tokens to generate the Abstract Syntax Tree (AST).
  • generator: Generates test patterns based on the parsed language specifications.

Modules§

clex_language
The clex_language module encompasses components related to the custom language generator, known as clex. It includes modules for Abstract Syntax Tree (AST) definition, lexer, parser, and the generator itself. The clex language is designed for defining input patterns and specifications for code testing and analysis.

Functions§

generator
Generate code based on the custom language specification.
get_ast
Get the Abstract Syntax Tree (AST) from the custom language parser.
get_tokens
Get tokens from the custom language lexer.