@@ -230,7 +230,7 @@ OPERATOR;
230230 #define metamodelica_enabled(void) 0
231231 #define code_expressions_enabled(void) 0
232232 #define NYI(void) 0
233- #define INFO(start,stop ) Absyn__INFO(ModelicaParser_filename, isReadOnly, mk_icon(start->line), mk_icon(start->charPosition), mk_icon(stop ->line), mk_icon(stop ->charPosition), Absyn__TIMESTAMP(mk_rcon(0),mk_rcon(0)))
233+ #define INFO(start) Absyn__INFO(ModelicaParser_filename, isReadOnly, mk_icon(start->line), mk_icon(start->charPosition), mk_icon(start ->line), mk_icon(start ->charPosition), Absyn__TIMESTAMP(mk_rcon(0),mk_rcon(0)))
234234 typedef unsigned char bool;
235235 extern void *ModelicaParser_filename;
236236}
@@ -362,7 +362,7 @@ class_definition_list returns [void* ast] :
362362class_definition [ bool final] returns [ void* ast] :
363363 ((e= ENCAPSULATED)? (p= PARTIAL)? ct= class_type cs= class_specifier)
364364 {
365- $ast = Absyn__CLASS($cs.name, mk_bcon(p), mk_bcon(final), mk_bcon(e), ct, $cs.ast, INFO($start,$stop ));
365+ $ast = Absyn__CLASS($cs.name, mk_bcon(p), mk_bcon(final), mk_bcon(e), ct, $cs.ast, INFO($start));
366366 }
367367 ;
368368
@@ -515,30 +515,29 @@ element returns [void* ast] @declarations {
515515 void * final;
516516 void * innerouter;
517517} :
518- ic= import_clause { $ast = Absyn__ELEMENT(RML_FALSE,mk_none(),Absyn__UNSPECIFIED,mk_scon(" import" ), ic, INFO($start,$stop ), mk_none());}
519- | ec= extends_clause { $ast = Absyn__ELEMENT(RML_FALSE,mk_none(),Absyn__UNSPECIFIED,mk_scon(" extends" ), ec, INFO($start,$stop ),mk_none());}
518+ ic= import_clause { $ast = Absyn__ELEMENT(RML_FALSE,mk_none(),Absyn__UNSPECIFIED,mk_scon(" import" ), ic, INFO($start), mk_none());}
519+ | ec= extends_clause { $ast = Absyn__ELEMENT(RML_FALSE,mk_none(),Absyn__UNSPECIFIED,mk_scon(" extends" ), ec, INFO($start),mk_none());}
520520 | du= defineunit_clause { $ast = du;}
521521 | (r= REDECLARE)? (f= FINAL)? (i= INNER)? (o= T_OUTER)? { final = mk_bcon(f); innerouter = make_inner_outer(i,o); }
522- ( ( cdef= class_definition[ f != NULL]
522+ ( ( cdef= class_definition[ f != NULL] | cc = component_clause )
523523 {
524- $ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(false ,r)),
525- innerouter, mk_scon(" ??" ),
526- Absyn__CLASSDEF(RML_FALSE, cdef.ast),
527- INFO($start,$stop), mk_none());
528- }
529- | cc= component_clause)
530- {
531- $ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(false ,r)), innerouter,
532- mk_scon(" component" ), cc, INFO($start, $stop), mk_none());
524+ if (!cc)
525+ $ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(false ,r)),
526+ innerouter, mk_scon(" ??" ),
527+ Absyn__CLASSDEF(RML_FALSE, cdef.ast),
528+ INFO($start), mk_none());
529+ else
530+ $ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(false ,r)), innerouter,
531+ mk_scon(" component" ), cc, INFO($start), mk_none());
533532 }
534533 | (REPLACEABLE ( cdef= class_definition[ f != NULL] | cc= component_clause ) constr= constraining_clause_comment? )
535534 {
536535 if (cc)
537536 $ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(true ,r)), innerouter,
538- mk_scon(" replaceable component" ), cc, INFO($start, $stop ), mk_some_or_none(constr));
537+ mk_scon(" replaceable component" ), cc, INFO($start), mk_some_or_none(constr));
539538 else
540539 $ast = Absyn__ELEMENT(final, mk_some_or_none(make_redeclare_keywords(true ,r)), innerouter,
541- mk_scon(" ??" ), Absyn__CLASSDEF(RML_TRUE, cdef.ast), INFO($start, $stop ), mk_some_or_none(constr));
540+ mk_scon(" replaceable ??" ), Absyn__CLASSDEF(RML_TRUE, cdef.ast), INFO($start), mk_some_or_none(constr));
542541 }
543542 )
544543 ;
@@ -578,7 +577,7 @@ extends_clause returns [void* ast] :
578577 ;
579578
580579constraining_clause_comment returns [ void* ast] :
581- constr= constraining_clause cmt= comment { ast = Absyn__CONSTRAINCLASS(constr, mk_some_or_none(cmt));}
580+ constr= constraining_clause cmt= comment { $ ast = Absyn__CONSTRAINCLASS(constr, mk_some_or_none(cmt));}
582581 ;
583582
584583constraining_clause returns [ void* ast] :
@@ -608,8 +607,11 @@ component_clause returns [void* ast] @declarations {
608607 ar_option = p-> data[ 2 ] ; // get the array option
609608 p-> data[ 2 ] = mk_none(); // replace the array with nothing
610609 }
611- if (!arr)
612- {
610+ else
611+ {
612+ fprintf(stderr, " component_clause error\n " );
613+ }
614+
613615 // no arr was set, inspect ar_option and fix it
614616 struct rml_struct * p = (struct rml_struct* )RML_UNTAGPTR(ar_option);
615617 if (RML_GETHDR(ar_option) == RML_STRUCTHDR(0 ,0 )) // is NONE
@@ -620,7 +622,7 @@ component_clause returns [void* ast] @declarations {
620622 {
621623 arr = p-> data[ 0 ] ;
622624 }
623- }
625+
624626 ast = Absyn__COMPONENTS(Absyn__ATTR(tp.flow, tp.stream, tp.variability, tp.direction, arr), path, clst);
625627 }
626628 ;
@@ -719,7 +721,7 @@ element_replaceable [bool each, bool final, bool redeclare] returns [void* ast]
719721 {
720722 ast = Absyn__REDECLARATION(mk_bcon(final), make_redeclare_keywords(true ,redeclare),
721723 each ? Absyn__EACH : Absyn__NON_5fEACH, cd.ast ? Absyn__CLASSDEF(RML_TRUE, cd.ast) : e_spec,
722- mk_some_or_none(constr));
724+ mk_some_or_none($ constr.ast ));
723725 }
724726 ;
725727
@@ -779,7 +781,7 @@ equation returns [void* ast] :
779781 }
780782 )
781783 cmt= comment
782- { $ast = Absyn__EQUATIONITEM(e, mk_some_or_none(cmt), INFO($start,$stop ));}
784+ { $ast = Absyn__EQUATIONITEM(e, mk_some_or_none(cmt), INFO($start));}
783785 ;
784786
785787algorithm returns [ void* ast] :
@@ -797,7 +799,7 @@ algorithm returns [void* ast] :
797799 }
798800 )
799801 cmt= comment
800- { $ast = Absyn__ALGORITHMITEM(a, mk_some_or_none(cmt), INFO($start,$stop ));}
802+ { $ast = Absyn__ALGORITHMITEM(a, mk_some_or_none(cmt), INFO($start));}
801803 ;
802804
803805assign_clause_a returns [ void* ast] :
0 commit comments