libSBML C++ API  libSBML 5.8.0 C++ API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FormulaTokenizer.c File Reference

Detailed Description

Tokenizes an SBML formula string.

Author
Ben Bornstein
Include dependency graph for FormulaTokenizer.c:

Functions

FormulaTokenizer_tFormulaTokenizer_createFromFormula (const char *formula)
 Creates a new FormulaTokenizer_t object for the given formula string and returns a pointer to it the object. More...
 
void FormulaTokenizer_free (FormulaTokenizer_t *ft)
 Frees the given FormulaTokenizer_t object ft. More...
 
Token_tFormulaTokenizer_nextToken (FormulaTokenizer_t *ft)
 Returns the next token in the formula string. More...
 

Function Documentation

FormulaTokenizer_t* FormulaTokenizer_createFromFormula ( const char *  formula)

Creates a new FormulaTokenizer_t object for the given formula string and returns a pointer to it the object.

SBML Level 1 uses a simple text-string representation of mathematical formulas, rather than the MathML-based representation used in SBML Levels 2 and 3. LibSBML implements a parser and converter to translate formulas between this text-string representation and MathML. The first entry point is the function FormulaTokenizer_createFromFormula(), which returns a FormulaTokenizer_t structure. The structure tracks the current position in the string to be tokenized, and can be handed to other functions such as FormulaTokenizer_nextToken(). Tokens are returned as Token_t structures.

Parameters
formulathe text string that contains the mathematical formula to be tokenized.
Returns
a FormulaTokenizer_t object that tracks the state of tokenizing the string.
See Also
FormulaTokenizer_nextToken()
FormulaTokenizer_free()
Warning
We urge developers to keep in mind that the text-string formula syntax is specific to SBML Level 1's C-like mathematical formula syntax. In particular, it is not a general-purpose mathematical expression syntax. LibSBML provides methods for parsing and transforming text-string math formulas back and forth from AST structures, but it is important to keep the system's limitations in mind.
void FormulaTokenizer_free ( FormulaTokenizer_t ft)

Frees the given FormulaTokenizer_t object ft.

Token_t* FormulaTokenizer_nextToken ( FormulaTokenizer_t ft)

Returns the next token in the formula string.

SBML Level 1 uses a simple text-string representation of mathematical formulas, rather than the MathML-based representation used in SBML Levels 2 and 3. LibSBML implements a parser and converter to translate formulas between this text-string representation and MathML. The first entry point is the function FormulaTokenizer_createFromFormula(), which returns a FormulaTokenizer_t structure. The structure tracks the current position in the string to be tokenized, and can be handed to other functions such as FormulaTokenizer_nextToken(). Tokens are returned as Token_t structures.

An instance of a FormulaTokenizer_t maintains its own internal copy of the formula being tokenized and the current position within the formula string. Callers do not need to manipulate the fields of a FormulaTokenizer_t structure themselves; instances of FormulaTokenizer_t are only meant to be passed around between the functions of the formula tokenizer system, such as FormulaTokenizer_createFromFormula() and FormulaTokenizer_getName().

Parameters
ftthe object tracking the current tokenization state.
Returns
a pointer to a token. If no more tokens are available, the token type will be TT_END. Please consult the documentation for the structure Token_t for more information about the possible data values it can hold.
See Also
FormulaTokenizer_free()
FormulaTokenizer_createFromFormula()
Warning
We urge developers to keep in mind that the text-string formula syntax is specific to SBML Level 1's C-like mathematical formula syntax. In particular, it is not a general-purpose mathematical expression syntax. LibSBML provides methods for parsing and transforming text-string math formulas back and forth from AST structures, but it is important to keep the system's limitations in mind.