877 lines
49 KiB
HTML
877 lines
49 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.13.2"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>mupp: mupp::prog::PProgram Struct Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<script type="text/javascript" src="clipboard.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="cookie.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">mupp<span id="projectnumber"> 1.1.0</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.13.2 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() { codefold.init(0); });
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search',false);
|
|
$(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function(){ initResizable(false); });
|
|
/* @license-end */
|
|
</script>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="namespacemupp.html">mupp</a></li><li class="navelem"><a class="el" href="namespacemupp_1_1prog.html">prog</a></li><li class="navelem"><a class="el" href="structmupp_1_1prog_1_1PProgram.html">PProgram</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#pub-types">Public Types</a> |
|
|
<a href="#pub-methods">Public Member Functions</a> |
|
|
<a href="#pri-attribs">Private Attributes</a> |
|
|
<a href="structmupp_1_1prog_1_1PProgram-members.html">List of all members</a> </div>
|
|
<div class="headertitle"><div class="title">mupp::prog::PProgram Struct Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>The <a class="el" href="structmupp_1_1prog_1_1PProgram.html" title="The PProgram struct performs semantic analysis on the AST.">PProgram</a> struct performs semantic analysis on the AST.
|
|
<a href="#details">More...</a></p>
|
|
|
|
<p><code>#include <<a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>></code></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
|
|
Public Types</h2></td></tr>
|
|
<tr class="memitem:a2059bd84272c0d7461f3ef7fe7a9f7d1" id="r_a2059bd84272c0d7461f3ef7fe7a9f7d1"><td class="memItemLeft" align="right" valign="top">typedef bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2059bd84272c0d7461f3ef7fe7a9f7d1">result_type</a></td></tr>
|
|
<tr class="memdesc:a2059bd84272c0d7461f3ef7fe7a9f7d1"><td class="mdescLeft"> </td><td class="mdescRight">Return type for all visitor methods. <br /></td></tr>
|
|
<tr class="separator:a2059bd84272c0d7461f3ef7fe7a9f7d1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
|
Public Member Functions</h2></td></tr>
|
|
<tr class="memitem:a4ed3d8842acf40a805c117f8663eb706" id="r_a4ed3d8842acf40a805c117f8663eb706"><td class="memTemplParams" colspan="2">template<typename <a class="el" href="structmupp_1_1PErrorHandler.html">PErrorHandler</a>> </td></tr>
|
|
<tr class="memitem:a4ed3d8842acf40a805c117f8663eb706"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a4ed3d8842acf40a805c117f8663eb706">PProgram</a> (<a class="el" href="structmupp_1_1PErrorHandler.html">PErrorHandler</a> &error_handler_)</td></tr>
|
|
<tr class="memdesc:a4ed3d8842acf40a805c117f8663eb706"><td class="mdescLeft"> </td><td class="mdescRight">Constructor that sets up the error handler. <br /></td></tr>
|
|
<tr class="separator:a4ed3d8842acf40a805c117f8663eb706"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad798ff0d1bdc164d9df57befe061ccb0" id="r_ad798ff0d1bdc164d9df57befe061ccb0"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad798ff0d1bdc164d9df57befe061ccb0">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1nil.html">ast::nil</a>)</td></tr>
|
|
<tr class="memdesc:ad798ff0d1bdc164d9df57befe061ccb0"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for nil AST nodes (should never be called). <br /></td></tr>
|
|
<tr class="separator:ad798ff0d1bdc164d9df57befe061ccb0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a140dbcc56a06fbfc192ca0d502c09ba3" id="r_a140dbcc56a06fbfc192ca0d502c09ba3"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a140dbcc56a06fbfc192ca0d502c09ba3">operator()</a> (double x)</td></tr>
|
|
<tr class="memdesc:a140dbcc56a06fbfc192ca0d502c09ba3"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for numeric literal nodes. <br /></td></tr>
|
|
<tr class="separator:a140dbcc56a06fbfc192ca0d502c09ba3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a860ec2b646a41f5532fea73fe536948f" id="r_a860ec2b646a41f5532fea73fe536948f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a860ec2b646a41f5532fea73fe536948f">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1assignment.html">ast::assignment</a> const &x)</td></tr>
|
|
<tr class="memdesc:a860ec2b646a41f5532fea73fe536948f"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for assignment statements. <br /></td></tr>
|
|
<tr class="separator:a860ec2b646a41f5532fea73fe536948f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9259eb324dc90ff000eb8f25ade40880" id="r_a9259eb324dc90ff000eb8f25ade40880"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9259eb324dc90ff000eb8f25ade40880">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1expression.html">ast::expression</a> const &x)</td></tr>
|
|
<tr class="memdesc:a9259eb324dc90ff000eb8f25ade40880"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for expression nodes. <br /></td></tr>
|
|
<tr class="separator:a9259eb324dc90ff000eb8f25ade40880"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a168f67dc4180447ab8d5ed4a8afc4d60" id="r_a168f67dc4180447ab8d5ed4a8afc4d60"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a168f67dc4180447ab8d5ed4a8afc4d60">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1function.html">ast::function</a> const &x)</td></tr>
|
|
<tr class="memdesc:a168f67dc4180447ab8d5ed4a8afc4d60"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for function call nodes. <br /></td></tr>
|
|
<tr class="separator:a168f67dc4180447ab8d5ed4a8afc4d60"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab25cba0b5086461dcfa284731d4edeca" id="r_ab25cba0b5086461dcfa284731d4edeca"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab25cba0b5086461dcfa284731d4edeca">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1operation.html">ast::operation</a> const &x)</td></tr>
|
|
<tr class="memdesc:ab25cba0b5086461dcfa284731d4edeca"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for binary operation nodes. <br /></td></tr>
|
|
<tr class="separator:ab25cba0b5086461dcfa284731d4edeca"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abd0dbb3cf9a394bc676759e8f19fed8f" id="r_abd0dbb3cf9a394bc676759e8f19fed8f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#abd0dbb3cf9a394bc676759e8f19fed8f">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1power.html">ast::power</a> const &x)</td></tr>
|
|
<tr class="memdesc:abd0dbb3cf9a394bc676759e8f19fed8f"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for power operation nodes. <br /></td></tr>
|
|
<tr class="separator:abd0dbb3cf9a394bc676759e8f19fed8f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a13efd0b0b9e36f0e346d09fda8a875ee" id="r_a13efd0b0b9e36f0e346d09fda8a875ee"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a13efd0b0b9e36f0e346d09fda8a875ee">operator()</a> (<a class="el" href="namespacemupp_1_1ast.html#a7b19dec7f1f65df80fe42573d506b051">ast::statement</a> const &x)</td></tr>
|
|
<tr class="memdesc:a13efd0b0b9e36f0e346d09fda8a875ee"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for statement nodes (variant wrapper). <br /></td></tr>
|
|
<tr class="separator:a13efd0b0b9e36f0e346d09fda8a875ee"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a863a09cac194063b0740d0cb90b9b17f" id="r_a863a09cac194063b0740d0cb90b9b17f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a863a09cac194063b0740d0cb90b9b17f">operator()</a> (<a class="el" href="namespacemupp_1_1ast.html#a70c0971fe1d0c227c4fbe28b6fd0b7fe">ast::statement_list</a> const &x)</td></tr>
|
|
<tr class="memdesc:a863a09cac194063b0740d0cb90b9b17f"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for statement lists (program entry point). <br /></td></tr>
|
|
<tr class="separator:a863a09cac194063b0740d0cb90b9b17f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac3a0fcd135f4b4c11d736450779a6725" id="r_ac3a0fcd135f4b4c11d736450779a6725"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac3a0fcd135f4b4c11d736450779a6725">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1unary.html">ast::unary</a> const &x)</td></tr>
|
|
<tr class="memdesc:ac3a0fcd135f4b4c11d736450779a6725"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for unary operation nodes. <br /></td></tr>
|
|
<tr class="separator:ac3a0fcd135f4b4c11d736450779a6725"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ab834aece8fba012d5fce72471f2291f8" id="r_ab834aece8fba012d5fce72471f2291f8"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab834aece8fba012d5fce72471f2291f8">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1variable.html">ast::variable</a> const &x)</td></tr>
|
|
<tr class="memdesc:ab834aece8fba012d5fce72471f2291f8"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for variable reference nodes. <br /></td></tr>
|
|
<tr class="separator:ab834aece8fba012d5fce72471f2291f8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad946bbb1be7270c61c550488d35b559c" id="r_ad946bbb1be7270c61c550488d35b559c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad946bbb1be7270c61c550488d35b559c">operator()</a> (<a class="el" href="structmupp_1_1ast_1_1variable__declaration.html">ast::variable_declaration</a> const &x)</td></tr>
|
|
<tr class="memdesc:ad946bbb1be7270c61c550488d35b559c"><td class="mdescLeft"> </td><td class="mdescRight">Visitor for variable declaration nodes. <br /></td></tr>
|
|
<tr class="separator:ad946bbb1be7270c61c550488d35b559c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a78e06f33c3134f4667d526ea61dffa55" id="r_a78e06f33c3134f4667d526ea61dffa55"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a78e06f33c3134f4667d526ea61dffa55">add_predef_var_values</a> (const std::string &name, std::vector< double > &val, std::vector< double > &err)</td></tr>
|
|
<tr class="memdesc:a78e06f33c3134f4667d526ea61dffa55"><td class="mdescLeft"> </td><td class="mdescRight">Injects predefined variable values from collection data. <br /></td></tr>
|
|
<tr class="separator:a78e06f33c3134f4667d526ea61dffa55"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad504d1ae672e6c6fb5fb04af78fa58fb" id="r_ad504d1ae672e6c6fb5fb04af78fa58fb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad504d1ae672e6c6fb5fb04af78fa58fb">add_var</a> (std::string const &name)</td></tr>
|
|
<tr class="memdesc:ad504d1ae672e6c6fb5fb04af78fa58fb"><td class="mdescLeft"> </td><td class="mdescRight">Adds a variable to the symbol table. <br /></td></tr>
|
|
<tr class="separator:ad504d1ae672e6c6fb5fb04af78fa58fb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a07949a28d12922e7874e3436af5fed51" id="r_a07949a28d12922e7874e3436af5fed51"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a07949a28d12922e7874e3436af5fed51">find_var</a> (std::string const &name)</td></tr>
|
|
<tr class="memdesc:a07949a28d12922e7874e3436af5fed51"><td class="mdescLeft"> </td><td class="mdescRight">Checks if a variable exists in the symbol table. <br /></td></tr>
|
|
<tr class="separator:a07949a28d12922e7874e3436af5fed51"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a81d4ba31eec7a9124ffcbceb35199fb8" id="r_a81d4ba31eec7a9124ffcbceb35199fb8"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="#a81d4ba31eec7a9124ffcbceb35199fb8">find_var</a> (std::string const &name, unsigned int &idx)</td></tr>
|
|
<tr class="memdesc:a81d4ba31eec7a9124ffcbceb35199fb8"><td class="mdescLeft"> </td><td class="mdescRight">Finds a variable and returns its index. <br /></td></tr>
|
|
<tr class="separator:a81d4ba31eec7a9124ffcbceb35199fb8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a393c3bf37390319df841eb5120fd1e02" id="r_a393c3bf37390319df841eb5120fd1e02"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="#a393c3bf37390319df841eb5120fd1e02">pos_to_var</a> (std::string const &name, bool &ok)</td></tr>
|
|
<tr class="memdesc:a393c3bf37390319df841eb5120fd1e02"><td class="mdescLeft"> </td><td class="mdescRight">Converts position-based variable reference to variable name. <br /></td></tr>
|
|
<tr class="separator:a393c3bf37390319df841eb5120fd1e02"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a51381702964c1a0d92d76075d64592ce" id="r_a51381702964c1a0d92d76075d64592ce"><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="classmupp_1_1prog_1_1PVarHandler.html">PVarHandler</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a51381702964c1a0d92d76075d64592ce">getVars</a> ()</td></tr>
|
|
<tr class="memdesc:a51381702964c1a0d92d76075d64592ce"><td class="mdescLeft"> </td><td class="mdescRight">Gets all variables from the symbol table. <br /></td></tr>
|
|
<tr class="separator:a51381702964c1a0d92d76075d64592ce"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
|
|
Private Attributes</h2></td></tr>
|
|
<tr class="memitem:a1b76d93277fe5e1422b3614e92887417" id="r_a1b76d93277fe5e1422b3614e92887417"><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="classmupp_1_1prog_1_1PVarHandler.html">PVarHandler</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1b76d93277fe5e1422b3614e92887417">fVariable</a></td></tr>
|
|
<tr class="memdesc:a1b76d93277fe5e1422b3614e92887417"><td class="mdescLeft"> </td><td class="mdescRight">Symbol table of declared variables. <br /></td></tr>
|
|
<tr class="separator:a1b76d93277fe5e1422b3614e92887417"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8ba4b64aae4fab1d6970bc42d08bf172" id="r_a8ba4b64aae4fab1d6970bc42d08bf172"><td class="memItemLeft" align="right" valign="top">std::map< int, std::string > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a8ba4b64aae4fab1d6970bc42d08bf172">fVarPos</a></td></tr>
|
|
<tr class="memdesc:a8ba4b64aae4fab1d6970bc42d08bf172"><td class="mdescLeft"> </td><td class="mdescRight">Map from position index to variable name. <br /></td></tr>
|
|
<tr class="separator:a8ba4b64aae4fab1d6970bc42d08bf172"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:acc33c6b4894ffd04972f1489ceb630a8" id="r_acc33c6b4894ffd04972f1489ceb630a8"><td class="memItemLeft" align="right" valign="top">boost::function< void(int tag, std::string const &what)> </td><td class="memItemRight" valign="bottom"><a class="el" href="#acc33c6b4894ffd04972f1489ceb630a8">error_handler</a></td></tr>
|
|
<tr class="memdesc:acc33c6b4894ffd04972f1489ceb630a8"><td class="mdescLeft"> </td><td class="mdescRight">Error handler function for reporting semantic errors. <br /></td></tr>
|
|
<tr class="separator:acc33c6b4894ffd04972f1489ceb630a8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>The <a class="el" href="structmupp_1_1prog_1_1PProgram.html" title="The PProgram struct performs semantic analysis on the AST.">PProgram</a> struct performs semantic analysis on the AST. </p>
|
|
<p>This visitor pattern struct traverses the AST generated by the parser and performs semantic checks:</p><ul>
|
|
<li>Verifies that variables are declared before use</li>
|
|
<li>Prevents duplicate variable declarations</li>
|
|
<li>Validates function and operator usage</li>
|
|
<li>Resolves variable references and position-based lookups</li>
|
|
</ul>
|
|
<p>After successful semantic analysis, the variable table can be used by <a class="el" href="structmupp_1_1prog_1_1PProgEval.html" title="The PProgEval struct evaluates expressions using the AST.">PProgEval</a> for expression evaluation. Semantic errors are reported via the error handler with source position information. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00164">164</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
<a id="a2059bd84272c0d7461f3ef7fe7a9f7d1" name="a2059bd84272c0d7461f3ef7fe7a9f7d1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a2059bd84272c0d7461f3ef7fe7a9f7d1">◆ </a></span>result_type</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">typedef bool <a class="el" href="#a2059bd84272c0d7461f3ef7fe7a9f7d1">mupp::prog::PProgram::result_type</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Return type for all visitor methods. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00166">166</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
|
<a id="a4ed3d8842acf40a805c117f8663eb706" name="a4ed3d8842acf40a805c117f8663eb706"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4ed3d8842acf40a805c117f8663eb706">◆ </a></span>PProgram()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename <a class="el" href="structmupp_1_1PErrorHandler.html">PErrorHandler</a>> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">mupp::prog::PProgram::PProgram </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1PErrorHandler.html">PErrorHandler</a> &</td> <td class="paramname"><span class="paramname"><em>error_handler_</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Constructor that sets up the error handler. </p>
|
|
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
|
<table class="tparams">
|
|
<tr><td class="paramname"><a class="el" href="structmupp_1_1PErrorHandler.html" title="The PErrorHandler struct handles parsing and semantic errors.">PErrorHandler</a></td><td>the error handler type </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">error_handler_</td><td>reference to the error handler for reporting semantic errors </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00174">174</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Member Function Documentation</h2>
|
|
<a id="a78e06f33c3134f4667d526ea61dffa55" name="a78e06f33c3134f4667d526ea61dffa55"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a78e06f33c3134f4667d526ea61dffa55">◆ </a></span>add_predef_var_values()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void mupp::prog::PProgram::add_predef_var_values </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const std::string &</td> <td class="paramname"><span class="paramname"><em>name</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">std::vector< double > &</td> <td class="paramname"><span class="paramname"><em>val</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">std::vector< double > &</td> <td class="paramname"><span class="paramname"><em>err</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Injects predefined variable values from collection data. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">name</td><td>the variable name </td></tr>
|
|
<tr><td class="paramname">val</td><td>vector of values for this variable </td></tr>
|
|
<tr><td class="paramname">err</td><td>vector of error values for this variable </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00261">261</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ad504d1ae672e6c6fb5fb04af78fa58fb" name="ad504d1ae672e6c6fb5fb04af78fa58fb"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad504d1ae672e6c6fb5fb04af78fa58fb">◆ </a></span>add_var()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void mupp::prog::PProgram::add_var </td>
|
|
<td>(</td>
|
|
<td class="paramtype">std::string const &</td> <td class="paramname"><span class="paramname"><em>name</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Adds a variable to the symbol table. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">name</td><td>the variable name to add </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00275">275</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a07949a28d12922e7874e3436af5fed51" name="a07949a28d12922e7874e3436af5fed51"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a07949a28d12922e7874e3436af5fed51">◆ </a></span>find_var() <span class="overload">[1/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::find_var </td>
|
|
<td>(</td>
|
|
<td class="paramtype">std::string const &</td> <td class="paramname"><span class="paramname"><em>name</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Checks if a variable exists in the symbol table. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">name</td><td>the variable name to find (with or without leading '$') </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if variable exists, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00285">285</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a81d4ba31eec7a9124ffcbceb35199fb8" name="a81d4ba31eec7a9124ffcbceb35199fb8"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a81d4ba31eec7a9124ffcbceb35199fb8">◆ </a></span>find_var() <span class="overload">[2/2]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::find_var </td>
|
|
<td>(</td>
|
|
<td class="paramtype">std::string const &</td> <td class="paramname"><span class="paramname"><em>name</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">unsigned int &</td> <td class="paramname"><span class="paramname"><em>idx</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Finds a variable and returns its index. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">name</td><td>the variable name to find (with or without leading '$') </td></tr>
|
|
<tr><td class="paramname">idx</td><td>output parameter for the variable index </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if variable exists, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00291">291</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a51381702964c1a0d92d76075d64592ce" name="a51381702964c1a0d92d76075d64592ce"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a51381702964c1a0d92d76075d64592ce">◆ </a></span>getVars()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">std::vector< <a class="el" href="classmupp_1_1prog_1_1PVarHandler.html">PVarHandler</a> > mupp::prog::PProgram::getVars </td>
|
|
<td>(</td>
|
|
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Gets all variables from the symbol table. </p>
|
|
<dl class="section return"><dt>Returns</dt><dd>vector of all variable handlers </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00311">311</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a860ec2b646a41f5532fea73fe536948f" name="a860ec2b646a41f5532fea73fe536948f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a860ec2b646a41f5532fea73fe536948f">◆ </a></span>operator()() <span class="overload">[1/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1assignment.html">ast::assignment</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for assignment statements. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the assignment AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if variable exists and RHS is valid, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00084">84</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a9259eb324dc90ff000eb8f25ade40880" name="a9259eb324dc90ff000eb8f25ade40880"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9259eb324dc90ff000eb8f25ade40880">◆ </a></span>operator()() <span class="overload">[2/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1expression.html">ast::expression</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for expression nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the expression AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if all operands and operations are valid, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00101">101</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a168f67dc4180447ab8d5ed4a8afc4d60" name="a168f67dc4180447ab8d5ed4a8afc4d60"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a168f67dc4180447ab8d5ed4a8afc4d60">◆ </a></span>operator()() <span class="overload">[3/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1function.html">ast::function</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for function call nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the function AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if function is valid and argument is valid, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00114">114</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ad798ff0d1bdc164d9df57befe061ccb0" name="ad798ff0d1bdc164d9df57befe061ccb0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad798ff0d1bdc164d9df57befe061ccb0">◆ </a></span>operator()() <span class="overload">[4/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1nil.html">ast::nil</a></td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for nil AST nodes (should never be called). </p>
|
|
<dl class="section return"><dt>Returns</dt><dd>always false (assertion failure) </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00187">187</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ab25cba0b5086461dcfa284731d4edeca" name="ab25cba0b5086461dcfa284731d4edeca"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab25cba0b5086461dcfa284731d4edeca">◆ </a></span>operator()() <span class="overload">[5/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1operation.html">ast::operation</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for binary operation nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the operation AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if operation and operand are valid, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00147">147</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="abd0dbb3cf9a394bc676759e8f19fed8f" name="abd0dbb3cf9a394bc676759e8f19fed8f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#abd0dbb3cf9a394bc676759e8f19fed8f">◆ </a></span>operator()() <span class="overload">[6/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1power.html">ast::power</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for power operation nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the power AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if base and exponent are valid, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00173">173</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a13efd0b0b9e36f0e346d09fda8a875ee" name="a13efd0b0b9e36f0e346d09fda8a875ee"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a13efd0b0b9e36f0e346d09fda8a875ee">◆ </a></span>operator()() <span class="overload">[7/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="namespacemupp_1_1ast.html#a7b19dec7f1f65df80fe42573d506b051">ast::statement</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for statement nodes (variant wrapper). </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the statement AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>result of visiting the underlying statement type </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00188">188</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a863a09cac194063b0740d0cb90b9b17f" name="a863a09cac194063b0740d0cb90b9b17f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a863a09cac194063b0740d0cb90b9b17f">◆ </a></span>operator()() <span class="overload">[8/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="namespacemupp_1_1ast.html#a70c0971fe1d0c227c4fbe28b6fd0b7fe">ast::statement_list</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for statement lists (program entry point). </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the statement list AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if all statements are valid, false if any statement fails </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00193">193</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac3a0fcd135f4b4c11d736450779a6725" name="ac3a0fcd135f4b4c11d736450779a6725"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac3a0fcd135f4b4c11d736450779a6725">◆ </a></span>operator()() <span class="overload">[9/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1unary.html">ast::unary</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for unary operation nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the unary AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if operator and operand are valid, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00202">202</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ab834aece8fba012d5fce72471f2291f8" name="ab834aece8fba012d5fce72471f2291f8"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab834aece8fba012d5fce72471f2291f8">◆ </a></span>operator()() <span class="overload">[10/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1variable.html">ast::variable</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for variable reference nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the variable AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if variable is declared, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00220">220</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ad946bbb1be7270c61c550488d35b559c" name="ad946bbb1be7270c61c550488d35b559c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad946bbb1be7270c61c550488d35b559c">◆ </a></span>operator()() <span class="overload">[11/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="structmupp_1_1ast_1_1variable__declaration.html">ast::variable_declaration</a> const &</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for variable declaration nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the variable declaration AST node </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true if declaration is valid and RHS (if present) is valid, false otherwise </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00239">239</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a140dbcc56a06fbfc192ca0d502c09ba3" name="a140dbcc56a06fbfc192ca0d502c09ba3"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a140dbcc56a06fbfc192ca0d502c09ba3">◆ </a></span>operator()() <span class="overload">[12/12]</span></h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">bool mupp::prog::PProgram::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>x</em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Visitor for numeric literal nodes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">x</td><td>the numeric value </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>true (literals are always valid) </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00079">79</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a393c3bf37390319df841eb5120fd1e02" name="a393c3bf37390319df841eb5120fd1e02"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a393c3bf37390319df841eb5120fd1e02">◆ </a></span>pos_to_var()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">std::string mupp::prog::PProgram::pos_to_var </td>
|
|
<td>(</td>
|
|
<td class="paramtype">std::string const &</td> <td class="paramname"><span class="paramname"><em>name</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">bool &</td> <td class="paramname"><span class="paramname"><em>ok</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Converts position-based variable reference to variable name. </p>
|
|
<p>Supports syntax like $0, $1, etc. to reference variables by position. </p><dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">name</td><td>the variable reference (name or position number) </td></tr>
|
|
<tr><td class="paramname">ok</td><td>output parameter indicating whether conversion succeeded </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>the resolved variable name, or "??" if position is out of range </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8cpp_source.html#l00313">313</a> of file <a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Member Data Documentation</h2>
|
|
<a id="acc33c6b4894ffd04972f1489ceb630a8" name="acc33c6b4894ffd04972f1489ceb630a8"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#acc33c6b4894ffd04972f1489ceb630a8">◆ </a></span>error_handler</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">boost::function< void(int tag, std::string const& what)> mupp::prog::PProgram::error_handler</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Error handler function for reporting semantic errors. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00319">319</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a1b76d93277fe5e1422b3614e92887417" name="a1b76d93277fe5e1422b3614e92887417"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1b76d93277fe5e1422b3614e92887417">◆ </a></span>fVariable</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">std::vector<<a class="el" href="classmupp_1_1prog_1_1PVarHandler.html">PVarHandler</a>> mupp::prog::PProgram::fVariable</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Symbol table of declared variables. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00314">314</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a8ba4b64aae4fab1d6970bc42d08bf172" name="a8ba4b64aae4fab1d6970bc42d08bf172"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8ba4b64aae4fab1d6970bc42d08bf172">◆ </a></span>fVarPos</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">std::map<int, std::string> mupp::prog::PProgram::fVarPos</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Map from position index to variable name. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PProgram_8hpp_source.html#l00315">315</a> of file <a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this struct was generated from the following files:<ul>
|
|
<li>/workspace/LMU/musrfit/src/musredit_qt6/mupp/var/include/<a class="el" href="PProgram_8hpp_source.html">PProgram.hpp</a></li>
|
|
<li>/workspace/LMU/musrfit/src/musredit_qt6/mupp/var/src/<a class="el" href="PProgram_8cpp_source.html">PProgram.cpp</a></li>
|
|
</ul>
|
|
</div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2
|
|
</small></address>
|
|
</div><!-- doc-content -->
|
|
</body>
|
|
</html>
|