Go to the documentation of this file.
44double Parser :: expr(
bool get)
52 double left =
term(get);
68double Parser :: term(
bool get)
70 double d, left =
prim(get);
75 left = ( left ==
prim(
true) );
78 left = ( left <=
prim(
true) );
81 left = ( left <
prim(
true) );
84 left = ( left >=
prim(
true) );
87 left = ( left >
prim(
true) );
93 if ( ( d =
prim(
true) ) ) {
99 if ( ( d =
prim(
true) ) ) {
105 left = pow( left,
prim(
true) );
113double Parser :: prim(
bool get)
137 if ( next_tok ==
LB ) {
139 double val =
expr(
true);
148 if ( next_tok ==
ASSIGN ) {
165 double e =
expr(
true);
175 double e =
agr(
true);
180 double e =
agr(
true);
185 double e =
agr(
true);
190 double e =
agr(
true);
195 double e =
agr(
true);
200 double e =
agr(
true);
205 double e =
agr(
true);
210 double e =
agr(
true);
215 double e =
agr(
true);
220 double time =
look(
"t")->doubleValue;
221 double e =
agr(
true);
223 return time < e ? 0 : 1;
228 double e =
agr(
true);
238double Parser :: agr(
bool get)
247 double e =
expr(
true);
261Parser :: Token_value Parser :: get_token()
271 }
while ( ch !=
'\n' && isspace(ch) );
317 case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
318 case '6':
case '7':
case '8':
case '9':
case '.':
337 while ( ( ch = * (
parsedLine++ ) ) && isalnum(ch) ) {
383Parser :: name *Parser :: look(
const char *p,
int ins)
388 ii = ii << 1 ^ * pp++;
397 for (
name *n =
table [ ii ]; n; n = n->next ) {
398 if ( strcmp(p, n->string) == 0 ) {
408 nn->
string =
new char [ strlen(p) + 1 ];
419double Parser :: eval(
const char *
string,
int &err)
433void Parser :: eval(
const char *
string,
FloatArray& answer,
const char* resultName,
int &err)
445 if ( n->
size == 0 ) {
453void Parser :: reset()
458 if ( ( entry =
table [ i ] ) ) {
463 }
while ( ( entry = next ) );
478 OOFEM_ERROR(
"Variable %s: using scalar context of array variable", vname);
481 if ( n->
size == 0 ) {
482 OOFEM_ERROR(
"Variable %s: using array context of scalar variable", vname);
484 if ( indx > n->
size ) {
497 if ( indx == 0 && n->
size == 0 ) {
499 }
else if ( indx > 0 && n->
size > 0 ) {
void setVariableValue(const char *name, int indx, double value)
name * look(const char *p, int ins=0)
name * table[Parser_TBLSZ]
double getVariableValue(const char *name, int indx)
char string_value[Parser_CMD_LENGTH]
#define Parser_CMD_LENGTH
This page is part of the
OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak
Bořek Patzák
Project e-mail:
oofem@fsv.cvut.cz
Generated at for OOFEM by
doxygen
1.15.0 written by Dimitri van Heesch,
© 1997-2011