Atomic Parser is a Java API code to compile arbitrary input stream into collection comprising one or more so called "parse trees". Each parse tree is a structured representation of input stream in terms of its syntax.
Traditionally, parsers of this kind accept exclusively character streams. Indeed, Atomic Parser processes streams of objects of any sort. Character streams can be processed as well, as particular variant of the input.
Such flexibility allows to easily stack parsers, where every next parser consumes output of previous one in the stack. It helps to provide complex but straightforward compilers where each stacked one performs limited particular transformation of input stream into intermediate form. Besides, internal translation of syntactic description does work exactly this way in the parser.
Like many parsers, Atomic Parser utilizes Backus-Naur Form (BNF) for specification of syntax. But unlike most parsers, it does not employ tables for definition of syntactic transitions. More formally, a nondeterministic finite [state] automaton is being used internally, bringing all the benefits of such approach over deterministic finite [state] automaton. Just to count a few advantages: no limit in number of states, no need to program every syntactic transition, no restrictions on the syntax and possibility to maintain variant results.
Input object patterns can be built using regular constructs of the BNF or "special sequence" is applied otherwise. Special function is provided to evaluate proximity of each parse tree to the syntax. A set of complementary console utilities helps to simplify utilization of syntactic description.
End User License Agreement:
Exclusively for personal non-commercial use, with no right to make copies and transfers to third parties, with no warranties of any kind. Click over to read detailed agreement... Once you read, understand and accept entire License Agreement, click checkbox in the right column to allow downloading of software.
Standardized specification of extended BNF has been used to describe a syntax. All the software was built using NetBeans™ IDE and comprises 5,800 lines (80 classes) of Java language code, that was written, tested and debugged myself within relatively long time frame. Some nontrivial implementation issues and mathematical problems were resolved. Finally, the project succeeded and made a great impact on my understanding of nature of cognition, structuring and storage of information.