libSBML C API  libSBML 5.20.2 C API
Loading...
Searching...
No Matches
FormulaParser.cpp File Reference

Parses an SBML formula string into an AST. More...

Include dependency graph for FormulaParser.cpp:

Macros

#define ACCEPT_STATE   0
 
#define ERROR_STATE   27
 
#define START_STATE   0
 @_tcond_t _tdoxygenLibsbmlInternal_t
 

Functions

void FormulaParser_fixLambdaArguments (const ASTNode *function)
 
long FormulaParser_getAction (long state, Token_t *token)
 @_tcond_t _tdoxygenLibsbmlInternal_t
 
long FormulaParser_getActionLength (TokenType_t type)
 @_treturn_t _tthe_t _tnumber_t _tof_t _tconsective_t _ttokens_t _tin_t _tthe_t _tAction_t[] _ttable_t _tfor_t _tthe_t _tgiven_t _ttoken_t _ttype_t.
 
long FormulaParser_getActionOffset (TokenType_t type)
 @_treturn_t _tthe_t _tstarting_t _toffset_t _tinto_t _tthe_t _tAction_t[] _ttable_t _tfor_t _tthe_t _tgiven_t _ttoken_t _ttype_t.
 
long FormulaParser_getGoto (long state, long rule)
 @_treturn_t _tthe_t _tnext_t (_tor_t _tgoto_t) _tstate_t _tfor_t _tthe_t _tcurrent_t _tstate_t _tand_t _tgrammar_t _trule_t.
 
void FormulaParser_makeConstantIntoName (ASTNodeType_t type, ASTNode *function)
 
ASTNode_tFormulaParser_reduceStackByRule (Stack_t *stack, long rule)
 _tReduces_t _tthe_t _tgiven_t _tstack_t (_tcontaining_t _tSLR_t _tparser_t _tstates_t _tand_t _tASTNodes_t) _tby_t _tthe_t _tgiven_t _tgrammar_t _trule_t.
 
ASTNode_tSBML_parseFormula (const char *formula)
 @_tendcond_t
 

Variables

static const StateActionPair_t Action []
 _tEach_t _tAction_t[] _ttable_t _tentry_t _tis_t _ta_t _tstate_t _taction_t _tpair_t.
 

Detailed Description

Parses an SBML formula string into an AST.

Author
Ben Bornstein

Macro Definition Documentation

◆ ACCEPT_STATE

#define ACCEPT_STATE   0

◆ ERROR_STATE

#define ERROR_STATE   27

◆ START_STATE

#define START_STATE   0

@_tcond_t _tdoxygenLibsbmlInternal_t

_tThe_t _tFormulaParser_t _tis_t _ta_t _tSimple_t _tLeft_t-_tto_t-_tright_t _tRightmost_t-_tderivation_t (_tSLR_t) _tshift_t-_treduce_t _tparser_t.

_tThe_t _tAction_t / _tGoto_t _ttable_t _tfor_t _tthis_t _tparser_t _tis_t _tshown_t _tbelow_t: <_tpre_t>

