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
protected  boolean hasStyleChanged
           
 
Constructor Summary
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 addRow()
          Add a new row when the parser is in array mode
 Atom convertCharacter(char c)
          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
 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}
 Atom getLastAtom()
          Get the last atom of the current formula
 java.lang.String[] getOptsArgs(int nbArgs, int opts)
          Get the arguments ant the options of a command
 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 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
 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

hasStyleChanged

protected boolean hasStyleChanged
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(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(java.lang.String parseString,
                 ArrayOfAtoms aoa,
                 boolean firstpass)
Create a new TeXParser in the context of an array. When the parser meet 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(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

getLastAtom

public Atom getLastAtom()
Get the last atom of 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


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 ann error is encountered during parsing

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

convertCharacter

public Atom convertCharacter(char c)
                      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