mini-c-parser 0.1.4

minimal C language lexer & parser & executer from scratch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use super::token::DynParser;
use super::token::Token;
use rusty_parser as rp;

use rp::IntoParser;

pub fn identifier() -> DynParser {
    let digit = ('0'..='9').void();
    let alpha = rp::or!('a'..='z', 'A'..='Z').void();
    let identifier = rp::seq!(
        rp::or!(alpha, '_'.void()),
        rp::or!(alpha, digit, '_'.void()).repeat(0..)
    )
    .string();

    DynParser::new(identifier.map(|s: String| Token::Identifier(s)))
}