—–+———————————————+————————– | _tAction_t | _tGoto_t —–+———————————————+————————– _tState_t| _tId_t _tNum_t ( ) ^ * / + - , $ | _tExpr_t _tStmt_t _tArgs_t _tOptArgs_t —–+———————————————+————————– _t0_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t4_t _t2_t _t1_t| _tr9_t _tr9_t _tr9_t _tr9_t _tr9_t _tr9_t _tr9_t | _t2_t| _tacc_t| _t3_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t7_t _t4_t| _ts10_t _ts12_t _ts9_t _ts8_t _ts11_t _tr1_t | _t5_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t13_t _t6_t| _ts14_t _tr10_t _tr10_t _tr10_t _tr10_t _tr10_t _tr10_t _tr10_t _tr10_t| _t7_t| _ts15_t _ts10_t _ts12_t _ts9_t _ts8_t _ts11_t | _t8_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t16_t _t9_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t17_t _t10_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t18_t _t11_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t19_t _t12_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t20_t _t13_t| _tr7_t _tr7_t _tr7_t _tr7_t _tr7_t _tr7_t _tr7_t _tr7_t | _t14_t| _ts6_t _ts1_t _ts3_t _tr12_t _ts5_t | _t23_t _t22_t _t21_t _t15_t| _tr8_t _tr8_t _tr8_t _tr8_t _tr8_t _tr8_t _tr8_t _tr8_t | _t16_t| _tr2_t _ts10_t _ts12_t _ts9_t _tr2_t _tr2_t _tr2_t _tr2_t | _t17_t| _tr5_t _ts10_t _tr5_t _tr5_t _tr5_t _tr5_t _tr5_t _tr5_t | _t18_t| _tr6_t _tr6_t _tr6_t _tr6_t _tr6_t _tr6_t _tr6_t _tr6_t | _t19_t| _tr3_t _ts10_t _ts12_t _ts9_t _tr3_t _tr3_t _tr3_t _tr3_t | _t20_t| _tr4_t _ts10_t _tr4_t _tr4_t _tr4_t _tr4_t _tr4_t _tr4_t | _t21_t| _ts24_t | _t22_t| _tr13_t _ts25_t | _t23_t| _tr14_t _ts10_t _ts12_t _ts9_t _ts8_t _ts11_t _tr14_t | _t24_t| _tr11_t _tr11_t _tr11_t _tr11_t _tr11_t _tr11_t _tr11_t _tr11_t| _t25_t| _ts6_t _ts1_t _ts3_t _ts5_t | _t26_t _t26_t| _tr15_t _ts10_t _ts12_t _ts9_t _ts8_t _ts11_t _tr15_t | —–+———————————————+————————–

_tThe_t _tGrammar_t _trules_t _tare_t:

Rule_t _t1_t _tStmt_t -> _tExpr_t Rule_t _t2_t _tExpr_t -> _tExpr_t _tPLUS_t _tExpr_t Rule_t _t3_t _tExpr_t -> _tExpr_t _tMINUS_t _tExpr_t Rule_t _t4_t _tExpr_t -> _tExpr_t _tTIMES_t _tExpr_t Rule_t _t5_t _tExpr_t -> _tExpr_t _tDIVIDE_t _tExpr_t Rule_t _t6_t _tExpr_t -> _tExpr_t _tPOWER_t _tExpr_t Rule_t _t7_t _tExpr_t -> _tMINUS_t _tExpr_t Rule_t _t8_t _tExpr_t -> _tLPAREN_t _tExpr_t _tRPAREN_t Rule_t _t9_t _tExpr_t -> _tNUMBER_t Rule_t _t10_t _tExpr_t -> _tNAME_t Rule_t _t11_t _tExpr_t -> _tNAME_t _tLPAREN_t _tOptArgs_t _tRPAREN_t Rule_t _t12_t _tOptArgs_t -> [_tempty_t] Rule_t _t13_t _tOptArgs_t -> _tArgs_t Rule_t _t14_t _tArgs_t -> _tExpr_t Rule_t _t15_t _tArgs_t -> _tArgs_t _tCOMMA_t _tExpr_t </_tpre_t>

_tBoth_t _tare_t _timplemented_t _tin_t _ta_t _treasonably_t _tcompact_t _tform_t _tin_t _tthe_t _tcode_t _tbelow_t.

_tFor_t _tmore_t _tinformation_t, _tsee_t "_tCompilers_t: _tPrinciples_t, _tTechniques_t, _tand_t _tTools_t", _tby_t _tAho_t, _tSethi_t, _tand_t _tUllman_t, _tChapter_t _t4_t, _tSection_t _t4_t._t7_t: _tLR_t _tParsers_t (_tp_t. _t216_t).

Function Documentation

◆ FormulaParser_fixLambdaArguments()

void FormulaParser_fixLambdaArguments ( const ASTNode *  function)

◆ FormulaParser_getAction()

long FormulaParser_getAction ( long  state,
Token_t token 
)

