Crate combine_language [−] [src]
An extension on the combine crate which allows for easy definition of lexing parsers
Example
let env = LanguageEnv::new(LanguageDef { ident: Identifier { start: letter(), rest: alpha_num(), reserved: ["if", "then", "else", "let", "in", "type"].iter().map(|x| (*x).into()).collect() }, op: Identifier { start: satisfy(|c| "+-*/".chars().find(|x| *x == c).is_some()), rest: satisfy(|c| "+-*/".chars().find(|x| *x == c).is_some()), reserved: ["+", "-", "*", "/"].iter().map(|x| (*x).into()).collect() }, comment_start: "/*", comment_end: "*/", comment_line: "//" }); let id = env.identifier();//An identifier parser let integer = env.integer();//An integer parser let result = (id, integer).parse_state("this /* Skips comments */ 42"); assert_eq!(result, Ok(((String::from("this"), 42), "")));
Structs
| Assoc |
Struct for encompassing the associativity of an operator |
| BetweenChar |
Parses |
| Expression |
Expression parser which handles binary operators |
| Identifier |
Defines how to define an identifier (or operator) |
| LanguageDef |
A struct type which contains the necessary definitions to construct a language parser |
| LanguageEnv |
A type containing parsers for a specific language. |
| LanguageParser |
A language parser |
| Lex |
A lexing parser for a language |
| Reserved |
Parses a reserved word |
| WhiteSpace |
A whitespace parser for a language |
Enums
| Fixity |
Enumeration on fixities for the expression parser |
Functions
| expression_parser |
Constructs an expression parser out of a term parser, an operator parser and a function which combines a binary expression to new expressions. |