pratt-parser v10.0.2
pratt-parser
Pratt Parser
Based on Top Down Operator Precedence and Douglas Crockford TDOP
import { Parser, WhiteSpaceToken, NumberToken } from "pratt-parser";
function Value(value) {
return Object.create(null, {
value: {
value: value
}
});
}
const myGrammar = new Parser({
tokens: [WhiteSpaceToken, NumberToken],
prefix: {
"(": {
nud(grammar) {
const e = grammar.expression(0);
grammar.advance(")");
return e;
}
}
},
infix: {
")": {},
"+": {
precedence: 50,
combine: (left, right) => Value(left.value + right.value)
},
"-": {
precedence: 50,
combine: (left, right) => Value(left.value - right.value)
},
"*": {
precedence: 60,
combine: (left, right) => Value(left.value * right.value)
},
"/": {
precedence: 60,
combine: (left, right) => Value(left.value / right.value)
}
}
});
console.log(myGrammar.parse("(1 + (1 + 4 * 3)) * (2 + 1)").value);
API
Table of Contents
ParsePosition
Type: Object
Properties
Token
Type: Object
Properties
RootToken
Base object for all tokens
parseString
Parses from chunk of PrasePosition and delivers next token Modifies ParsePosition so that it points behind the detected token.
Parameters
Returns Token
WhiteSpaceToken
skip white space
LineCommentToken
skips until end of line
EOFToken
Token representing 'end of file'
Parser
Creates a grammar for later parsing
Parameters
grammar
anyoptions
Object
error
Forwards error to the tokenizer
Parameters
args
...any
Returns Object error
parse
Parses the input and delivers the outermoost expression.
Parameters
Returns Object evaluated input
Tokenizer
Creates a tokenizer for later parsing.
Parameters
grammar
Object definition of the grammar with operators...
tokens
delivers tokens from the input.
Parameters
chunk
string the input to be processedcontext
Object additional info to be used by the actual token types
error
Parameters
Returns Object error
install
With npm do:
npm install pratt-parser
license
BSD-2-Clause
22 days ago
22 days ago
2 months ago
11 months ago
11 months ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago