Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

709 lines (686 sloc) 41.119 kB
<html>
<head>
<title>fnparse - Overview</title>
<link href="static/favicon.png" rel="icon" />
<link href="static/favicon.png" rel="shortcut icon" />
<link media="all" type="text/css" href="static/clojure.css" rel="stylesheet" />
<link media="all" type="text/css" href="static/wiki.css" rel="stylesheet" />
<link media="all" type="text/css" href="static/internal.css" rel="stylesheet" />
<!-- TODO: are we using these (from clojure.org)? If so, add the files -->
<script src="file/view/code_highlighter.js" type="text/javascript"></script>
<script src="file/view/clojure.js" type="text/javascript"></script>
<style>.menuWrapper{height: 36px;}</style>
<!--[if lte IE 6]>
<link rel="stylesheet" href="http://www.wikispaces.com/_/2009051601/s/internal_ie.css" type="text/css" />
<![endif]-->
</head>
<!--
This document was auto-generated from the source by the clojure autodoc system.
To report errors or ask questions about the overall documentation structure, formatting,
etc., contact Tom Faulhaber (google mail name: tomfaulhaber).
For errors in the documentation of a particular namespace, contact the author of that
namespace.
-->
<body>
<div id="AllContentContainer">
<div id="Header">
<a id="Logo" href="index.html"><img alt="Clojure" height="100" width="100" src="static/clojure-icon.gif" /></a>
<h1><a title="page header title" id="page-header" href="index.html">fnparse</a></h1>
</div>
<div id="leftcolumn"><div style="text-align: center;"></div>
<div class="menu">
<div class="WikiCustomNav WikiElement wiki">
<a class="wiki_link" href="index.html">Overview</a><br />
<a class="wiki_link" href="api-index.html">API Index</a><br />
<a class="wiki_link" href="#">Namespaces:</a>
<ul id="left-sidebar-list">
<li><a href="edu.arizona.fnparse-api.html" class="wiki_link">edu.arizona.fnparse</a></li>
</ul>
</div>
</div>
</div>
<div id="rightcolumn">
<div id="Content">
<div class="contentBox"><div class="innerContentBox">
<div id="content_view" class="wiki wikiPage">
<div id="right-sidebar"><div id="toc">
<h1 class="nopad">Table of Contents</h1>
<div style="margin-left: 1em;" class="toc-section">
<a href="#edu.arizona.fnparse">edu.arizona.fnparse</a>
<br />
</div>
</div>
</div>
<div id="content-tag"><h1 id="toc0">An Overview of the <span id="header-project">fnparse</span> API</h1>
<br />
<div id="project-description">A library for creating functional parsers in Clojure.</div>
<br />
<div id="namespace-entry">
<br />
<hr />
<h2 id="edu.arizona.fnparse">edu.arizona.fnparse</h2>
by <span id="author">Joshua Choi</span><br />
<a href="edu.arizona.fnparse-api.html" id="api-link">Detailed API documentation</a><br />
<pre id="namespace-docstr">[left-recur]: http://en.wikipedia.org/wiki/Left_recursion
[ll-1]: http://en.wikipedia.org/wiki/LL(1)
_FnParse 3_ is a *pair* of libraries that can create
*unambiguous parsers*.
Overview: Would FnParse be useful for you?
==========================================
_FnParse Hound_ and _FnParse Cat_ are two libraries that
can both create *unambiguous parsers*, but of slightly
different varieties.
When does one need parsers? *Any time you need to turn
text into information via a language.* Data is always
stored in "text" of *some* kind, whether it be an English
sentence, a DNA sequence, or an XML file.
FnParse can write [PEGs](http://www.en.wikipedia.org/wiki/PEG),
an easy way to write unambiguous grammars.
This means that FnParse parsers can represent languages
whose sentences always have one meaning. Examples of
ambiguous languages include Clojure, XML, HTML5, YAML,
JSON, Python, Markdown, and most other computer languages.
FnParse can indeed parse data in all those languages above.
I think. :)
How to learn FnParse
====================
TODO
Similarities between FnParse Hound and Cat
==========================================
FnParse Hound and Cat share very similar APIs. In fact, with
a couple of exceptions listed in the next section, their APIs
seem identical.
Both FnParse Hound and Cat create _rules_. Rule are
functions that eat tokens and turn them into data.
* A _token_ is a unit of text. Tokens are usually characters,
because that's easiest to do. (You might already have a
lexer, however, that turns characters into other tokens,
which FnParse parsers can use too. Just be consistent
on what kind of tokens a parser can accept.)
* A rule accepts a _state object_, which contains
a _sequence of tokens_ and a _context_, as an argument.
* A rule determines if the tokens are valid or not
according to its definition; it either _succeeds_ or
_fails_.
* When a rule succeeds, it _consumes_ some tokens (zero or more)
and calculates the data that those tokens represent. This
new data is called the _product_. The rule then
returns an object called an _answer_, which contains
both the product and the new state.
* When a rule fails, it creates an _error_ that contains
information on why the tokens were invalid for that rule.
* Rules consume tokens from the beginning of the sequence.
(FnParse Cat rules and FnParse Hound rules are *not*
the same and are *incompatible* with each other. The
same goes for Cat and Hound states and answers.)
FnParse Cat and Hound both use the same _error_ type: the
`:edu.arizona.fnparse.core/ParseError` type.
Differences between FnParse Hound and Cat
=========================================
Overview with fancy terms
-------------------------
FnParse Hound creates [Parsec]
(http://www.haskell.org/haskellwiki/Parsec)-like,
[LL(1)][ll-1] or near-LL(1) parsers.
FnParse Cat is a [packrat parser](<a href="http://en.wikipedia.org/Packrat">http://en.wikipedia.org/Packrat</a> parser).
*All* other differences stem from these two fundamental ones.
Overview with plainer language
------------------------------
FnParse Hound's parsers try to save as much memory as possible.
In general, as soon as a Hound parser consumes a token, that
token is discarded forever. This means that you can't backtrack
through your tokens if a rule fails. For some languages, you
want this kind of parser, because those languages are designed
to be able to be interpreted by looking at only one token at
a time: a lookahead of one.
FnParse Cat's parsers take up a lot of memory, but they can
quickly parse more complex parsers. In general, when a Cat parser
consumes tokens, it saves the parse result from those tokens
in a cache. This means that there's unlimited backtracking
and lookahead. In addition, Cat parsers support [left
recursion](left-recur), a very useful way of expressing rules.
You want this kind of languages for relatively complex grammars
that require a lot of backtracking.
When should you use which FnParse
---------------------------------
Many computer data languages are LL(1) or near-LL(1). You
should use _FnParse Hound_ for those. Examples include:
* [Clojure](http://www.clojure.org)
* [XML](http://www.w3.org/XML)
* [JSON](http://json.org)
* [YAML](http://yaml.org)
* [CSV](http://en.wikipedia.org/wiki/Comma-separated_values)
Many other, more complex computer programming languages
are not LL(1). Some of them involve left recursion.
* Standard mathematical expressions (like in [Google
Calculator](http://www.google.com/calculator))
* [Python](http://www.python.org)
* [Java](http://www.java.com)
* Even [Lojban](http://en.wikipedia.org/wiki/Lojban)
Detailed comparison between Hound and Cat
=========================================
You won't understand this chart until you've learned either Hound
or Cat well.
| Hound | Cat
------------------ | ---------------------- | -------------------
Better for | Potentially large data | More complex data
Backtracking[^0] | None by default[^1] | Unlimited
Caching of results | No[^2] | Yes
Greedy repetition | Yes[^3] | No[^4]
Right recursion | Yes | Yes
Left recursion | No | Yes
Context alteration | Yes[^5] | No[^6]
[^0]:
The differences in backtracking comes from the differences
between the `+` operator in Hound and Cat.
[^1]:
Backtracking in Hound rules is possible using the `lex`
rule-maker, but it should be minimized.
[^2]:
In fact, it does the opposite: it tries to prevent
*any* caching of results to reduce memory.
[^3]:
Greedy repetition in Hound is done by the `rep` function
and its friends. Of course, it can be always rewritten to use
right-recursive rules instead.
[^4]:
In Cat, you want to use left or right recursion instead.
[^5]:
In Hound, contexts can be altered in-place using the
`alter-context` rule-maker, but you should usually
prefer using custom rule-makers with `defmaker` instead,
which is just as powerful.
[^6]:
Use custom rule-makers with `defmaker` if your grammar
is context-sensitive. TODO: Python example
*[XML]: eXtensible Markup Language
*[YAML]: Yet Another Markup Language
*[JSON]: Javascript Object Notation
*[CSV]: Comma-Separated Values</pre>
Public variables and functions:
<br />
<span id="subspace"><br />Variables and functions in
<span id="name">edu.arizona.fnparse.cat</span>:
<span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/+">+</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;anything&gt;">&lt;anything&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;ascii-alphanumeric&gt;">&lt;ascii-alphanumeric&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;ascii-control&gt;">&lt;ascii-control&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;ascii-digit&gt;">&lt;ascii-digit&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;ascii-letter&gt;">&lt;ascii-letter&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;decimal-digit&gt;">&lt;decimal-digit&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;emptiness&gt;">&lt;emptiness&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;end-of-input&gt;">&lt;end-of-input&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;fetch-location&gt;">&lt;fetch-location&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;fetch-warnings&gt;">&lt;fetch-warnings&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;hexadecimal-digit&gt;">&lt;hexadecimal-digit&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;lowercase-ascii-letter&gt;">&lt;lowercase-ascii-letter&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;nothing&gt;">&lt;nothing&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/&lt;uppercase-ascii-letter&gt;">&lt;uppercase-ascii-letter&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/add-warning">add-warning</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/alter-location">alter-location</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/annotate-error">annotate-error</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/antilit">antilit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/antiset-term">antiset-term</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/antiterm">antiterm</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/antivalidate">antivalidate</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/case-insensitive-lit">case-insensitive-lit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/cat">cat</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/chook">chook</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/circumfix">circumfix</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/combine">combine</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/defmaker">defmaker</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/defmaker-">defmaker-</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/defmaker-macro">defmaker-macro</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/defrule">defrule</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/defrule-">defrule-</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/effects">effects</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/except">except</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/find">find</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/for">for</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/hook">hook</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/label">label</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/lit">lit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/mapcat">mapcat</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/mapsum">mapsum</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/match">match</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/matches-seq">matches-seq</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/not-followed">not-followed</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/opt">opt</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/parser-m">parser-m</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/peek">peek</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/phrase">phrase</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/prefix">prefix</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/prod">prod</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/radix-digit">radix-digit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/radix-label">radix-label</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/rule?">rule?</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/set-term">set-term</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/state?">state?</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/substitute">substitute</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/substitute-1">substitute-1</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/suffix">suffix</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/suffix-peek">suffix-peek</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/template-sum">template-sum</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/term">term</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/term*">term*</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/term-">term-</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/validate">validate</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/vcat">vcat</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/when">when</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.cat/with-error">with-error</a>
</span>
<br />
</span><span id="subspace"><br />Variables and functions in
<span id="name">edu.arizona.fnparse.clojure</span>:
<span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;comment-char&gt;">&lt;comment-char&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;comment-indicator&gt;">&lt;comment-indicator&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;comment&gt;">&lt;comment&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;derefed&gt;">&lt;derefed&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;discarded&gt;">&lt;discarded&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;form-end&gt;">&lt;form-end&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;form-series&gt;">&lt;form-series&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;indicator&gt;">&lt;indicator&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;non-alphanumeric-symbol-char&gt;">&lt;non-alphanumeric-symbol-char&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;normal-ws-char&gt;">&lt;normal-ws-char&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;ns-separator&gt;">&lt;ns-separator&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;quoted&gt;">&lt;quoted&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;separator&gt;">&lt;separator&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;syntax-quoted&gt;">&lt;syntax-quoted&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;unquote-spliced&gt;">&lt;unquote-spliced&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;unquoted&gt;">&lt;unquoted&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;var-inner&gt;">&lt;var-inner&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;with-meta-inner&gt;">&lt;with-meta-inner&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;ws&gt;">&lt;ws&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/&lt;ws?&gt;">&lt;ws?&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/fetch-referred-namespace">fetch-referred-namespace</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/ns-qualified-keyword-empty-end">ns-qualified-keyword-empty-end</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/ns-qualified-keyword-end-with-slash">ns-qualified-keyword-end-with-slash</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/ns-resolved-keyword-end">ns-resolved-keyword-end</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/number-tail">number-tail</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/padded-lit">padded-lit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/radix-coefficient-tail">radix-coefficient-tail</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/radix-natural-number">radix-natural-number</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure/read-string">read-string</a>
</span>
<br />
</span><span id="subspace"><br />Variables and functions in
<span id="name">edu.arizona.fnparse.clojure-pure</span>:
<span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.clojure-pure/radix-label">radix-label</a>
</span>
<br />
</span><span id="subspace"><br />Variables and functions in
<span id="name">edu.arizona.fnparse.core</span>:
<span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/*format-remainder-limit*">*format-remainder-limit*</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/AParseAnswer">AParseAnswer</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/AState">AState</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/apply">apply</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/failure?">failure?</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/find">find</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/format-parse-error">format-parse-error</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/match">match</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/matches-seq">matches-seq</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/substitute">substitute</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/substitute-1">substitute-1</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.core/success?">success?</a>
</span>
<br />
</span><span id="subspace"><br />Variables and functions in
<span id="name">edu.arizona.fnparse.hound</span>:
<span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/+">+</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;anything&gt;">&lt;anything&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;ascii-alphanumeric&gt;">&lt;ascii-alphanumeric&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;ascii-control&gt;">&lt;ascii-control&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;ascii-digit&gt;">&lt;ascii-digit&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;ascii-letter&gt;">&lt;ascii-letter&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;decimal-digit&gt;">&lt;decimal-digit&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;emptiness&gt;">&lt;emptiness&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;end-of-input&gt;">&lt;end-of-input&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;fetch-context&gt;">&lt;fetch-context&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;fetch-location&gt;">&lt;fetch-location&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;fetch-warnings&gt;">&lt;fetch-warnings&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;hexadecimal-digit&gt;">&lt;hexadecimal-digit&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;inc-column&gt;">&lt;inc-column&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;inc-line&gt;">&lt;inc-line&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;lowercase-ascii-letter&gt;">&lt;lowercase-ascii-letter&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;nothing&gt;">&lt;nothing&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/&lt;uppercase-ascii-letter&gt;">&lt;uppercase-ascii-letter&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/add-warning">add-warning</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/alter-context">alter-context</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/alter-location">alter-location</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/annotate-error">annotate-error</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/antilit">antilit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/antiset-term">antiset-term</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/antiterm">antiterm</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/antivalidate">antivalidate</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/case-insensitive-lit">case-insensitive-lit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/cat">cat</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/chook">chook</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/circumfix">circumfix</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/combine">combine</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/defmaker">defmaker</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/defmaker-">defmaker-</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/defmaker-macro">defmaker-macro</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/defrule">defrule</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/defrule-">defrule-</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/effects">effects</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/except">except</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/factor=">factor=</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/find">find</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/for">for</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/format-parse-error">format-parse-error</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/hook">hook</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/hooked-rep">hooked-rep</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/label">label</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/lex">lex</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/lit">lit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/make-state">make-state</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/mapcat">mapcat</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/mapsum">mapsum</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/match">match</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/not-followed">not-followed</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/nothing-descriptors">nothing-descriptors</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/opt">opt</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/parser-m">parser-m</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/peek">peek</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/phrase">phrase</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/prefix">prefix</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/prod">prod</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/radix-digit">radix-digit</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/radix-label">radix-label</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/rep">rep</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/rep*">rep*</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/rule?">rule?</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/separated-rep">separated-rep</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/separated-rep*">separated-rep*</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/set-term">set-term</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/state?">state?</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/substitute">substitute</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/substitute-1">substitute-1</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/suffix">suffix</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/template-sum">template-sum</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/term">term</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/term*">term*</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/validate">validate</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/vcat">vcat</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/when">when</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.hound/with-error">with-error</a>
</span>
<br />
</span><span id="subspace"><br />Variables and functions in
<span id="name">edu.arizona.fnparse.json</span>:
<span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;array-content&gt;">&lt;array-content&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;array-end&gt;">&lt;array-end&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;array-start&gt;">&lt;array-start&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;array&gt;">&lt;array&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;control-char&gt;">&lt;control-char&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;document&gt;">&lt;document&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;escape-char-start&gt;">&lt;escape-char-start&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;escaped-str-char&gt;">&lt;escaped-str-char&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;false&gt;">&lt;false&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;name-separator&gt;">&lt;name-separator&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;normal-str-char&gt;">&lt;normal-str-char&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;null&gt;">&lt;null&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;object-content&gt;">&lt;object-content&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;object-end&gt;">&lt;object-end&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;object-entry&gt;">&lt;object-entry&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;object-start&gt;">&lt;object-start&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;object&gt;">&lt;object&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;str-char&gt;">&lt;str-char&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;str-content&gt;">&lt;str-content&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;str-delimiter&gt;">&lt;str-delimiter&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;str&gt;">&lt;str&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;true&gt;">&lt;true&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;unicode-sequence&gt;">&lt;unicode-sequence&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;value-separator&gt;">&lt;value-separator&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;value&gt;">&lt;value&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.json/&lt;ws?&gt;">&lt;ws?&gt;</a>
</span>
<br />
</span><span id="subspace"><br />Variables and functions in
<span id="name">edu.arizona.fnparse.math</span>:
<span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.math/&lt;addition-level&gt;">&lt;addition-level&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.math/&lt;multiplication-level&gt;">&lt;multiplication-level&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.math/&lt;number&gt;">&lt;number&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.math/&lt;parenthesized&gt;">&lt;parenthesized&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.math/&lt;symbol-content&gt;">&lt;symbol-content&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.math/&lt;ws&gt;">&lt;ws&gt;</a>
</span><span id="sub-var-link">
<a href="edu.arizona.fnparse-api.html#edu.arizona.fnparse.math/ws-suffix">ws-suffix</a>
</span>
<br />
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="foot">
<div style="text-align: center;" id="copyright">No copyright info </div>
</div>
</div>
<div id="DesignedBy">Logo &amp; site design by <a title="Visit Tom Hickey's website." href="http://www.tomhickey.com">Tom Hickey</a>.<br />
Clojure auto-documentation system by Tom Faulhaber.</div>
</div>
<!-- /AllContentContainer -->
</body>
</html>
Jump to Line
Something went wrong with that request. Please try again.