@_tcond_t _tdoxygenLibsbmlInternal_t

@_treturn_t _tthe_t _taction_t _tfor_t _tthe_t _tcurrent_t _tstate_t _tand_t _ttoken_t.

_tACCEPT_STATE_t _tand_t _tERROR_STATE_t _tare_t _tspecial_t _tand_t _tshould_t _tbe_t _ttested_t _tfor_t _tfirst_t.

_tPostive_t _tactions_t _tless_t-_tthan_t _trepresent_t _tshifts_t. _tNegative_t _tactions_t _tgreater_t _tthan_t _trepresent_t _treductions_t _tby_t _ta_t _tgrammar_t _trule_t.

◆ FormulaParser_getActionLength()

long FormulaParser_getActionLength ( TokenType_t  type)

@_treturn_t _tthe_t _tnumber_t _tof_t _tconsective_t _ttokens_t _tin_t _tthe_t _tAction_t[] _ttable_t _tfor_t _tthe_t _tgiven_t _ttoken_t _ttype_t.

_tThis_t _tfunction_t _tis_t _tmachine_t-_tgenerated_t. _tDO_t _tNOT_t _tEDIT_t.

◆ FormulaParser_getActionOffset()

long FormulaParser_getActionOffset ( TokenType_t  type)

@_treturn_t _tthe_t _tstarting_t _toffset_t _tinto_t _tthe_t _tAction_t[] _ttable_t _tfor_t _tthe_t _tgiven_t _ttoken_t _ttype_t.

_tThis_t _tfunction_t _tis_t _tmachine_t-_tgenerated_t. _tDO_t _tNOT_t _tEDIT_t.

◆ FormulaParser_getGoto()

long FormulaParser_getGoto ( long  state,
long  rule 
)

@_treturn_t _tthe_t _tnext_t (_tor_t _tgoto_t) _tstate_t _tfor_t _tthe_t _tcurrent_t _tstate_t _tand_t _tgrammar_t _trule_t.

_tERROR_STATE_t _tis_t _tspecial_t _tand_t _tshould_t _tbe_t _ttested_t _tfor_t _tfirst_t.

◆ FormulaParser_makeConstantIntoName()

void FormulaParser_makeConstantIntoName ( ASTNodeType_t  type,
ASTNode *  function 
)

◆ FormulaParser_reduceStackByRule()

ASTNode_t * FormulaParser_reduceStackByRule ( Stack_t *  stack,
long  rule 
)

_tReduces_t _tthe_t _tgiven_t _tstack_t (_tcontaining_t _tSLR_t _tparser_t _tstates_t _tand_t _tASTNodes_t) _tby_t _tthe_t _tgiven_t _tgrammar_t _trule_t.

◆ SBML_parseFormula()

ASTNode_t * SBML_parseFormula ( const char *  formula)

@_tendcond_t

_tParses_t _ta_t _ttext_t _tstring_t _tas_t _ta_t _tmathematical_t _tformula_t _tand_t _treturns_t _tan_t _tAST_t _trepresentation_t _tof_t _tit_t.

@_tif_t _tconly_t @_tmemberof_t _tASTNode_t_t @_tendif_t

Examples
translateMath.c.

Variable Documentation

◆ Action

const StateActionPair_t Action[]
static

_tEach_t _tAction_t[] _ttable_t _tentry_t _tis_t _ta_t _tstate_t _taction_t _tpair_t.

_tPositive_t _taction_t _tnumbers_t _trepresent_t _ta_t "_tshift_t _tand_t _tgoto_t _tthat_t _tstate_t" _taction_t. _tNegative_t _taction_t _tnumbers_t _trepresent_t _ta_t "_treduce_t _tby_t _tthat_t _tproduction_t _tnumber_t" _taction_t.

_tTo_t _tlookup_t _tan_t _taction_t, _tuse_t _tthe_t _tFormulaParser_getAction_t() _tfunction_t.

_tThis_t _tis_t _tmachine_t-_tgenerated_t. _tDO_t _tNOT_t _tEDIT_t.