org.scilab.forge.jlatexmath
Class TeXParser

java.lang.Object
  extended by org.scilab.forge.jlatexmath.TeXParser

public class TeXParser
extends java.lang.Object

This class implements a parser for LaTeX' formulas.


Field Summary
 TeXFormula formula
           
protected static boolean isLoading
           
 
Constructor Summary
TeXParser(boolean isPartial, java.lang.String parseString, ArrayOfAtoms aoa, boolean firstpass)
          Create a new TeXParser in the context of an array.
TeXParser(boolean isPartial, java.lang.String parseString, TeXFormula formula)
          Create a new TeXParser
TeXParser(boolean isPartial, java.lang.String parseString, TeXFormula formula, boolean firstpass)
          Create a new TeXParser with or without a first pass
TeXParser(boolean isPartial, java.lang.String parseString, TeXFormula formula, boolean firstpass, boolean space)
          Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command
TeXParser(java.lang.String parseString, ArrayOfAtoms aoa, boolean firstpass)
          Create a new TeXParser in the context of an array.
TeXParser(java.lang.String parseString, TeXFormula formula)
          Create a new TeXParser
TeXParser(java.lang.String parseString, TeXFormula formula, boolean firstpass)
          Create a new TeXParser with or without a first pass
TeXParser(java.lang.String parseString, TeXFormula formula, boolean firstpass, boolean space)
          Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command
 
Method Summary
 void addAtom(Atom at)
          Put an atom in the current formula
 void addRow()
          Add a new row when the parser is in array mode
 Atom convertCharacter(char c, boolean oneChar)
          Convert a character in the corresponding atom in using the file TeXFormulaSettings.xml for non-alphanumeric characters
 Atom getArgument()
          Get the argument of a command in his atomic format
 int getCol()
          Get the number of the current column
 java.lang.String getDollarGroup(char openclose)
          Get the contents between two delimiters
 Atom getFormulaAtom()
          Get the atom represented by the current formula
 java.lang.String getGroup(char open, char close)
          Get the contents between two delimiters
 java.lang.String getGroup(java.lang.String open, java.lang.String close)
          Get the contents between two strings as in \begin{foo}...\end{foo}
 boolean getIsPartial()
          Return true if we get a partial formula
 Atom getLastAtom()
          Get the last atom of the current formula
 int getLine()
          Get the number of the current line
 java.lang.String[] getOptsArgs(int nbArgs, int opts)
          Get the arguments ant the options of a command
 java.lang.String getOverArgument()
           
 int getPos()
          Return the current position in the parsed string
 boolean isArrayMode()
          Return a boolean indicating if the parser is used to parse an array or not
 boolean isAtLetter()
          Return a boolean indicating if the character @ is considered as a letter or not
 boolean isIgnoreWhiteSpace()
          Return a boolean indicating if the parser must ignore white spaces
 boolean isMathMode()
          Return a boolean indicating if the parser is in math mode
 boolean isValidCharacterInCommand(char ch)
          Test the validity of a character in a command.
 boolean isValidName(java.lang.String com)
          Test the validity of the name of a command.
 void makeAtLetter()
          Indicate if the character @ can be used in the command's name
 void makeAtOther()
          Indicate if the character @ can be used in the command's name
 void parse()
          Parse the input string
 void reset(java.lang.String latex)
          Reset the parser with a new latex expression
 int rewind(int n)
          Rewind the current parsed string
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

formula

public TeXFormula formula

isLoading

protected static boolean isLoading
Constructor Detail

TeXParser

public TeXParser(java.lang.String parseString,
                 TeXFormula formula)
Create a new TeXParser

Parameters:
parseString - the string to be parsed
formula - the formula where to put the atoms
Throws:
ParseException - if the string could not be parsed correctly

TeXParser

public TeXParser(boolean isPartial,
                 java.lang.String parseString,
                 TeXFormula formula)
Create a new TeXParser

Parameters:
isPartial - if true certains exceptions are not thrown
parseString - the string to be parsed
formula - the formula where to put the atoms
Throws:
ParseException - if the string could not be parsed correctly

TeXParser

public TeXParser(boolean isPartial,
                 java.lang.String parseString,
                 TeXFormula formula,
                 boolean firstpass)
Create a new TeXParser with or without a first pass

Parameters:
isPartial - if true certains exceptions are not thrown
parseString - the string to be parsed
firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
Throws:
ParseException - if the string could not be parsed correctly

TeXParser

public TeXParser(java.lang.String parseString,
                 TeXFormula formula,
                 boolean firstpass)
Create a new TeXParser with or without a first pass

Parameters:
parseString - the string to be parsed
firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
Throws:
ParseException - if the string could not be parsed correctly

TeXParser

public TeXParser(boolean isPartial,
                 java.lang.String parseString,
                 ArrayOfAtoms aoa,
                 boolean firstpass)
Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created.

Parameters:
isPartial - if true certains exceptions are not thrown
parseString - the string to be parsed
aoa - an ArrayOfAtoms where to put the elements
firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
Throws:
ParseException - if the string could not be parsed correctly

TeXParser

