hetalang / heta-compiler

Software tool for the compilation of Heta-based QSP modeling platform
https://hetalang.github.io/#/heta-compiler/
Apache License 2.0
8 stars 4 forks source link

Reserved words conflict: The jak2stat5 example fails with mrgsolve #10

Open martinmodrak opened 2 years ago

martinmodrak commented 2 years ago

I took the model at https://github.com/hetalang/qsp-benchmark/tree/master/jak2stat5/src, compiled it and tried to run it with mrgsolve. Unfortunately, I get an error.

I was able to run the simple example model from readme via mrgsolve, so it presumably isn't just an installation issue.

The error I get is:

> nameless_model <- mrgsolve::mread(model = 'nameless', file = 'model.cpp')
Building nameless ... error.

---:: stderr ::---------------------------------------------
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:25:10: error: expected unqualified-id before 'default'
   double default;
          ^~~~~~~

7:1: error: case label not within a switch statement
 default = 1.0;
 ^~~~~~~
7:8: error: expected ':' before '=' token
 default = 1.0;
        ^~
        :
7:9: error: expected primary-expression before '=' token
 default = 1.0;
         ^

14:37: error: expected primary-expression before 'default'
 EpoRJAK2_amt__0 = (init_EpoRJAK2) * default;
                                     ^~~~~~~
15:24: error: expected primary-expression before 'default'
 SOCS3_amt__0 = (0.0) * default;
                        ^~~~~~~
16:28: error: expected primary-expression before 'default'
 EpoRpJAK2_amt__0 = (0.0) * default;
                            ^~~~~~~
17:26: error: expected primary-expression before 'default'
 SHP1Act_amt__0 = (0.0) * default;
                          ^~~~~~~
18:31: error: expected primary-expression before 'default'
 EpoRJAK2_CIS_amt__0 = (0.0) * default;
                               ^~~~~~~
19:30: error: expected primary-expression before 'default'
 p1EpoRpJAK2_amt__0 = (0.0) * default;
                              ^~~~~~~
20:30: error: expected primary-expression before 'default'
 p2EpoRpJAK2_amt__0 = (0.0) * default;
                              ^~~~~~~
21:31: error: expected primary-expression before 'default'
 p12EpoRpJAK2_amt__0 = (0.0) * default;
                               ^~~~~~~
22:29: error: expected primary-expression before 'default'
 SHP1_amt__0 = (init_SHP1) * default;
                             ^~~~~~~
24:22: error: expected primary-expression before 'default'
 CIS_amt__0 = (0.0) * default;
                      ^~~~~~~
In file included from nameless-mread-source.cpp:3:

nameless-mread-header.h:89:35: error: expected primary-expression before 'default'
 #define EpoRJAK2 (EpoRJAK2_amt_ / default)
                                   ^~~~~~~
44:13: note: in expansion of macro 'EpoRJAK2'
 v1 = (Epo * EpoRJAK2 * JAK2ActEpo) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
             ^~~~~~~~
nameless-mread-header.h:89:35: error: expected ')' before 'default'
 #define EpoRJAK2 (EpoRJAK2_amt_ / default)
                  ~                ^~~~~~~
44:13: note: in expansion of macro 'EpoRJAK2'
 v1 = (Epo * EpoRJAK2 * JAK2ActEpo) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
             ^~~~~~~~
44:75: error: expected ')' before ';' token
 v1 = (Epo * EpoRJAK2 * JAK2ActEpo) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
      ~                                                                    ^
                                                                           )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                                     ^~~~~~~
