From 8a58a282da521c8efaeb99e86fd697fd02111a70 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (l)" <j.wuttke@fz-juelich.de> Date: Wed, 14 Oct 2015 20:29:32 +0200 Subject: [PATCH] new node SessionNK --- pub/lib/node.cpp | 14 ++++++++++---- pub/lib/xax_lex.lpp | 7 +++++++ pub/lib/xax_yacc.ypp | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/pub/lib/node.cpp b/pub/lib/node.cpp index da8ac38c..968962fa 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 9083f2fb..b55b4011 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 3ff9e325..44607090 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 */ -- GitLab