summaryrefslogtreecommitdiff
path: root/doc/features.html
blob: 7ebad19b0051fa4d904a766f011dc7a041cb945c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

<!DOCTYPE html>

<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Features - Packrat Docs</title>
    <link href="default.css" rel="stylesheet">
  </head>

  <body>


  <h2>Features</h2>

  <a href="index.html">Return to Contents</a>


  <h4>Lexing and Parsing</h4>
  <p>Combinators are provided to build both lexers and parsers. Lexing is less flexible
  as it does not need to incorporate choices, left recursion, or ambiguity.</p>

  <h4>Left Recursion</h4>
  <p>Any form of left recursive grammar will be parsed correctly, without infinite loops.</p>

  <h4>Ambiguity</h4>
  <p>All possible valid parses of the input by a constructed grammar will be followed
  and incorporated into the resulting parse graph.</p>

  <h4>Polynomial Complexity</h4>
  <p>As per the paper that this library draws most of its ideas from, the worst case complexity
  involved for both time and space should be polynomial. This has been experimentally confirmed
  but as of yet no analysis has been done to determine specifics.</p>

  <h4>Error Messages</h4>
  <p>If there is a lexer or parser error then a message will be sent with the exception that
  records what symbols were expected and where they were expected.</p>

  <h4>Piecewise Parsing</h4>
  <p>Both lexers and parsers can have their input fed to them piece by piece instead of all
  at once.</p>


  </body>
</html>