diff --git a/pub/lib/node.cpp b/pub/lib/node.cpp index da8ac38cdfe5ddbe1261f91ce6622534dcb03b96..968962fafb02b74fa1b6b83bbb4075023d0bbcaa 100644 --- a/pub/lib/node.cpp +++ b/pub/lib/node.cpp @@ -738,6 +738,16 @@ const RObj CNodeIdxK::tree_val( const CContext& ctx ) const } +//************************************************************************************************** +//* CNodeSession: session-wide workspace information +//************************************************************************************************** + +const RObj CNodeSessionNK::tree_val( const CContext& ctx ) const +{ + return RObjInt( new CObjInt( NOlm::mem_size() ) ); +} + + //************************************************************************************************** //* CNodeIva: indexed variable node //************************************************************************************************** @@ -760,10 +770,6 @@ const RObj CNodeIva::tree_val( const CContext& ctx ) const if ( !(var->pointwise() || var->slicewise() || var->filewise()) && ref->tk ) throw "reference "+var->var_info()+" does not admit an index"; - // sessionwide references - if ( var->categ == VCateg::NK ) - return RObjInt( new CObjInt( NOlm::mem_size() ) ); - // Get k from context: int k = ref->get_k( ctx ); diff --git a/pub/lib/xax_lex.lpp b/pub/lib/xax_lex.lpp index 9083f2fb633d95ffa6a1631b1552bc9c18e006d4..b55b40116d2ebd8a49c65de3c64f32115c81be47 100644 --- a/pub/lib/xax_lex.lpp +++ b/pub/lib/xax_lex.lpp @@ -52,6 +52,9 @@ struct xaxtype { RNode node_I( new CNodeIdxI() ); RNode node_J( new CNodeIdxJ() ); RNode node_K( new CNodeIdxK() ); + +RNode node_NK( new CNodeSessionNK() ); + RNode node_E( new CNodeVal( M_E ) ); RNode node_PI( new CNodeVal( M_PI ) ); RNode node_INF( new CNodeVal( INFINITY ) ); @@ -96,6 +99,10 @@ i { xaxlval->t = node_I; return VAL; } +nk { + xaxlval->t = node_NK; + return VAL; } + [xy]|dy|n[ijk]|([zpr]{DIG}+)|outcome|chi2|R2 { xaxlval->v = PVar( new CVar(xaxtext) ); return REF; } diff --git a/pub/lib/xax_yacc.ypp b/pub/lib/xax_yacc.ypp index 3ff9e3259078e8760b80203ded5df04efbc40b05..4460709024bd4090629acdee0d51a3b13aa1090e 100644 --- a/pub/lib/xax_yacc.ypp +++ b/pub/lib/xax_yacc.ypp @@ -74,7 +74,7 @@ int xaxlex(YYSTYPE *xaxlval); // created by lex.l %left BOP_PM /* error */ /* other tokens created by xax_lex.lpp: */ -%token VAL REF DUMMY CEV FNCT GENI CVIN END CONV PCONV DIRAC IDF +%token VAL REF0 REF DUMMY CEV FNCT GENI CVIN END CONV PCONV DIRAC IDF /* Grammar follows */