1 unstable release

0.1.0 Jul 3, 2022

#40 in #logo

MIT license

34KB
918 lines

C source lexer in Rust

github crate docs MIT CI

This is a fast and robust C source lexer in Rust. For example it can be used to extract some metadata from sources like comments or strings.

Library usage

use clex::{Lexer, Token};

let src = r#"
static const char *s = "world";

int main() {
  // Hello world
  printf("Hello %s\n", s);

  return 0;
}
"#;

for lexeme in Lexer::from(src) {
  match lexeme.token {
    Token::Comment => {
      println!("comment: {:?}", lexeme.comment().unwrap());
    }
    Token::String => {
      println!("string: {:?}", lexeme.string().unwrap());
    }
    _ => {}
  }
}

This example prints the following:

string: "world"
comment: "Hello world"
string: "Hello %s\n"

Command-line usage

Currently command-line tool is used to test this library. You can use it to analyze variuos C-sources and extract data.

Dependencies

~3.5MB
~52K SLoC