Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dóra Kocsis
dynare
Commits
65823417
Commit
65823417
authored
Jun 18, 2010
by
Houtan Bastani
Browse files
enable multi-line native matlab statements
parent
a0cd4b33
Changes
3
Hide whitespace changes
Inline
Side-by-side
preprocessor/DynareFlex.ll
View file @
65823417
...
...
@@ -44,6 +44,7 @@ int comment_caller, line_caller;
this
flag
is
set
to
1
,
when
command
finished
it
is
set
to
0
*
/
int
sigma_e
=
0
;
string
eofbuff
;
%
}
%option
c
++
...
...
@@ -52,11 +53,12 @@ int sigma_e = 0;
%option
case-insensitive
noyywrap
nounput
batch
debug
never-interactive
/
*
NB:
if
new
start
conditions
are
defined
,
add
them
in
the
line
for
[
\n
]
+
*
/
/
*
NB:
if
new
start
conditions
are
defined
,
add
them
in
the
line
for
[
\n
]
+
and
<<
EOF
>>
*
/
%x
COMMENT
%x
DYNARE_STATEMENT
%x
DYNARE_BLOCK
%x
NATIVE
%x
NATIVE_COMMENT
%x
LINE1
%x
LINE2
%x
LINE3
...
...
@@ -569,29 +571,39 @@ int sigma_e = 0;
/* Add the native statement */
<NATIVE>{
[^/%*\n]* |
"
*
" |
"
/
" { yymore(); }
\n {
driver.add_native_remove_charset(yytext, "
\n
");
BEGIN INITIAL;
}
"
%".* {
driver.add_native_remove_charset(yytext, "%");
BEGIN INITIAL;
}
"
//
".* {
driver.add_native_remove_charset(yytext, "
//
");
BEGIN INITIAL;
}
"
/
*
" {
driver.add_native_remove_charset(yytext, "
/
*
");
comment_caller = INITIAL;
BEGIN COMMENT;
}
[^/%*\n\.]* |
\.{1,2} |
"
*
" |
"
/
" { yymore(); eofbuff = string(yytext); }
\.{3,}[[:space:]]*\n { driver.add_native_remove_charset(yytext, "
\n
"); }
\n {
if (strlen(yytext) > 1)
driver.add_native_remove_charset(yytext, "
\n
");
BEGIN INITIAL;
}
<<EOF>> {
driver.add_native(eofbuff);
yyterminate();
}
\.{3,}[[:space:]]*"
%".*\n |
"%"[^\n]* { driver.add_native_remove_charset(yytext, "%"); }
\.{3,}[[:space:]]*"
//
".*\n |
"
//
"[^\n]* { driver.add_native_remove_charset(yytext, "
//
"); }
\.{3,}[[:space:]]*"
/
*
" {
driver.add_native_remove_charset(yytext, "
/
*
");
BEGIN NATIVE_COMMENT;
}
"
/
*
" {
driver.add_native_remove_charset(yytext, "
/
*
");
comment_caller = NATIVE;
BEGIN COMMENT;
}
}
<*><<EOF>> { yyterminate(); }
<NATIVE_COMMENT>"
*
/
"[[:space:]]*\n { BEGIN NATIVE; }
<NATIVE_COMMENT>.
<INITIAL,DYNARE_STATEMENT,DYNARE_BLOCK,COMMENT,LINE1,LINE2,LINE3,NATIVE_COMMENT><<EOF>> { yyterminate(); }
<*>. { driver.error(*yylloc, "
character
unrecognized
by
lexer
"); }
%%
...
...
preprocessor/ParsingDriver.cc
View file @
65823417
...
...
@@ -1840,14 +1840,20 @@ ParsingDriver::add_model_var_or_external_function(string *function_name, bool in
}
void
ParsingDriver
::
add_native_remove_charset
(
const
char
*
s
,
const
char
*
token
)
ParsingDriver
::
add_native
(
const
string
&
s
)
{
mod_file
->
addStatement
(
new
NativeStatement
(
s
));
}
void
ParsingDriver
::
add_native_remove_charset
(
const
char
*
s
,
const
string
&
token
)
{
string
str
=
string
(
s
);
string
tok
=
string
(
token
);
size_t
found
=
str
.
find
(
token
);
assert
(
found
!=
string
::
npos
);
mod_file
->
addStatement
(
new
NativeStatement
(
str
.
substr
(
0
,
found
)));
str
.
resize
(
found
);
add_native
(
str
);
}
void
...
...
preprocessor/ParsingDriver.hh
View file @
65823417
...
...
@@ -489,8 +489,10 @@ public:
void
add_external_function_arg
(
NodeID
arg
);
//! Adds an external function call node
NodeID
add_model_var_or_external_function
(
string
*
function_name
,
bool
in_model_block
);
//! Adds a native statement
void
add_native
(
const
string
&
s
);
//! Adds a native statement, first removing the set of characters passed in token (and everything after)
void
add_native_remove_charset
(
const
char
*
s
,
const
char
*
token
);
void
add_native_remove_charset
(
const
char
*
s
,
const
string
&
token
);
//! Resets data_tree and model_tree pointers to default (i.e. mod_file->expressions_tree)
void
reset_data_tree
();
//! Begin a steady_state_model block
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment