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. |