45:6: note: in expansion of macro 'EpoRpJAK2'
 v2 = EpoRpJAK2 * (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act;
      ^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                   ~                 ^~~~~~~
45:6: note: in expansion of macro 'EpoRpJAK2'
 v2 = EpoRpJAK2 * (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act;
      ^~~~~~~~~
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                                     ^~~~~~~
46:7: note: in expansion of macro 'EpoRpJAK2'
 v3 = (EpoRpJAK2 * EpoRActJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
       ^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                   ~                 ^~~~~~~
46:7: note: in expansion of macro 'EpoRpJAK2'
 v3 = (EpoRpJAK2 * EpoRActJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
       ^~~~~~~~~
46:71: error: expected ')' before ';' token
 v3 = (EpoRpJAK2 * EpoRActJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
      ~                                                                ^
                                                                       )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                                     ^~~~~~~
47:13: note: in expansion of macro 'EpoRpJAK2'
 v4 = (3.0 * EpoRpJAK2 * EpoRActJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
             ^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                   ~                 ^~~~~~~
47:13: note: in expansion of macro 'EpoRpJAK2'
 v4 = (3.0 * EpoRpJAK2 * EpoRActJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
             ^~~~~~~~~
47:115: error: expected ')' before ';' token
 v4 = (3.0 * EpoRpJAK2 * EpoRActJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
      ~                                                                                                            ^
                                                                                                                   )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:91:41: error: expected primary-expression before 'default'
 #define p1EpoRpJAK2 (p1EpoRpJAK2_amt_ / default)
                                         ^~~~~~~
48:27: note: in expansion of macro 'p1EpoRpJAK2'
 v5 = (3.0 * EpoRActJAK2 * p1EpoRpJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
                           ^~~~~~~~~~~
nameless-mread-header.h:91:41: error: expected ')' before 'default'
 #define p1EpoRpJAK2 (p1EpoRpJAK2_amt_ / default)
                     ~                   ^~~~~~~
48:27: note: in expansion of macro 'p1EpoRpJAK2'
 v5 = (3.0 * EpoRActJAK2 * p1EpoRpJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
                           ^~~~~~~~~~~
48:117: error: expected ')' before ';' token
 v5 = (3.0 * EpoRActJAK2 * p1EpoRpJAK2) / ((EpoRCISInh * EpoRJAK2_CIS + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0));
      ~                                                                                                              ^
                                                                                                                     )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:92:41: error: expected primary-expression before 'default'
 #define p2EpoRpJAK2 (p2EpoRpJAK2_amt_ / default)
                                         ^~~~~~~
49:21: note: in expansion of macro 'p2EpoRpJAK2'
 v6 = (EpoRActJAK2 * p2EpoRpJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
                     ^~~~~~~~~~~
nameless-mread-header.h:92:41: error: expected ')' before 'default'
 #define p2EpoRpJAK2 (p2EpoRpJAK2_amt_ / default)
                     ~                   ^~~~~~~
49:21: note: in expansion of macro 'p2EpoRpJAK2'
 v6 = (EpoRActJAK2 * p2EpoRpJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
                     ^~~~~~~~~~~
49:73: error: expected ')' before ';' token
 v6 = (EpoRActJAK2 * p2EpoRpJAK2) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0);
      ~                                                                  ^
                                                                         )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                                 ^~~~~~~
50:38: note: in expansion of macro 'SHP1Act'
 v7 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p1EpoRpJAK2;
                                      ^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                 ~               ^~~~~~~
50:38: note: in expansion of macro 'SHP1Act'
 v7 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p1EpoRpJAK2;
                                      ^~~~~~~
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                                 ^~~~~~~
51:38: note: in expansion of macro 'SHP1Act'
 v8 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p2EpoRpJAK2;
                                      ^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                 ~               ^~~~~~~
51:38: note: in expansion of macro 'SHP1Act'
 v8 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p2EpoRpJAK2;
                                      ^~~~~~~
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                                 ^~~~~~~
52:38: note: in expansion of macro 'SHP1Act'
 v9 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p12EpoRpJAK2;
                                      ^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                 ~               ^~~~~~~
52:38: note: in expansion of macro 'SHP1Act'
 v9 = (JAK2EpoRDeaSHP1 / init_SHP1) * SHP1Act * p12EpoRpJAK2;
                                      ^~~~~~~
nameless-mread-header.h:94:43: error: expected primary-expression before 'default'
 #define EpoRJAK2_CIS (EpoRJAK2_CIS_amt_ / default)
                                           ^~~~~~~
53:7: note: in expansion of macro 'EpoRJAK2_CIS'
 v10 = EpoRJAK2_CIS * (EpoRCISRemove / init_EpoRJAK2) * (p12EpoRpJAK2 + p1EpoRpJAK2);
       ^~~~~~~~~~~~
nameless-mread-header.h:94:43: error: expected ')' before 'default'
 #define EpoRJAK2_CIS (EpoRJAK2_CIS_amt_ / default)
                      ~                    ^~~~~~~
53:7: note: in expansion of macro 'EpoRJAK2_CIS'
 v10 = EpoRJAK2_CIS * (EpoRCISRemove / init_EpoRJAK2) * (p12EpoRpJAK2 + p1EpoRpJAK2);
       ^~~~~~~~~~~~
nameless-mread-header.h:95:27: error: expected primary-expression before 'default'
 #define SHP1 (SHP1_amt_ / default)
                           ^~~~~~~
54:7: note: in expansion of macro 'SHP1'
 v11 = SHP1 * (SHP1ActEpoR / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2);
       ^~~~
nameless-mread-header.h:95:27: error: expected ')' before 'default'
 #define SHP1 (SHP1_amt_ / default)
              ~            ^~~~~~~
54:7: note: in expansion of macro 'SHP1'
 v11 = SHP1 * (SHP1ActEpoR / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2);
       ^~~~
nameless-mread-header.h:96:33: error: expected primary-expression before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                                 ^~~~~~~
55:17: note: in expansion of macro 'SHP1Act'
 v12 = SHP1Dea * SHP1Act;
                 ^~~~~~~
nameless-mread-header.h:96:33: error: expected ')' before 'default'
 #define SHP1Act (SHP1Act_amt_ / default)
                 ~               ^~~~~~~
55:17: note: in expansion of macro 'SHP1Act'
 v12 = SHP1Dea * SHP1Act;
                 ^~~~~~~
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                                     ^~~~~~~
56:50: note: in expansion of macro 'EpoRpJAK2'
 v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
                                                  ^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                   ~                 ^~~~~~~
56:50: note: in expansion of macro 'EpoRpJAK2'
 v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
                                                  ^~~~~~~~~
56:150: error: expected ')' before ';' token
 v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
                                                 ~                                                                                                    ^
                                                                                                                                                      )
56:150: error: expected ')' before ';' token
 v13 = (STAT5 * (STAT5ActJAK2 / init_EpoRJAK2) * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2)) / (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0) * cyt;
       ~                                                                                                                                              ^
                                                                                                                                                      )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:93:43: error: expected primary-expression before 'default'
 #define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
                                           ^~~~~~~
57:64: note: in expansion of macro 'p12EpoRpJAK2'
 v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
                                                                ^~~~~~~~~~~~
nameless-mread-header.h:93:43: error: expected ')' before 'default'
 #define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
                      ~                    ^~~~~~~
57:64: note: in expansion of macro 'p12EpoRpJAK2'
 v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
                                                                ^~~~~~~~~~~~
57:180: error: expected ')' before ';' token
 v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
                                                               ~                                                                                                                    ^
                                                                                                                                                                                    )
57:180: error: expected ')' before ';' token
 v14 = (STAT5 * (STAT5ActEpoR / pow(init_EpoRJAK2, 2.0)) * pow((p12EpoRpJAK2 + p1EpoRpJAK2), 2.0)) / ((CIS * (CISInh / CISEqc) + 1.0) * (SOCS3 * (SOCS3Inh / SOCS3Eqc) + 1.0)) * cyt;
       ~                                                                                                                                                                            ^
                                                                                                                                                                                    )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
 #define CIS (CIS_amt_ / default)
                         ^~~~~~~
68:7: note: in expansion of macro 'CIS'
 v25 = CIS * CISTurn;
       ^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
 #define CIS (CIS_amt_ / default)
             ~           ^~~~~~~
68:7: note: in expansion of macro 'CIS'
 v25 = CIS * CISTurn;
       ^~~
nameless-mread-header.h:113:29: error: expected primary-expression before 'default'
 #define SOCS3 (SOCS3_amt_ / default)
                             ^~~~~~~
78:7: note: in expansion of macro 'SOCS3'
 v35 = SOCS3 * SOCS3Turn;
       ^~~~~
nameless-mread-header.h:113:29: error: expected ')' before 'default'
 #define SOCS3 (SOCS3_amt_ / default)
               ~             ^~~~~~~
78:7: note: in expansion of macro 'SOCS3'
 v35 = SOCS3 * SOCS3Turn;
       ^~~~~
nameless-mread-header.h:90:37: error: expected primary-expression before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                                     ^~~~~~~
81:64: note: in expansion of macro 'EpoRpJAK2'
 pJAK2_au = log10(offset_pJAK2_long + 2.0 * scale_pJAK2_long * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
                                                                ^~~~~~~~~
nameless-mread-header.h:90:37: error: expected ')' before 'default'
 #define EpoRpJAK2 (EpoRpJAK2_amt_ / default)
                   ~                 ^~~~~~~
81:64: note: in expansion of macro 'EpoRpJAK2'
 pJAK2_au = log10(offset_pJAK2_long + 2.0 * scale_pJAK2_long * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
                                                                ^~~~~~~~~
81:134: error: expected ')' before ';' token
 pJAK2_au = log10(offset_pJAK2_long + 2.0 * scale_pJAK2_long * (EpoRpJAK2 + p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
                                                               ~                                                                      ^
                                                                                                                                      )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:93:43: error: expected primary-expression before 'default'
 #define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
                                           ^~~~~~~
82:65: note: in expansion of macro 'p12EpoRpJAK2'
 pEpoR_au = log10(offset_pEpoR_long + 16.0 * scale_pEpoR_long * (p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
                                                                 ^~~~~~~~~~~~
nameless-mread-header.h:93:43: error: expected ')' before 'default'
 #define p12EpoRpJAK2 (p12EpoRpJAK2_amt_ / default)
                      ~                    ^~~~~~~
82:65: note: in expansion of macro 'p12EpoRpJAK2'
 pEpoR_au = log10(offset_pEpoR_long + 16.0 * scale_pEpoR_long * (p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
                                                                 ^~~~~~~~~~~~
82:123: error: expected ')' before ';' token
 pEpoR_au = log10(offset_pEpoR_long + 16.0 * scale_pEpoR_long * (p12EpoRpJAK2 + p1EpoRpJAK2 + p2EpoRpJAK2) / init_EpoRJAK2);
                                                                ~                                                          ^
                                                                                                                           )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
 #define CIS (CIS_amt_ / default)
                         ^~~~~~~
83:34: note: in expansion of macro 'CIS'
 CIS_au = log10(offset_CIS_long + CIS * scale_CIS_long / CISEqc);
                                  ^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
 #define CIS (CIS_amt_ / default)
             ~           ^~~~~~~
83:34: note: in expansion of macro 'CIS'
 CIS_au = log10(offset_CIS_long + CIS * scale_CIS_long / CISEqc);
                                  ^~~
nameless-mread-header.h:113:29: error: expected primary-expression before 'default'
 #define SOCS3 (SOCS3_amt_ / default)
                             ^~~~~~~
84:43: note: in expansion of macro 'SOCS3'
 SOCS3_au = log10(offset_SOCS3_long + fabs(SOCS3) * scale_SOCS3_long / SOCS3Eqc);
                                           ^~~~~
nameless-mread-header.h:113:29: error: expected ')' before 'default'
 #define SOCS3 (SOCS3_amt_ / default)
               ~             ^~~~~~~
84:43: note: in expansion of macro 'SOCS3'
 SOCS3_au = log10(offset_SOCS3_long + fabs(SOCS3) * scale_SOCS3_long / SOCS3Eqc);
                                           ^~~~~
nameless-mread-header.h:95:27: error: expected primary-expression before 'default'
 #define SHP1 (SHP1_amt_ / default)
                           ^~~~~~~
88:18: note: in expansion of macro 'SHP1'
 SHP1_abs = log10(SHP1 + SHP1Act);
                  ^~~~
nameless-mread-header.h:95:27: error: expected ')' before 'default'
 #define SHP1 (SHP1_amt_ / default)
              ~            ^~~~~~~
88:18: note: in expansion of macro 'SHP1'
 SHP1_abs = log10(SHP1 + SHP1Act);
                  ^~~~
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
 #define CIS (CIS_amt_ / default)
                         ^~~~~~~
89:22: note: in expansion of macro 'CIS'
 CIS_abs = log10(fabs(CIS));
                      ^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
 #define CIS (CIS_amt_ / default)
             ~           ^~~~~~~
89:22: note: in expansion of macro 'CIS'
 CIS_abs = log10(fabs(CIS));
                      ^~~
nameless-mread-header.h:113:29: error: expected primary-expression before 'default'
 #define SOCS3 (SOCS3_amt_ / default)
                             ^~~~~~~
90:24: note: in expansion of macro 'SOCS3'
 SOCS3_abs = log10(fabs(SOCS3));
                        ^~~~~
nameless-mread-header.h:113:29: error: expected ')' before 'default'
 #define SOCS3 (SOCS3_amt_ / default)
               ~             ^~~~~~~
90:24: note: in expansion of macro 'SOCS3'
 SOCS3_abs = log10(fabs(SOCS3));
                        ^~~~~
nameless-mread-header.h:95:27: error: expected primary-expression before 'default'
 #define SHP1 (SHP1_amt_ / default)
                           ^~~~~~~
98:39: note: in expansion of macro 'SHP1'
 tSHP1_au = log10(scale_SHP1_shp1oe * (SHP1 + SHP1Act) / init_SHP1);
                                       ^~~~
nameless-mread-header.h:95:27: error: expected ')' before 'default'
 #define SHP1 (SHP1_amt_ / default)
              ~            ^~~~~~~
98:39: note: in expansion of macro 'SHP1'
 tSHP1_au = log10(scale_SHP1_shp1oe * (SHP1 + SHP1Act) / init_SHP1);
                                       ^~~~
98:67: error: expected ')' before ';' token
 tSHP1_au = log10(scale_SHP1_shp1oe * (SHP1 + SHP1Act) / init_SHP1);
                                      ~                            ^
                                                                   )
In file included from nameless-mread-source.cpp:3:
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
 #define CIS (CIS_amt_ / default)
                         ^~~~~~~
99:17: note: in expansion of macro 'CIS'
 CIS_au1 = log10(CIS * scale1_CIS_dr90 / CISEqc);
                 ^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
 #define CIS (CIS_amt_ / default)
             ~           ^~~~~~~
99:17: note: in expansion of macro 'CIS'
 CIS_au1 = log10(CIS * scale1_CIS_dr90 / CISEqc);
                 ^~~
nameless-mread-header.h:106:25: error: expected primary-expression before 'default'
 #define CIS (CIS_amt_ / default)
                         ^~~~~~~
100:17: note: in expansion of macro 'CIS'
 CIS_au2 = log10(CIS * scale2_CIS_dr90 / CISEqc);
                 ^~~
nameless-mread-header.h:106:25: error: expected ')' before 'default'
 #define CIS (CIS_amt_ / default)
             ~           ^~~~~~~
100:17: note: in expansion of macro 'CIS'
 CIS_au2 = log10(CIS * scale2_CIS_dr90 / CISEqc);
                 ^~~
make: *** [C:/PROGRA~1/R/R-41~1.0/etc/x64/Makeconf:245: nameless-mread-source.o] Error 1
------------------------------------------------------------
Error: the model build step failed.
metelkin commented 2 years ago

Hi @martinmodrak , Thank you for your feedback. I have the same issue. The model included a compartment with "default" id. This is a reserved word in mrgsolve, as I understand.

I've updated the repository with jak2stat5 model changing "default" => "def". Now everything is fine. Compilation and simulations are OK. Pull the latest commit from hetalang/qsp-benchmark and recompile the model.

This is a workaround. But the unexpected issues with reserved words are still a problem. We need a better solution.

martinmodrak commented 2 years ago

Wouldn't a systematic solution be that the XXExport classes expose a list of keywords and the compiler checks the model against this list. It could then either:

(I don't insist on this being done for the review, it just seems like a relatively cheap but useful solution)

metelkin commented 2 years ago

@martinmodrak, agree, this would be good. As a fast temporal solution, I've added "default" into a general keyword list. Now the usage of such id throws an error. A user should change the id of such a component by himself. But I still doubt if it's the best solution. 1) It seems that each "export" type should have its own stop list. We need time to collect and analyze them all. 2) We should also think of automatic renaming rules.

So I guess we suggest a better solution later.