Skip to content

Commit

Permalink
Fixed bug in not resetting class file string after parsing. Changed "…
Browse files Browse the repository at this point in the history
…NoFile" to empty string when no class file present.

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@1883 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Peter Aronsson committed Aug 17, 2005
1 parent 1ca372c commit 3cf7d77
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
18 changes: 9 additions & 9 deletions Compiler/Interactive.rml
Expand Up @@ -691,7 +691,7 @@ with "Ceval.rml"
st as SYMBOLTABLE(p,s,ic,iv,cf)) => (resstr,st)

rule update_program(
Absyn.PROGRAM([Absyn.CLASS(name,false,false,false,Absyn.R_MODEL,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"NoFile")],Absyn.TOP),
Absyn.PROGRAM([Absyn.CLASS(name,false,false,false,Absyn.R_MODEL,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"")],Absyn.TOP),
p) => newp &
let newst = SYMBOLTABLE(newp,s,ic,iv,cf)
----------------------------------------
Expand All @@ -706,7 +706,7 @@ with "Ceval.rml"
Absyn.path_last_ident(path') => name &
Absyn.strip_last(path') => wpath &
update_program(
Absyn.PROGRAM([Absyn.CLASS(name,false,false,false,Absyn.R_MODEL,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"NoFile")],Absyn.WITHIN(wpath)),p) => newp &
Absyn.PROGRAM([Absyn.CLASS(name,false,false,false,Absyn.R_MODEL,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"")],Absyn.WITHIN(wpath)),p) => newp &
let newst = SYMBOLTABLE(newp,s,ic,iv,cf)
---------------------------------------------------
evaluate_graphical_api(
Expand All @@ -718,7 +718,7 @@ with "Ceval.rml"

rule Absyn.cref_to_path(cr) => path &
update_program(
Absyn.PROGRAM([Absyn.CLASS(name,false,false,false,Absyn.R_MODEL,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"NoFile")],Absyn.WITHIN(path)),
Absyn.PROGRAM([Absyn.CLASS(name,false,false,false,Absyn.R_MODEL,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"")],Absyn.WITHIN(path)),
p) => newp &
let newst = SYMBOLTABLE(newp,s,ic,iv,cf) &
string_append(name,"\n") => resstr
Expand Down Expand Up @@ -2846,15 +2846,15 @@ with "Ceval.rml"
axiom update_program (Absyn.PROGRAM([],_),prg) => prg

rule (* For split definitions at top, when introducing new model, eg. "package A" *)
let newclass = Absyn.CLASS(name,p,false,e,restr,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"NoFile") &
let newclass = Absyn.CLASS(name,p,false,e,restr,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"") &
update_program(Absyn.PROGRAM([newclass],Absyn.TOP),oldp) => newp
-------------------------------------------------------
update_program(Absyn.BEGIN_DEFINITION(Absyn.IDENT(name),restr,p,e),oldp) => newp

rule (* For split definitions not at top, eg. "package A.B" *)
Absyn.strip_last(path) => w &
Absyn.path_last_ident(path) => name &
let newclass = Absyn.CLASS(name,p,false,e,restr,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"NoFile") &
let newclass = Absyn.CLASS(name,p,false,e,restr,Absyn.PARTS([Absyn.PUBLIC([])],NONE),"") &
update_program(Absyn.PROGRAM([newclass],Absyn.WITHIN(w)),oldp) => newp
-------------------------------------------------------
update_program(Absyn.BEGIN_DEFINITION(path as Absyn.QUALIFIED(_,_),
Expand Down Expand Up @@ -3136,19 +3136,19 @@ with "Ceval.rml"
lookup_classdef(path,_,p) => (cdef,path)

axiom lookup_classdef(Absyn.IDENT("Real"),_,_) =>
(Absyn.CLASS("Real",false,false,false,Absyn.R_PREDEFINED_REAL,Absyn.PARTS([],NONE),"NoFile"),
(Absyn.CLASS("Real",false,false,false,Absyn.R_PREDEFINED_REAL,Absyn.PARTS([],NONE),""),
Absyn.IDENT("Real"))

axiom lookup_classdef(Absyn.IDENT("Integer"),_,_) =>
(Absyn.CLASS("Integer",false,false,false,Absyn.R_PREDEFINED_INT,Absyn.PARTS([],NONE),"NoFile"),
(Absyn.CLASS("Integer",false,false,false,Absyn.R_PREDEFINED_INT,Absyn.PARTS([],NONE),""),
Absyn.IDENT("Integer"))

axiom lookup_classdef(Absyn.IDENT("String"),_,_) =>
(Absyn.CLASS("String",false,false,false,Absyn.R_PREDEFINED_STRING,Absyn.PARTS([],NONE),"NoFile"),
(Absyn.CLASS("String",false,false,false,Absyn.R_PREDEFINED_STRING,Absyn.PARTS([],NONE),""),
Absyn.IDENT("String"))

axiom lookup_classdef(Absyn.IDENT("Boolean"),_,_) =>
(Absyn.CLASS("Boolean",false,false,false,Absyn.R_PREDEFINED_BOOL,Absyn.PARTS([],NONE),"NoFile"),
(Absyn.CLASS("Boolean",false,false,false,Absyn.R_PREDEFINED_BOOL,Absyn.PARTS([],NONE),""),
Absyn.IDENT("Boolean"))

rule Print.print_error_buf "#Error, lookup_classdef failed\n" &
Expand Down
6 changes: 5 additions & 1 deletion Compiler/absyn_builder/parse.cpp
Expand Up @@ -171,6 +171,7 @@ extern "C"
parse_tree_dumper dumper(std::cerr);
dumper.dump(RefMyAST(e.node));
ast = mk_nil();
modelicafilename=string("");
RML_TAILCALLK(rmlFC);
}
catch (ANTLR_USE_NAMESPACE(antlr)MismatchedTokenException &e)
Expand All @@ -193,9 +194,10 @@ extern "C"
if (flat_parse) delete parse;
if (lex) delete lex;
ast = mk_nil();
modelicafilename=string("");
RML_TAILCALLK(rmlSC); // rmlFC
}

modelicafilename=string("");
if (debug)
{
std::cout << "Build done\n";
Expand All @@ -208,6 +210,7 @@ extern "C"
if (parse) delete parse;
if (lex) delete lex;
if (flat_lex) delete flat_lex;

RML_TAILCALLK(rmlSC);
}
else
Expand All @@ -220,6 +223,7 @@ extern "C"
ast = mk_nil();
std::cerr << "Error building AST" << std::endl;
}

RML_TAILCALLK(rmlSC); // rmlFC
}
RML_END_LABEL
Expand Down

0 comments on commit 3cf7d77

Please sign in to comment.