org.h2.bnf
Class Bnf

java.lang.Object
  extended by 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
Bnf()
           
 
Method Summary
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.
 java.util.StringTokenizer getTokenizer(java.lang.String s)
          Get the tokenizer for the given syntax.
 void linkStatements()
          Cross-link all statements with each other.
 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, toString, 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
java.io.IOException

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

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

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 java.util.StringTokenizer getTokenizer(java.lang.String s)
Get the tokenizer for the given syntax.

Parameters:
s - the syntax
Returns:
the tokenizer