Skip to content

Commit cb3b5b8

Browse files
committed
move precedence parsing to nom-language
1 parent f1abba6 commit cb3b5b8

File tree

5 files changed

+8
-15
lines changed

5 files changed

+8
-15
lines changed

nom-language/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
//! at language parsing.
77
88
pub mod error;
9+
pub mod precedence;

src/precedence/mod.rs nom-language/src/precedence/mod.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
//! Combinators to parse expressions with operator precedence.
2-
#![cfg(feature = "alloc")]
3-
#![cfg_attr(feature = "docsrs", doc(cfg(feature = "alloc")))]
42
53
#[cfg(test)]
64
mod tests;
75

8-
use crate::error::{ErrorKind, FromExternalError, ParseError};
9-
use crate::lib::std::vec::Vec;
10-
use crate::{Err, IResult, Parser};
6+
use nom::error::{ErrorKind, FromExternalError, ParseError};
7+
use nom::{Err, IResult, Parser};
118

129
/// An unary operator.
1310
pub struct Unary<V, Q: Ord + Copy> {
@@ -203,7 +200,6 @@ where
203200
/// * It then reads the remaining input and evaluates the increment next in order to preserve its
204201
/// position in the expression \
205202
/// `((-a)++)**b`.
206-
#[cfg_attr(feature = "docsrs", doc(cfg(feature = "alloc")))]
207203
pub fn precedence<I, O, E, E2, F, G, H1, H3, H2, P1, P2, P3, Q>(
208204
mut prefix: H1,
209205
mut postfix: H2,

src/precedence/tests.rs nom-language/src/precedence/tests.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
use crate::precedence::{binary_op, unary_op, Assoc, Operation};
2-
use crate::{
2+
use nom::{
33
branch::alt,
44
bytes::complete::tag,
55
character::complete::digit1,
66
combinator::{fail, map_res},
77
error::ErrorKind,
8-
internal::{Err, IResult},
8+
error_node_position, error_position,
99
sequence::delimited,
10+
Err, IResult,
1011
};
1112

12-
#[cfg(feature = "alloc")]
1313
use crate::precedence::precedence;
1414

15-
#[cfg(feature = "alloc")]
1615
fn parser(i: &str) -> IResult<&str, i64> {
1716
precedence(
1817
unary_op(1, tag("-")),
@@ -42,7 +41,6 @@ fn parser(i: &str) -> IResult<&str, i64> {
4241
}
4342

4443
#[test]
45-
#[cfg(feature = "alloc")]
4644
fn precedence_test() {
4745
assert_eq!(parser("3"), Ok(("", 3)));
4846
assert_eq!(parser("-3"), Ok(("", -3)));

src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -451,8 +451,6 @@ pub mod bytes;
451451

452452
pub mod character;
453453

454-
pub mod precedence;
455-
456454
mod str;
457455

458456
pub mod number;

tests/expression_ast.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ use nom::{
44
character::complete::{alphanumeric1 as alphanumeric, digit1 as digit},
55
combinator::{map, map_res},
66
multi::separated_list0,
7-
precedence::{binary_op, precedence, unary_op, Assoc, Operation},
87
sequence::delimited,
98
IResult, Parser,
109
};
10+
use nom_language::precedence::{binary_op, precedence, unary_op, Assoc, Operation};
1111

1212
// Elements of the abstract syntax tree (ast) that represents an expression.
1313
#[derive(Debug)]
@@ -119,7 +119,7 @@ fn expression(i: &str) -> IResult<&str, Expr> {
119119
delimited(tag("("), expression, tag(")")),
120120
)),
121121
|op: Operation<PrefixOp, PostfixOp, BinaryOp, Expr>| -> Result<Expr, ()> {
122-
use nom::precedence::Operation::*;
122+
use nom_language::precedence::Operation::*;
123123
use BinaryOp::*;
124124
use PostfixOp::*;
125125
use PrefixOp::*;

0 commit comments

Comments
 (0)