various work
This commit is contained in:
parent
a2d5f380a8
commit
b4b1a0cf63
@ -3,10 +3,10 @@ use nom::{
|
|||||||
branch::alt,
|
branch::alt,
|
||||||
bytes::complete::{take_till, tag},
|
bytes::complete::{take_till, tag},
|
||||||
character::complete::{alpha1, alphanumeric0, not_line_ending,none_of, char, one_of, space0, space1, multispace0, line_ending},
|
character::complete::{alpha1, alphanumeric0, not_line_ending,none_of, char, one_of, space0, space1, multispace0, line_ending},
|
||||||
combinator::{peek, not, value, map, recognize},
|
combinator::{opt, peek, not, value, map, recognize},
|
||||||
error::{context, VerboseError, ParseError},
|
error::{context, VerboseError, ParseError},
|
||||||
multi::{fold_many1, many1, many0, separated_list1, separated_list0},
|
multi::{fold_many1, many1, many0, separated_list1, separated_list0},
|
||||||
sequence::{tuple, preceded},
|
sequence::{pair, tuple, preceded},
|
||||||
IResult, Parser,
|
IResult, Parser,
|
||||||
};
|
};
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
@ -90,13 +90,37 @@ fn block(input: &str) -> ParseResult<Block> {
|
|||||||
|
|
||||||
fn statement(input: &str) -> ParseResult<Statement> {
|
fn statement(input: &str) -> ParseResult<Statement> {
|
||||||
context("Parsing-statement",
|
context("Parsing-statement",
|
||||||
map(expression_kind, |kind| Statement {
|
map(expression, |expr| Statement {
|
||||||
id: Default::default(),
|
id: Default::default(),
|
||||||
location: Default::default(),
|
location: Default::default(),
|
||||||
kind: StatementKind::Expression(Expression::new(Default::default(), kind)),
|
kind: StatementKind::Expression(expr),
|
||||||
}))(input)
|
}))(input)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn expression(input: &str) -> ParseResult<Expression> {
|
||||||
|
map(pair(expression_kind, opt(type_anno)), |(kind, maybe_anno)| {
|
||||||
|
Expression::new(Default::default(), kind)
|
||||||
|
})(input)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn type_anno(input: &str) -> ParseResult<TypeIdentifier> {
|
||||||
|
preceded(kw(":"), type_identifier)(input)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn type_identifier(input: &str) -> ParseResult<TypeIdentifier> {
|
||||||
|
/*
|
||||||
|
alt((
|
||||||
|
tuple((kw("("), separated_list0(kw(","), type_identifier), kw(")"))),
|
||||||
|
type_singleton_name
|
||||||
|
))(input)
|
||||||
|
*/
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn type_singleton_name(input: &str) -> ParseResult<TypeSingletonName> {
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn expression_kind(input: &str) -> ParseResult<ExpressionKind> {
|
pub fn expression_kind(input: &str) -> ParseResult<ExpressionKind> {
|
||||||
context("expression-kind", primary_expr)(input)
|
context("expression-kind", primary_expr)(input)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user