| java.lang.Object org.ofbiz.rules.parse.Parser org.ofbiz.rules.parse.Terminal
All known Subclasses: org.ofbiz.rules.parse.tokens.Literal, org.ofbiz.rules.parse.chars.Letter, org.ofbiz.rules.parse.chars.Digit, org.ofbiz.rules.parse.tokens.Symbol, org.ofbiz.rules.parse.tokens.Num, org.ofbiz.rules.parse.chars.Char, org.ofbiz.rules.parse.tokens.Word, org.ofbiz.rules.parse.chars.SpecificChar, org.ofbiz.rules.parse.tokens.QuotedString,
Terminal | public class Terminal extends Parser (Code) | | Title: Terminal
Description: None
Copyright (c) 1999 Steven J. Metsker.
Copyright (c) 2001 The Open For Business Project - www.ofbiz.org
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
THE USE OR OTHER DEALINGS IN THE SOFTWARE.
A Terminal is a parser that is not a
composition of other parsers. Terminals are "terminal"
because they do not pass matching work on to other
parsers. The criterion that terminals use to check a
match is something other than another parser. Terminals
are also the only parsers that advance an assembly.
author: Steven J. Metsker version: 1.0 |
Field Summary | |
protected boolean | discard |
Constructor Summary | |
public | Terminal() Constructs an unnamed terminal. | public | Terminal(String name) Constructs a terminal with the given name. |
Method Summary | |
public void | accept(ParserVisitor pv, List visited) Accept a "visitor" and a collection of previously visited
parsers. | public Terminal | discard() A convenience method that sets discarding to be true. | public List | match(List in) Given a collection of assemblies, this method matches
this terminal against all of them, and returns a new
collection of the assemblies that result from the
matches. | protected Assembly | matchOneAssembly(Assembly in) Returns an assembly equivalent to the supplied assembly,
except that this terminal will have been removed from the
front of the assembly. | protected boolean | qualifies(Object o) The mechanics of matching are the same for many terminals,
except for the check that the next element on the assembly
qualifies as the type of terminal this terminal looks for. | public List | randomExpansion(int maxDepth, int depth) By default, create a collection with this terminal's
string representation of itself. | public Terminal | setDiscard(boolean discard) By default, terminals push themselves upon a assembly's
stack, after a successful match. | protected String | unvisitedString(List visited) Returns a textual description of this parser. |
discard | protected boolean discard(Code) | | whether or not this terminal should push itself upon an
assembly's stack after a successful match
|
Terminal | public Terminal()(Code) | | Constructs an unnamed terminal.
|
Terminal | public Terminal(String name)(Code) | | Constructs a terminal with the given name.
Parameters: String - A name to be known by. |
accept | public void accept(ParserVisitor pv, List visited)(Code) | | Accept a "visitor" and a collection of previously visited
parsers.
Parameters: pv - the visitor to accept Parameters: visited - a collection of previously visited parsers |
discard | public Terminal discard()(Code) | | A convenience method that sets discarding to be true.
this |
match | public List match(List in)(Code) | | Given a collection of assemblies, this method matches
this terminal against all of them, and returns a new
collection of the assemblies that result from the
matches.
a List of assemblies that result frommatching against a beginning set of assemblies Parameters: in - a vector of assemblies to match against |
matchOneAssembly | protected Assembly matchOneAssembly(Assembly in)(Code) | | Returns an assembly equivalent to the supplied assembly,
except that this terminal will have been removed from the
front of the assembly. As with any parser, if the
match succeeds, this terminal's assembler will work on
the assembly. If the match fails, this method returns
null.
Parameters: Assembly - the assembly to match against a copy of the incoming assembly, advanced by thisterminal |
qualifies | protected boolean qualifies(Object o)(Code) | | The mechanics of matching are the same for many terminals,
except for the check that the next element on the assembly
qualifies as the type of terminal this terminal looks for.
This method performs that check.
Parameters: Object - an element from a assembly true, if the object is the kind of terminal thisparser seeks |
randomExpansion | public List randomExpansion(int maxDepth, int depth)(Code) | | By default, create a collection with this terminal's
string representation of itself. (Most subclasses
override this.)
|
setDiscard | public Terminal setDiscard(boolean discard)(Code) | | By default, terminals push themselves upon a assembly's
stack, after a successful match. This routine will turn
off (or turn back on) that behavior.
boolean true, if this terminal should pushitself on a assembly's stack this |
unvisitedString | protected String unvisitedString(List visited)(Code) | | Returns a textual description of this parser.
|
|
|