Package org.h2.bnf

# Class Bnf

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

public class Bnf extends 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
Description
`Bnf()`

## Method Summary

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

### Bnf

public Bnf()

## Method Details

### getInstance

public static Bnf getInstance(Reader csv) throws SQLException, 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:
  `SQLException` - on failure
  `IOException` - on failure

### addAlias

public void addAlias(String name, String replacement)
Add an alias for a rule.

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

### visit

public void visit(BnfVisitor visitor, 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(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 String getRuleMapKey(String token)
Convert convert ruleLink to rule_link.

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

### getRuleHead

public RuleHead getRuleHead(String title)
Get the rule head for the given title.

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

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### getNextTokenList

public HashMap<String,String> getNextTokenList(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(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 ArrayList<RuleHead> getStatements()
Get the list of possible statements.

Returns:
  the list of statements

### getTokenizer

public static StringTokenizer getTokenizer(String s)
Get the tokenizer for the given syntax.

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