Package org.h2.bnf
Class Bnf
- java.lang.Object
-
- org.h2.bnf.Bnf
-
public class Bnf extends java.lang.ObjectThis 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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAlias(java.lang.String name, java.lang.String replacement)Add an alias for a rule.static BnfgetInstance(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.RuleHeadgetRuleHead(java.lang.String title)Get the rule head for the given title.static java.lang.StringgetRuleMapKey(java.lang.String token)Convert convert ruleLink to rule_link.java.util.ArrayList<RuleHead>getStatements()Get the list of possible statements.static java.util.StringTokenizergetTokenizer(java.lang.String s)Get the tokenizer for the given syntax.voidlinkStatements()Cross-link all statements with each other.static booleanstartWithSpace(java.lang.String s)Check whether the statement starts with a whitespace.java.lang.StringtoString()voidupdateTopic(java.lang.String topic, DbContextRule rule)Update a topic with a context specific rule.voidvisit(BnfVisitor visitor, java.lang.String s)Parse the syntax and let the rule call the visitor.
-
-
-
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 failurejava.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 visitors- 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:
toStringin classjava.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 topicrule- 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
-
-