org.h2.bnf

## Class Bnf

- java.lang.Object
- - org.h2.bnf.Bnf

    public class Bnf
    extends java.lang.Object

This class can read a file that is similar to BNF (Backus-Naur form). It is made specially to support SQL grammar.

### Constructor Summary

Constructors
Constructor and Description
`Bnf()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `addAlias(java.lang.String name, java.lang.String replacement)` Add an alias for a rule.
`static Bnf` `getInstance(java.io.Reader csv)` Create an instance using the grammar specified in the CSV file.
`java.util.HashMap<java.lang.String,java.lang.String>` `getNextTokenList(java.lang.String query)` Get the list of tokens that can follow.
`RuleHead` `getRuleHead(java.lang.String title)` Get the rule head for the given title.
`static java.lang.String` `getRuleMapKey(java.lang.String token)` Convert convert ruleLink to rule_link.
`java.util.ArrayList<RuleHead>` `getStatements()` Get the list of possible statements.
`static java.util.StringTokenizer` `getTokenizer(java.lang.String s)` Get the tokenizer for the given syntax.
`void` `linkStatements()` Cross-link all statements with each other.
`static boolean` `startWithSpace(java.lang.String s)` Check whether the statement starts with a whitespace.
`java.lang.String` `toString()`
`void` `updateTopic(java.lang.String topic, DbContextRule rule)` Update a topic with a context specific rule.
`void` `visit(BnfVisitor visitor, java.lang.String s)` Parse the syntax and let the rule call the visitor.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### Bnf

    public Bnf()

### Method Detail

#### getInstance

    public static Bnf getInstance(java.io.Reader csv)
                           throws java.sql.SQLException,
                                  java.io.IOException

Create an instance using the grammar specified in the CSV file.

Parameters:
  `csv` - if not specified, the help.csv is used
Returns:
  a new instance
Throws:
  `java.sql.SQLException` - on failure
  `java.io.IOException` - on failure

#### addAlias

    public void addAlias(java.lang.String name,
                         java.lang.String replacement)

Add an alias for a rule.

Parameters:
  `name` - for example "procedure"
  `replacement` - for example "@func@"

#### visit

    public void visit(BnfVisitor visitor,
                      java.lang.String s)

Parse the syntax and let the rule call the visitor.

Parameters:
  `visitor` - the visitor
  `s` - the syntax to parse

#### startWithSpace

    public static boolean startWithSpace(java.lang.String s)

Check whether the statement starts with a whitespace.

Parameters:
  `s` - the statement
Returns:
  if the statement is not empty and starts with a whitespace

#### getRuleMapKey

    public static java.lang.String getRuleMapKey(java.lang.String token)

Convert convert ruleLink to rule_link.

Parameters:
  `token` - the token
Returns:
  the rule map key

#### getRuleHead

    public RuleHead getRuleHead(java.lang.String title)

Get the rule head for the given title.

Parameters:
  `title` - the title
Returns:
  the rule head, or null

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.lang.Object`

#### getNextTokenList

    public java.util.HashMap<java.lang.String,java.lang.String> getNextTokenList(java.lang.String query)

Get the list of tokens that can follow. This is the main autocomplete method. The returned map for the query 'S' may look like this:

     key: 1#SELECT, value: ELECT
     key: 1#SET, value: ET

Parameters:
  `query` - the start of the statement
Returns:
  the map of possible token types / tokens

#### linkStatements

    public void linkStatements()

Cross-link all statements with each other. This method is called after updating the topics.

#### updateTopic

    public void updateTopic(java.lang.String topic,
                            DbContextRule rule)

Update a topic with a context specific rule. This is used for autocomplete support.

Parameters:
  `topic` - the topic
  `rule` - the database context rule

#### getStatements

    public java.util.ArrayList<RuleHead> getStatements()

Get the list of possible statements.

Returns:
  the list of statements

#### getTokenizer

    public static java.util.StringTokenizer getTokenizer(java.lang.String s)

Get the tokenizer for the given syntax.

Parameters:
  `s` - the syntax
Returns:
  the tokenizer