public TeXParser(java.lang.String parseString,
                 ArrayOfAtoms aoa,
                 boolean firstpass)
Create a new TeXParser in the context of an array. When the parser meets a & a new atom is added in the current line and when a \\ is met, a new line is created.

Parameters:
parseString - the string to be parsed
aoa - an ArrayOfAtoms where to put the elements
firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
Throws:
ParseException - if the string could not be parsed correctly

TeXParser

public TeXParser(boolean isPartial,
                 java.lang.String parseString,
                 TeXFormula formula,
                 boolean firstpass,
                 boolean space)
Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command

Parameters:
isPartial - if true certains exceptions are not thrown
parseString - the string to be parsed
firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
space - a boolean to indicate if the parser must ignore or not the white space
Throws:
ParseException - if the string could not be parsed correctly

TeXParser

public TeXParser(java.lang.String parseString,
                 TeXFormula formula,
                 boolean firstpass,
                 boolean space)
Create a new TeXParser which ignores or not the white spaces, it's useful for mbox command

Parameters:
parseString - the string to be parsed
firstpass - a boolean to indicate if the parser must replace the user-defined macros by their content
space - a boolean to indicate if the parser must ignore or not the white space
Throws:
ParseException - if the string could not be parsed correctly
Method Detail

reset

public void reset(java.lang.String latex)
Reset the parser with a new latex expression


getIsPartial

public boolean getIsPartial()
Return true if we get a partial formula


getLine

public int getLine()
Get the number of the current line


getCol

public int getCol()
Get the number of the current column


getLastAtom

public Atom getLastAtom()
Get the last atom of the current formula


getFormulaAtom

public Atom getFormulaAtom()
Get the atom represented by the current formula


addAtom

public void addAtom(Atom at)
Put an atom in the current formula


makeAtLetter

public void makeAtLetter()
Indicate if the character @ can be used in the command's name


makeAtOther

public void makeAtOther()
Indicate if the character @ can be used in the command's name


isAtLetter

public boolean isAtLetter()
Return a boolean indicating if the character @ is considered as a letter or not


isArrayMode

public boolean isArrayMode()
Return a boolean indicating if the parser is used to parse an array or not


isIgnoreWhiteSpace

public boolean isIgnoreWhiteSpace()
Return a boolean indicating if the parser must ignore white spaces


isMathMode

public boolean isMathMode()
Return a boolean indicating if the parser is in math mode


getPos

public int getPos()
Return the current position in the parsed string


rewind

public int rewind(int n)
Rewind the current parsed string

Parameters:
n - the number of character to be rewinded
Returns:
the new position in the parsed string

addRow

public void addRow()
            throws ParseException
Add a new row when the parser is in array mode

Throws:
ParseException - if the parser is not in array mode

parse

public void parse()
           throws ParseException
Parse the input string

Throws:
ParseException - if an error is encountered during parsing

getDollarGroup

public java.lang.String getDollarGroup(char openclose)
                                throws ParseException
Get the contents between two delimiters

Parameters:
openclose - the opening and closing character (such $)
Returns:
the enclosed contents
Throws:
ParseException - if the contents are badly enclosed

getGroup

public java.lang.String getGroup(char open,
                                 char close)
                          throws ParseException
Get the contents between two delimiters

Parameters:
open - the opening character
close - the closing character
Returns:
the enclosed contents
Throws:
ParseException - if the contents are badly enclosed

getGroup

public java.lang.String getGroup(java.lang.String open,
                                 java.lang.String close)
                          throws ParseException
Get the contents between two strings as in \begin{foo}...\end{foo}

Parameters:
open - the opening string
close - the closing string
Returns:
the enclosed contents
Throws:
ParseException - if the contents are badly enclosed

getArgument

public Atom getArgument()
                 throws ParseException
Get the argument of a command in his atomic format

Returns:
the corresponding atom
Throws:
ParseException - if the argument is incorrect

getOverArgument

public java.lang.String getOverArgument()
                                 throws ParseException
Throws:
ParseException

convertCharacter

public Atom convertCharacter(char c,
                             boolean oneChar)
                      throws ParseException
Convert a character in the corresponding atom in using the file TeXFormulaSettings.xml for non-alphanumeric characters

Parameters:
c - the character to be converted
Returns:
the corresponding atom
Throws:
ParseException - if the character is unknown

getOptsArgs

public java.lang.String[] getOptsArgs(int nbArgs,
                                      int opts)
Get the arguments ant the options of a command

Parameters:
nbArgs - the number of arguments of the command
opts - must be 1 if the options are found before the first argument and must be 2 if they must be found before the second argument
Returns:
an array containing arguments and at the end the options are put

isValidName

public boolean isValidName(java.lang.String com)
Test the validity of the name of a command. It must contains only alpha characters and eventually a @ if makeAtletter activated

Parameters:
com - the command's name
Returns:
the validity of the name

isValidCharacterInCommand

public boolean isValidCharacterInCommand(char ch)
Test the validity of a character in a command. It must contains only alpha characters and eventually a @ if makeAtletter activated

Parameters:
com - the command's name
Returns:
the validity of the name