Start to parse type annos
This commit is contained in:
parent
d034a99ac1
commit
9e898d86b3
@ -222,19 +222,26 @@ fn expression_kind(text: &str) -> ParseResult<ExpressionKind> {
|
|||||||
context("Expression kind", precedence_expr)(text)
|
context("Expression kind", precedence_expr)(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
fn type_anno(text: &str) -> ParseResult<TypeIdentifier> {
|
fn type_anno(text: &str) -> ParseResult<TypeIdentifier> {
|
||||||
|
use nom::character::complete::char;
|
||||||
|
preceded(ws(char(':')), ws(type_name))(text)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn type_name(text: &str) -> ParseResult<TypeIdentifier> {
|
||||||
|
//TODO incomplete
|
||||||
|
let (text, name) = identifier(text)?;
|
||||||
|
let id = TypeIdentifier::Singleton(TypeSingletonName { name, params: vec![] });
|
||||||
|
Ok((text, id))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn expression(text: &str) -> ParseResult<Expression> {
|
fn expression(text: &str) -> ParseResult<Expression> {
|
||||||
let (rest, (kind, type_anno)) = pair(expression_kind, type_anno)(text)?;
|
let (rest, (kind, type_anno)) = pair(expression_kind, opt(type_anno))(text)?;
|
||||||
Ok((rest, Expression::with_anno(ItemId::new(0), kind, type_anno)))
|
let expr = Expression { id: ItemId::new(0), kind, type_anno };
|
||||||
|
Ok((rest, expr))
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
pub fn perform_parsing(input: &str) -> Result<String, String> {
|
pub fn perform_parsing(input: &str) -> Result<String, String> {
|
||||||
let output = match expression_kind(input) {
|
let output = match expression(input) {
|
||||||
Ok((rest, ast)) => format!("{:?} (rest: {})", ast, rest),
|
Ok((rest, ast)) => format!("{:?} (rest: {})", ast, rest),
|
||||||
Err(nom::Err::Incomplete(needed)) => format!("Incomplete: {:?}" ,needed),
|
Err(nom::Err::Incomplete(needed)) => format!("Incomplete: {:?}" ,needed),
|
||||||
Err(nom::Err::Error(verbose_error) | nom::Err::Failure(verbose_error)) => {
|
Err(nom::Err::Error(verbose_error) | nom::Err::Failure(verbose_error)) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user