Skip to content

Commit 8ba1bc7

Browse files
committed
- Fix for parsing of the replaceable prefix in the RML version of the parser
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@7149 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent 130fe76 commit 8ba1bc7

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

Parser/Modelica.g

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ goto rule ## func ## Ex; }}
6666
#define or_nil(x) (x != 0 ? x : mk_nil())
6767
#define mk_some_or_none(x) (x ? mk_some(x) : mk_none())
6868
#define mk_tuple2(x1,x2) mk_box2(0,x1,x2)
69-
#define make_redeclare_keywords(replaceable,redeclare) (replaceable && redeclare ? Absyn__REDECLARE_5fREPLACEABLE : replaceable ? Absyn__REPLACEABLE : redeclare ? Absyn__REDECLARE : NULL)
69+
#define make_redeclare_keywords(replaceable,redeclare) (((replaceable) && (redeclare)) ? Absyn__REDECLARE_5fREPLACEABLE : ((replaceable) ? Absyn__REPLACEABLE : ((redeclare) ? Absyn__REDECLARE : NULL)))
7070
#define make_inner_outer(i,o) (i && o ? Absyn__INNEROUTER : i ? Absyn__INNER : o ? Absyn__OUTER : Absyn__UNSPECIFIED)
7171
#if 0
7272
/* Enable if you don't want to generate the tree */
@@ -330,6 +330,7 @@ element_list returns [void* ast] @init {
330330
element returns [void* ast] @declarations {
331331
void *final;
332332
void *innerouter;
333+
void *redecl;
333334
} :
334335
ic=import_clause { $ast = Absyn__ELEMENT(RML_FALSE,mk_none(),Absyn__UNSPECIFIED,mk_scon("import"), ic, INFO($start), mk_none());}
335336
| ec=extends_clause { $ast = Absyn__ELEMENT(RML_FALSE,mk_none(),Absyn__UNSPECIFIED,mk_scon("extends"), ec, INFO($start),mk_none());}
@@ -338,21 +339,21 @@ element returns [void* ast] @declarations {
338339
( ( cdef=class_definition[f != NULL] | cc=component_clause )
339340
{
340341
if (!cc)
341-
$ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(false,r)),
342+
$ast = Absyn__ELEMENT(final, r != NULL ? mk_some(make_redeclare_keywords(false,r != NULL)) : mk_none(),
342343
innerouter, mk_scon("??"),
343344
Absyn__CLASSDEF(RML_FALSE, cdef.ast),
344345
INFO($start), mk_none());
345346
else
346-
$ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(false,r)), innerouter,
347+
$ast = Absyn__ELEMENT(final, r != NULL ? mk_some(make_redeclare_keywords(false,r != NULL)) : mk_none(), innerouter,
347348
mk_scon("component"), cc, INFO($start), mk_none());
348349
}
349350
| (REPLACEABLE ( cdef=class_definition[f != NULL] | cc=component_clause ) constr=constraining_clause_comment? )
350351
{
351352
if (cc)
352-
$ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(true,r)), innerouter,
353+
$ast = Absyn__ELEMENT(final, mk_some(make_redeclare_keywords(true,r != NULL)), innerouter,
353354
mk_scon("replaceable component"), cc, INFO($start), mk_some_or_none(constr));
354355
else
355-
$ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(true,r)), innerouter,
356+
$ast = Absyn__ELEMENT(final, mk_some(make_redeclare_keywords(true,r != NULL)), innerouter,
356357
mk_scon("replaceable ??"), Absyn__CLASSDEF(RML_TRUE, cdef.ast), INFO($start), mk_some_or_none(constr));
357358
}
358359
)

0 commit comments

Comments
 (0)