archeus/doc/doxygen/html/d5/df3/lexer_8h_source.html

478 lines
79 KiB
HTML

<!-- HTML header for doxygen 1.9.2-->
<!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" class="dark-mode">
<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.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Archeus: /home/herbglitch/programs/archeus/arc/include/arc/std/lexer.h Source File</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>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<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" />
<link href="../../doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="../../doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
<link href="../../doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../doxygen-awesome-darkmode-toggle.js"></script>
</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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Archeus<span id="projectnumber">&#160;0.0.0</span>
</div>
<div id="projectbrief">A C library and game engine that focuses on documentation</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @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&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d5/df3/lexer_8h_source.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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 class="header">
<div class="headertitle"><div class="title">lexer.h</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d5/df3/lexer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef ARC_STD_LEXER_H_</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define ARC_STD_LEXER_H_</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &quot;<a class="code" href="../../da/d66/string_8h.html">arc/std/string.h</a>&quot;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"></span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">/**</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * @brief a lexer type</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">*/</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446"> 13</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> <a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a>;</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"></span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">/**</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * @brief a lexer token type</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">*/</span></div>
<div class="foldopen" id="foldopen00018" data-start="{" data-end="};">
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="../../d2/d37/structARC__LexerToken.html"> 18</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../d2/d37/structARC__LexerToken.html">ARC_LexerToken</a> {</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="../../d2/d37/structARC__LexerToken.html#aab9e5105b7ab0902daa8a6cca213081c"> 19</a></span> uint32_t <a class="code hl_variable" href="../../d2/d37/structARC__LexerToken.html#aab9e5105b7ab0902daa8a6cca213081c">rule</a>;</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="../../d2/d37/structARC__LexerToken.html#acd5e79928adf611401e2c5fe0decf1ea"> 20</a></span> <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *<a class="code hl_variable" href="../../d2/d37/structARC__LexerToken.html#acd5e79928adf611401e2c5fe0decf1ea">data</a>;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a3815389501803591a2c7bfbc8a2442af"> 21</a></span>} <a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#a3815389501803591a2c7bfbc8a2442af">ARC_LexerToken</a>;</div>
</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"></span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/**</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * @brief checks to see if a string is a type of token</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> *</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * @note do not set tokenData if this function returns 0, doing so will create a memory leak</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> *</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> * @param[out] tokenData a place to store token data (like a variable name), can be NULL if not needed</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"> * @param[in] string a string to be checked to see if it matches a token</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment"> * @param[in] automataData any data that needs to be used for the ARC_Lexer_AutomataFn</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment"> *</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment"> * @return the size of the token found, or 0 if the token was not found</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">*/</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a9ba5d0511240955414394fed08548ee4"> 34</a></span><span class="keyword">typedef</span> uint32_t (* <a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#a9ba5d0511240955414394fed08548ee4">ARC_LexerTokenRule_AutomataFn</a>)(<a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> **tokenData, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *string, <span class="keywordtype">void</span> *automataData);</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"></span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">/**</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment"> * @brief a callback function to clean up ARC_LexerTokenRule&#39;s automataData</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> *</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> * @param automataData the void * automataData to destroy</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">*/</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a04134632768009daff1b342a8fd12b6e"> 41</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#a04134632768009daff1b342a8fd12b6e">ARC_LexerTokenRule_DestroyAutomataDataFn</a>)(<span class="keywordtype">void</span> *automataData);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"></span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">/**</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment"> * @brief a lexer token rule type</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">*/</span></div>
<div class="foldopen" id="foldopen00046" data-start="{" data-end="};">
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="../../d5/dbd/structARC__LexerTokenRule.html"> 46</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../d5/dbd/structARC__LexerTokenRule.html">ARC_LexerTokenRule</a> {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="../../d5/dbd/structARC__LexerTokenRule.html#a044f04cffdb07319ee13e17324bb1c9c"> 47</a></span> uint32_t <a class="code hl_variable" href="../../d5/dbd/structARC__LexerTokenRule.html#a044f04cffdb07319ee13e17324bb1c9c">id</a>;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="../../d5/dbd/structARC__LexerTokenRule.html#a1cd0f5e26bc0e220bf1e5be79a405e41"> 49</a></span> <span class="keywordtype">void</span> *<a class="code hl_variable" href="../../d5/dbd/structARC__LexerTokenRule.html#a1cd0f5e26bc0e220bf1e5be79a405e41">automataData</a>;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="../../d5/dbd/structARC__LexerTokenRule.html#a474a0be6883ba1f10d829afb6be7a68d"> 51</a></span> <a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#a9ba5d0511240955414394fed08548ee4">ARC_LexerTokenRule_AutomataFn</a> <a class="code hl_variable" href="../../d5/dbd/structARC__LexerTokenRule.html#a474a0be6883ba1f10d829afb6be7a68d">automataFn</a>;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="../../d5/dbd/structARC__LexerTokenRule.html#ae975dcd0218d660d1393e4762c452c86"> 52</a></span> <a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#a04134632768009daff1b342a8fd12b6e">ARC_LexerTokenRule_DestroyAutomataDataFn</a> <a class="code hl_variable" href="../../d5/dbd/structARC__LexerTokenRule.html#ae975dcd0218d660d1393e4762c452c86">destroyAutomataDataFn</a>;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a0b4bb5ebabb63ba62c1072bb080fd8f6"> 53</a></span>} <a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#a0b4bb5ebabb63ba62c1072bb080fd8f6">ARC_LexerTokenRule</a>;</div>
</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment"></span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment">/**</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"> * @brief creates an ARC_Lexer type</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> *</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> * @param[out] lexer ARC_Lexer to create</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">*/</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a577b5af9532aaea8b58d3ef29ef9f439"> 60</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a577b5af9532aaea8b58d3ef29ef9f439">ARC_Lexer_Create</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> **lexer);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment"></span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">/**</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> * @brief destroys an ARC_Lexer type</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> *</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> * @param[in] lexer ARC_Lexer to free</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment">*/</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#af119f4730d1361e0f77bd230f7a66470"> 67</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#af119f4730d1361e0f77bd230f7a66470">ARC_Lexer_Destroy</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"></span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">/**</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * @brief adds a token rule to a lexer</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> *</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> * @param [in] lexer the lexer to add a token rule to</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> * @param [in] tokenRule the token rule to add</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment">*/</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a39d48ecab5e20c16a3825b27bec785f7"> 75</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a39d48ecab5e20c16a3825b27bec785f7">ARC_Lexer_RegisterTokenRule</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer, <a class="code hl_struct" href="../../d5/dbd/structARC__LexerTokenRule.html">ARC_LexerTokenRule</a> tokenRule);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"></span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment">/**</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="comment"> * @brief clears all tokens from a lexer (will not clear token rules)</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment"> *</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment"> * @param lexer the lexer to clear tokens from</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment">*/</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a433d2612daddba30462288d3b1902138"> 82</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a433d2612daddba30462288d3b1902138">ARC_Lexer_Clear</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"></span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="comment">/**</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="comment"> * @brief creates tokens using a given string with ARC_LexerToken rules</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="comment"> *</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="comment"> * @param[in] lexer the lexer to get the ARC_LexerTokens from</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> * @param[in/out] data the string to lex, will be freed and set to NULL by the end of this function</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment">*/</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a3feb57a6200882fd3951fb6e54edc40a"> 90</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a3feb57a6200882fd3951fb6e54edc40a">ARC_Lexer_LexString</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> **data);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"></span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment">/**</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment"> * @brief reads in and lexs a file</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> *</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment"> * @note this function will call ARC_Lexer_LexString, so it&#39;s notes are applicable to this function</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="comment"> *</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"> * @param[in] lexer the lexer which holds to rules to use</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> * @param[in] path path of file to read in and lex</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">*/</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a1b7282db985dcde4ad59ab7159d229f1"> 100</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a1b7282db985dcde4ad59ab7159d229f1">ARC_Lexer_LexFile</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *path);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"></span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment">/**</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> * @brief prints rule id and hex of the function name</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> *</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> * @note this is mostly used for debugging</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"> *</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"> * @param[in] lexer the lexer to print rules from</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="comment">*/</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#acf0761b4efbf71dd32671512c1ceed6d"> 109</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#acf0761b4efbf71dd32671512c1ceed6d">ARC_Lexer_PrintTokenRules</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="comment"></span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="comment">/**</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="comment"> * @brief gets a token at a given index from a lexer</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="comment"> *</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment"> * @note unless you have a very good reason, you probably don&#39;t want to mess with the tokens string.</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"> * that will probably change the token&#39;s string inside the lexer</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment"> *</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="comment"> * @param[in] lexer the lexer to get the token from</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment"> * @param[in] index the index of the token in the lexer to get</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment"> *</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"> * @return a token at the lexer index on success, otherwise NULL</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment">*/</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a251b6e9d9aa8b29295be205c36eb5995"> 122</a></span><a class="code hl_struct" href="../../d2/d37/structARC__LexerToken.html">ARC_LexerToken</a> *<a class="code hl_function" href="../../d5/df3/lexer_8h.html#a251b6e9d9aa8b29295be205c36eb5995">ARC_Lexer_GetToken</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer, uint32_t index);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment"></span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment">/**</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> * @brief gets a token at a given index from a lexer</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> *</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"> * @param[in] lexer the lexer to get the tokens size from</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> *</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"> * @return the size of the token array in a lexer</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">*/</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a7131b158cd0b2aad60e89c3c60d2a47e"> 131</a></span>uint32_t <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a7131b158cd0b2aad60e89c3c60d2a47e">ARC_Lexer_GetTokensSize</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"></span> </div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment">/**</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"> * @brief returns a boolean based on if a lexers rules are continious</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"> *</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"> * @param[in] lexer the lexer to check if its ruls are continious</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment"> *</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment"> * @return ARC_True if the set rules are continious</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="comment">*/</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ab352c9b8f76abf4f9e2ce9fccfa9aa50"> 140</a></span><a class="code hl_define" href="../../d8/d77/bool_8h.html#aad51710c999c22d9440e5ce0ba8e2c45">ARC_Bool</a> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#ab352c9b8f76abf4f9e2ce9fccfa9aa50">ARC_Lexer_IsContinious</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer);</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"></span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment">/**</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * @brief returns a boolean based on if a given id is a stored token rule id</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> *</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> * @param[in] lexer the lexer to check stored token rule ids</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> * @param[in] id the id to check against the token rules</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> *</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> * @return ARC_True if the id is a rule id, ARC_False otherwise</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment">*/</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a35efaf00d01ae654db11f619103c06c0"> 150</a></span><a class="code hl_define" href="../../d8/d77/bool_8h.html#aad51710c999c22d9440e5ce0ba8e2c45">ARC_Bool</a> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a35efaf00d01ae654db11f619103c06c0">ARC_Lexer_IsTokenId</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer, uint32_t <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"></span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment">/**</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment"> * @brief checks if the first character of string matches the automataData cast as a char</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment"> *</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment"> * @note this is intended as a helper callback</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment"> * @note this function is a ARC_Lexer_AutomataFn callback</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="comment"> *</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="comment"> * @param[out] tokenData a place to store token data (like a variable name), can be NULL if not needed</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment"> * @param[in] string a string to be checked to see if it matches a token</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"> * @param[in] automataData any data that needs to be used for the ARC_Lexer_AutomataFn</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"> *</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="comment"> * @return the size of the token found, or 0 if the token was not found</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment">*/</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a3db57b9db596091a576fb701f8cabee0"> 164</a></span>uint32_t <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a3db57b9db596091a576fb701f8cabee0">ARC_Lexer_AutomataMatchCharFn</a>(<a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> **tokenData, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *<span class="keywordtype">string</span>, <span class="keywordtype">void</span> *automataData);</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment"></span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span><span class="comment">/**</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="comment"> * @brief checks if the substring automataData as an ARC_String matches the first part of string</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="comment"> *</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="comment"> * @note this is intended as a helper callback</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="comment"> * @note this function is a ARC_Lexer_AutomataFn callback</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment"> *</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="comment"> * @param[out] tokenData a place to store token data (like a variable name), can be NULL if not needed</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="comment"> * @param[in] string a string to be checked to see if it matches a token</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment"> * @param[in] automataData any data that needs to be used for the ARC_Lexer_AutomataFn</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="comment"> *</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment"> * @return the size of the token found, or 0 if the token was not found</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="comment">*/</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#aa19c4d6677ef05c8d0f1c809b4f1a82b"> 178</a></span>uint32_t <a class="code hl_function" href="../../d5/df3/lexer_8h.html#aa19c4d6677ef05c8d0f1c809b4f1a82b">ARC_Lexer_AutomataMatchStringFn</a>(<a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> **tokenData, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *<span class="keywordtype">string</span>, <span class="keywordtype">void</span> *automataData);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="comment"></span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="comment">/**</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="comment"> * @brief checks if the first part of string is a character in substring</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="comment"> *</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="comment"> * @note this is intended as a helper callback</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="comment"> * @note this function is a ARC_Lexer_AutomataFn callback</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="comment"> *</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="comment"> * @param[out] tokenData a place to store token data (like a variable name), can be NULL if not needed</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="comment"> * @param[in] string a string to be checked to see if it matches a token</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="comment"> * @param[in] automataData any data that needs to be used for the ARC_Lexer_AutomataFn</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span><span class="comment"> *</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="comment"> * @return the size of the token found, or 0 if the token was not found</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span><span class="comment">*/</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ac736e5472dc8d123800754c9e67405d8"> 192</a></span>uint32_t <a class="code hl_function" href="../../d5/df3/lexer_8h.html#ac736e5472dc8d123800754c9e67405d8">ARC_Lexer_AutomataMatchCharInStringFn</a>(<a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> **tokenData, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *<span class="keywordtype">string</span>, <span class="keywordtype">void</span> *automataData);</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="comment"></span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="comment">/**</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="comment"> * @brief creates a ARC_LexerTokenRule with a given id and character</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="comment"> *</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="comment"> * @note this is intended as a helper funtion</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="comment"> *</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="comment"> * @param[in] id a tokens id (basically the token value)</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="comment"> * @param[in] character the character to match against</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="comment"> *</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="comment"> * @return a token rule based in the id and character</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="comment">*/</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a79b5abbb2636bcf06c7e90fb1c875903"> 204</a></span><a class="code hl_struct" href="../../d5/dbd/structARC__LexerTokenRule.html">ARC_LexerTokenRule</a> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a79b5abbb2636bcf06c7e90fb1c875903">ARC_LexerTokenRule_CreateAndReturnMatchCharRule</a>(uint32_t <span class="keywordtype">id</span>, <span class="keywordtype">char</span> character);</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="comment"></span> </div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="comment">/**</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="comment"> * @brief creates a ARC_LexerTokenRule with a given id and character range</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="comment"> *</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment"> * @note this is intended as a helper funtion</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment"> *</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment"> * @param[in] id a tokens id (basically the token value)</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment"> * @param[in] start the minimum character value to match against</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> * @param[in] end the maxamum character value to match against</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment"> *</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment"> * @return a token rule based in the id and character</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment">*/</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a9b064167edcd7c9e6b634826195f031b"> 217</a></span><a class="code hl_struct" href="../../d5/dbd/structARC__LexerTokenRule.html">ARC_LexerTokenRule</a> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a9b064167edcd7c9e6b634826195f031b">ARC_LexerTokenRule_CreateAndReturnMatchCharOrBetween</a>(uint32_t <span class="keywordtype">id</span>, <span class="keywordtype">char</span> start, <span class="keywordtype">char</span> end);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="comment"></span> </div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment">/**</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment"> * @brief creates a ARC_LexerTokenRule with a given id and string</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment"> *</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"> * @note this is intended as a helper funtion</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment"> * #note string will not be freed (it will be copied and the copy will be freed)</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> *</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment"> * @param[in] id a tokens id (basically the token value)</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="comment"> * @param[in] character the string to match against, will be copied</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="comment"> *</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="comment"> * @return a token rule based in the id and string</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment">*/</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a430283c20ad3d7bf9a18fa96fbbee461"> 230</a></span><a class="code hl_struct" href="../../d5/dbd/structARC__LexerTokenRule.html">ARC_LexerTokenRule</a> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a430283c20ad3d7bf9a18fa96fbbee461">ARC_LexerTokenRule_CreateAndReturnMatchStringRule</a>(uint32_t <span class="keywordtype">id</span>, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *<span class="keywordtype">string</span>);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="comment"></span> </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="comment">/**</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="comment"> * @brief creates a ARC_LexerTokenRule with a given id and string</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="comment"> *</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="comment"> * @note this is intended as a helper funtion</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="comment"> * #note string will not be freed (it will be copied and the copy will be freed)</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="comment"> *</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span><span class="comment"> * @param[in] id a tokens id (basically the token value)</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment"> * @param[in] character the string to match against, will be copied</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment"> *</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="comment"> * @return a token rule based in the id and string</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="comment">*/</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ab9912c97ec2ff272e0bbd6c5851fd8f5"> 243</a></span><a class="code hl_struct" href="../../d5/dbd/structARC__LexerTokenRule.html">ARC_LexerTokenRule</a> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#ab9912c97ec2ff272e0bbd6c5851fd8f5">ARC_LexerTokenRule_CreateAndReturnMatchCharInStringRule</a>(uint32_t <span class="keywordtype">id</span>, <a class="code hl_struct" href="../../df/d06/structARC__String.html">ARC_String</a> *<span class="keywordtype">string</span>);</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="comment"></span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="comment">/**</span></div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="comment"> * @brief basic tokens</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="comment">*/</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a4e9237d6afe95b3a15c0dbbda31be332"> 248</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_NULL 0</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#af8e71317b3d348e031b9341b5a53686f"> 249</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_NUMBER 1</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#acbfaaa4882426f9a4586adc28004c4a9"> 250</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_ALPHA_LOWER_CHAR 2</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a12dca3db4664b48ac7b7930845e3f0b5"> 251</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_ALPHA_UPPER_CHAR 3</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a08fc384c1dd0c911a4d97396262159c6"> 252</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_WHITESPACE 4</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"></span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment">/**</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="comment"> * @brief basic token type ids, chars, and tags</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="comment">*/</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#aa3d5af57f465f294132a443dae162dfa"> 257</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_NEWLINE_ID 5</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#abb0b66a2744366b326c8829753646c0d"> 258</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_NEWLINE_CHAR &#39;\n&#39;</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ad38ac0d96e0a5a97be13643323826e69"> 259</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_COLON_ID 6</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a7d91762b983dfec20c61144fe4c9a054"> 260</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_COLON_CHAR &#39;:&#39;</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a5293226a069fcce4d748dfe25ea28db6"> 261</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_COLON_TAG &quot;COLON&quot;</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ac38c1572faebdf823616308b5cea1747"> 262</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_SEMICOLON_ID 7</span></div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ad4708bf5048147da38eba6d2baf5010d"> 263</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_SEMICOLON_CHAR &#39;;&#39;</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a1e19a41be65ea39e9e853b23d64df03d"> 264</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_SEMICOLON_TAG &quot;SEMICOLON&quot;</span></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#aa936d2fd37b867dda6af8eec8ecaa88d"> 265</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_COMMA_ID 8</span></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a6250250207f50276b3c99de8c86809b6"> 266</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_COMMA_CHAR &#39;,&#39;</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ad39b482565589e133ab190813fe38d1c"> 267</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_COMMA_TAG &quot;COMMA&quot;</span></div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a4c8a1519b49b37ec99643705a20e8a00"> 268</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_PERIOD_ID 9</span></div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a19d98980187c79d6a2ad3df8e01b11f4"> 269</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_PERIOD_CHAR &#39;.&#39;</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a6e76529a54f15d0d9dd4c0ca6399353c"> 270</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_PERIOD_TAG &quot;PERIOD&quot;</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a0c8b18c3c26ad7ee828f77a8c29301e5"> 271</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_FORWARD_SLASH_ID 10</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#aca9ee4ab4749f8817659841ec615dfce"> 272</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_FORWARD_SLASH_CHAR &#39;/&#39;</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ab8fe2fa9b377c8bad5abd27a1eade1fd"> 273</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_FORWARD_SLASH_TAG &quot;FORWARD_SLASH&quot;</span></div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ac0bf4c6f183eb6964457c6b75dcf2559"> 274</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_BACK_SLASH_ID 11</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ad2264457e3e1ce1812bb333a355fe2c5"> 275</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_BACK_SLASH_CHAR &#39;\\&#39;</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ab9fd8e4e84a33ff8532ed7d0844e9a93"> 276</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_BACK_SLASH_TAG &quot;BACK_SLASH&quot;</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ae44573fa8818c62b544efe00a1a52bd4"> 277</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_LEFT_PARENTHESIS_ID 12</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a3ccee7de395056e03e7e7df0de63bc13"> 278</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_LEFT_PARENTHESIS_CHAR &#39;(&#39;</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a0d3de6fa1b15d0281511afc2a84ae9bb"> 279</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_LEFT_PARENTHESIS_TAG &quot;LEFT_PARENTHESIS&quot;</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a7fb6afd315d1e644bbab3b3b343c164b"> 280</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_RIGHT_PARENTHESIS_ID 13</span></div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#af74acd7cfd8ee39e05d66e5a469ec00d"> 281</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_RIGHT_PARENTHESIS_CHAR &#39;)&#39;</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a45a03ad24e7eccccb13a11a1bdbce55d"> 282</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_RIGHT_PARENTHESIS_TAG &quot;RIGHT_PARENTHESIS&quot;</span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a7effdeb40e661cf783490e14b255aad9"> 283</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_LEFT_CURLY_BRACE_ID 14</span></div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#af5ec79c2c40d444874360c71e91cde5e"> 284</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_LEFT_CURLY_BRACE_CHAR &#39;{&#39;</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a326fa43dd2a63993bd7d9f33db5198ef"> 285</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_LEFT_CURLY_BRACE_TAG &quot;LEFT_CURLY_BRACE&quot;</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#aab050a58f63466390f399fb375d8a9ff"> 286</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_RIGHT_CURLY_BRACE_ID 15</span></div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a5d3d1a7900a1618d0a0326249055e92e"> 287</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_RIGHT_CURLY_BRACE_CHAR &#39;}&#39;</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a6add2d4c998f78fbdb8d18e5d75dc729"> 288</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_RIGHT_CURLY_BRACE_TAG &quot;RIGHT_CURLY_BRACE&quot;</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ac1facbe634a52b2e5574810af95e37d7"> 289</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_BANG_ID 16</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a8a22341977447549ffdc6e148968cdd3"> 290</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_BANG_CHAR &#39;!&#39;</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#af95c63a510b7ad72568302973e575661"> 291</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_BANG_TAG &quot;BANG&quot;</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a66029f9623154f65903ca5f0c94271f3"> 292</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_AT_ID 17</span></div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a7a7783d384eefb423ef2f16784095193"> 293</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_AT_CHAR &#39;!&#39;</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a4032d8e35e7265f44193dd648a79feeb"> 294</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_AT_TAG &quot;AT&quot;</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#ab5f44b2c57ec755662e6b4cc31305763"> 295</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_HASH_ID 18</span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#afb07206d57135f2002d113eff71b8603"> 296</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_HASH_CHAR &#39;#&#39;</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a1b26293fe02055053431f8e62e060b9f"> 297</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_HASH_TAG &quot;HASH&quot;</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a255142bb5e2e24cdb47933888c1abf0b"> 298</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_PERCENT_ID 19</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a333616987d461f204dda5639f95e089b"> 299</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_PERCENT_CHAR &#39;%&#39;</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a9d5789282edf5bf15d3073f0af374a0e"> 300</a></span><span class="preprocessor">#define ARC_LEXER_TOKEN_PERCENT_TAG &quot;PERCENT&quot;</span></div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="comment"></span> </div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span><span class="comment">/**</span></div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="comment"> * @brief adds a bunch of basic token rules (matching the BasicTokens above)</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="comment">*/</span></div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"><a class="line" href="../../d5/df3/lexer_8h.html#a53da53523cb5ff94d803d1d6e7c62462"> 305</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d5/df3/lexer_8h.html#a53da53523cb5ff94d803d1d6e7c62462">ARC_Lexer_InitBasicTokenRules</a>(<a class="code hl_typedef" href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a> *lexer);</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> </div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span>}</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span><span class="preprocessor">#endif </span><span class="comment">// !ARC_STD_LEXER_H_</span></div>
<div class="ttc" id="abool_8h_html_aad51710c999c22d9440e5ce0ba8e2c45"><div class="ttname"><a href="../../d8/d77/bool_8h.html#aad51710c999c22d9440e5ce0ba8e2c45">ARC_Bool</a></div><div class="ttdeci">#define ARC_Bool</div><div class="ttdef"><b>Definition</b> <a href="../../d8/d77/bool_8h_source.html#l00010">bool.h:10</a></div></div>
<div class="ttc" id="alexer_8h_html_a04134632768009daff1b342a8fd12b6e"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a04134632768009daff1b342a8fd12b6e">ARC_LexerTokenRule_DestroyAutomataDataFn</a></div><div class="ttdeci">void(* ARC_LexerTokenRule_DestroyAutomataDataFn)(void *automataData)</div><div class="ttdoc">a callback function to clean up ARC_LexerTokenRule's automataData</div><div class="ttdef"><b>Definition</b> <a href="#l00041">lexer.h:41</a></div></div>
<div class="ttc" id="alexer_8h_html_a0b4bb5ebabb63ba62c1072bb080fd8f6"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a0b4bb5ebabb63ba62c1072bb080fd8f6">ARC_LexerTokenRule</a></div><div class="ttdeci">struct ARC_LexerTokenRule ARC_LexerTokenRule</div><div class="ttdoc">a lexer token rule type</div></div>
<div class="ttc" id="alexer_8h_html_a1b7282db985dcde4ad59ab7159d229f1"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a1b7282db985dcde4ad59ab7159d229f1">ARC_Lexer_LexFile</a></div><div class="ttdeci">void ARC_Lexer_LexFile(ARC_Lexer *lexer, ARC_String *path)</div><div class="ttdoc">reads in and lexs a file</div></div>
<div class="ttc" id="alexer_8h_html_a251b6e9d9aa8b29295be205c36eb5995"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a251b6e9d9aa8b29295be205c36eb5995">ARC_Lexer_GetToken</a></div><div class="ttdeci">ARC_LexerToken * ARC_Lexer_GetToken(ARC_Lexer *lexer, uint32_t index)</div><div class="ttdoc">gets a token at a given index from a lexer</div></div>
<div class="ttc" id="alexer_8h_html_a35efaf00d01ae654db11f619103c06c0"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a35efaf00d01ae654db11f619103c06c0">ARC_Lexer_IsTokenId</a></div><div class="ttdeci">ARC_Bool ARC_Lexer_IsTokenId(ARC_Lexer *lexer, uint32_t id)</div><div class="ttdoc">returns a boolean based on if a given id is a stored token rule id</div></div>
<div class="ttc" id="alexer_8h_html_a3815389501803591a2c7bfbc8a2442af"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a3815389501803591a2c7bfbc8a2442af">ARC_LexerToken</a></div><div class="ttdeci">struct ARC_LexerToken ARC_LexerToken</div><div class="ttdoc">a lexer token type</div></div>
<div class="ttc" id="alexer_8h_html_a39d48ecab5e20c16a3825b27bec785f7"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a39d48ecab5e20c16a3825b27bec785f7">ARC_Lexer_RegisterTokenRule</a></div><div class="ttdeci">void ARC_Lexer_RegisterTokenRule(ARC_Lexer *lexer, ARC_LexerTokenRule tokenRule)</div><div class="ttdoc">adds a token rule to a lexer</div></div>
<div class="ttc" id="alexer_8h_html_a3db57b9db596091a576fb701f8cabee0"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a3db57b9db596091a576fb701f8cabee0">ARC_Lexer_AutomataMatchCharFn</a></div><div class="ttdeci">uint32_t ARC_Lexer_AutomataMatchCharFn(ARC_String **tokenData, ARC_String *string, void *automataData)</div><div class="ttdoc">checks if the first character of string matches the automataData cast as a char</div></div>
<div class="ttc" id="alexer_8h_html_a3feb57a6200882fd3951fb6e54edc40a"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a3feb57a6200882fd3951fb6e54edc40a">ARC_Lexer_LexString</a></div><div class="ttdeci">void ARC_Lexer_LexString(ARC_Lexer *lexer, ARC_String **data)</div><div class="ttdoc">creates tokens using a given string with ARC_LexerToken rules</div></div>
<div class="ttc" id="alexer_8h_html_a430283c20ad3d7bf9a18fa96fbbee461"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a430283c20ad3d7bf9a18fa96fbbee461">ARC_LexerTokenRule_CreateAndReturnMatchStringRule</a></div><div class="ttdeci">ARC_LexerTokenRule ARC_LexerTokenRule_CreateAndReturnMatchStringRule(uint32_t id, ARC_String *string)</div><div class="ttdoc">creates a ARC_LexerTokenRule with a given id and string</div></div>
<div class="ttc" id="alexer_8h_html_a433d2612daddba30462288d3b1902138"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a433d2612daddba30462288d3b1902138">ARC_Lexer_Clear</a></div><div class="ttdeci">void ARC_Lexer_Clear(ARC_Lexer *lexer)</div><div class="ttdoc">clears all tokens from a lexer (will not clear token rules)</div></div>
<div class="ttc" id="alexer_8h_html_a53da53523cb5ff94d803d1d6e7c62462"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a53da53523cb5ff94d803d1d6e7c62462">ARC_Lexer_InitBasicTokenRules</a></div><div class="ttdeci">void ARC_Lexer_InitBasicTokenRules(ARC_Lexer *lexer)</div><div class="ttdoc">adds a bunch of basic token rules (matching the BasicTokens above)</div></div>
<div class="ttc" id="alexer_8h_html_a577b5af9532aaea8b58d3ef29ef9f439"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a577b5af9532aaea8b58d3ef29ef9f439">ARC_Lexer_Create</a></div><div class="ttdeci">void ARC_Lexer_Create(ARC_Lexer **lexer)</div><div class="ttdoc">creates an ARC_Lexer type</div></div>
<div class="ttc" id="alexer_8h_html_a7131b158cd0b2aad60e89c3c60d2a47e"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a7131b158cd0b2aad60e89c3c60d2a47e">ARC_Lexer_GetTokensSize</a></div><div class="ttdeci">uint32_t ARC_Lexer_GetTokensSize(ARC_Lexer *lexer)</div><div class="ttdoc">gets a token at a given index from a lexer</div></div>
<div class="ttc" id="alexer_8h_html_a79b5abbb2636bcf06c7e90fb1c875903"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a79b5abbb2636bcf06c7e90fb1c875903">ARC_LexerTokenRule_CreateAndReturnMatchCharRule</a></div><div class="ttdeci">ARC_LexerTokenRule ARC_LexerTokenRule_CreateAndReturnMatchCharRule(uint32_t id, char character)</div><div class="ttdoc">creates a ARC_LexerTokenRule with a given id and character</div></div>
<div class="ttc" id="alexer_8h_html_a9b064167edcd7c9e6b634826195f031b"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a9b064167edcd7c9e6b634826195f031b">ARC_LexerTokenRule_CreateAndReturnMatchCharOrBetween</a></div><div class="ttdeci">ARC_LexerTokenRule ARC_LexerTokenRule_CreateAndReturnMatchCharOrBetween(uint32_t id, char start, char end)</div><div class="ttdoc">creates a ARC_LexerTokenRule with a given id and character range</div></div>
<div class="ttc" id="alexer_8h_html_a9ba5d0511240955414394fed08548ee4"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#a9ba5d0511240955414394fed08548ee4">ARC_LexerTokenRule_AutomataFn</a></div><div class="ttdeci">uint32_t(* ARC_LexerTokenRule_AutomataFn)(ARC_String **tokenData, ARC_String *string, void *automataData)</div><div class="ttdoc">checks to see if a string is a type of token</div><div class="ttdef"><b>Definition</b> <a href="#l00034">lexer.h:34</a></div></div>
<div class="ttc" id="alexer_8h_html_aa19c4d6677ef05c8d0f1c809b4f1a82b"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#aa19c4d6677ef05c8d0f1c809b4f1a82b">ARC_Lexer_AutomataMatchStringFn</a></div><div class="ttdeci">uint32_t ARC_Lexer_AutomataMatchStringFn(ARC_String **tokenData, ARC_String *string, void *automataData)</div><div class="ttdoc">checks if the substring automataData as an ARC_String matches the first part of string</div></div>
<div class="ttc" id="alexer_8h_html_ab352c9b8f76abf4f9e2ce9fccfa9aa50"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#ab352c9b8f76abf4f9e2ce9fccfa9aa50">ARC_Lexer_IsContinious</a></div><div class="ttdeci">ARC_Bool ARC_Lexer_IsContinious(ARC_Lexer *lexer)</div><div class="ttdoc">returns a boolean based on if a lexers rules are continious</div></div>
<div class="ttc" id="alexer_8h_html_ab9912c97ec2ff272e0bbd6c5851fd8f5"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#ab9912c97ec2ff272e0bbd6c5851fd8f5">ARC_LexerTokenRule_CreateAndReturnMatchCharInStringRule</a></div><div class="ttdeci">ARC_LexerTokenRule ARC_LexerTokenRule_CreateAndReturnMatchCharInStringRule(uint32_t id, ARC_String *string)</div><div class="ttdoc">creates a ARC_LexerTokenRule with a given id and string</div></div>
<div class="ttc" id="alexer_8h_html_ac736e5472dc8d123800754c9e67405d8"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#ac736e5472dc8d123800754c9e67405d8">ARC_Lexer_AutomataMatchCharInStringFn</a></div><div class="ttdeci">uint32_t ARC_Lexer_AutomataMatchCharInStringFn(ARC_String **tokenData, ARC_String *string, void *automataData)</div><div class="ttdoc">checks if the first part of string is a character in substring</div></div>
<div class="ttc" id="alexer_8h_html_acf0761b4efbf71dd32671512c1ceed6d"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#acf0761b4efbf71dd32671512c1ceed6d">ARC_Lexer_PrintTokenRules</a></div><div class="ttdeci">void ARC_Lexer_PrintTokenRules(ARC_Lexer *lexer)</div><div class="ttdoc">prints rule id and hex of the function name</div></div>
<div class="ttc" id="alexer_8h_html_ad48d6475f5cf332db813477ee8621446"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#ad48d6475f5cf332db813477ee8621446">ARC_Lexer</a></div><div class="ttdeci">struct ARC_Lexer ARC_Lexer</div><div class="ttdoc">a lexer type</div><div class="ttdef"><b>Definition</b> <a href="#l00013">lexer.h:13</a></div></div>
<div class="ttc" id="alexer_8h_html_af119f4730d1361e0f77bd230f7a66470"><div class="ttname"><a href="../../d5/df3/lexer_8h.html#af119f4730d1361e0f77bd230f7a66470">ARC_Lexer_Destroy</a></div><div class="ttdeci">void ARC_Lexer_Destroy(ARC_Lexer *lexer)</div><div class="ttdoc">destroys an ARC_Lexer type</div></div>
<div class="ttc" id="astring_8h_html"><div class="ttname"><a href="../../da/d66/string_8h.html">string.h</a></div></div>
<div class="ttc" id="astructARC__LexerTokenRule_html"><div class="ttname"><a href="../../d5/dbd/structARC__LexerTokenRule.html">ARC_LexerTokenRule</a></div><div class="ttdoc">a lexer token rule type</div><div class="ttdef"><b>Definition</b> <a href="#l00046">lexer.h:46</a></div></div>
<div class="ttc" id="astructARC__LexerTokenRule_html_a044f04cffdb07319ee13e17324bb1c9c"><div class="ttname"><a href="../../d5/dbd/structARC__LexerTokenRule.html#a044f04cffdb07319ee13e17324bb1c9c">ARC_LexerTokenRule::id</a></div><div class="ttdeci">uint32_t id</div><div class="ttdef"><b>Definition</b> <a href="#l00047">lexer.h:47</a></div></div>
<div class="ttc" id="astructARC__LexerTokenRule_html_a1cd0f5e26bc0e220bf1e5be79a405e41"><div class="ttname"><a href="../../d5/dbd/structARC__LexerTokenRule.html#a1cd0f5e26bc0e220bf1e5be79a405e41">ARC_LexerTokenRule::automataData</a></div><div class="ttdeci">void * automataData</div><div class="ttdef"><b>Definition</b> <a href="#l00049">lexer.h:49</a></div></div>
<div class="ttc" id="astructARC__LexerTokenRule_html_a474a0be6883ba1f10d829afb6be7a68d"><div class="ttname"><a href="../../d5/dbd/structARC__LexerTokenRule.html#a474a0be6883ba1f10d829afb6be7a68d">ARC_LexerTokenRule::automataFn</a></div><div class="ttdeci">ARC_LexerTokenRule_AutomataFn automataFn</div><div class="ttdef"><b>Definition</b> <a href="#l00051">lexer.h:51</a></div></div>
<div class="ttc" id="astructARC__LexerTokenRule_html_ae975dcd0218d660d1393e4762c452c86"><div class="ttname"><a href="../../d5/dbd/structARC__LexerTokenRule.html#ae975dcd0218d660d1393e4762c452c86">ARC_LexerTokenRule::destroyAutomataDataFn</a></div><div class="ttdeci">ARC_LexerTokenRule_DestroyAutomataDataFn destroyAutomataDataFn</div><div class="ttdef"><b>Definition</b> <a href="#l00052">lexer.h:52</a></div></div>
<div class="ttc" id="astructARC__LexerToken_html"><div class="ttname"><a href="../../d2/d37/structARC__LexerToken.html">ARC_LexerToken</a></div><div class="ttdoc">a lexer token type</div><div class="ttdef"><b>Definition</b> <a href="#l00018">lexer.h:18</a></div></div>
<div class="ttc" id="astructARC__LexerToken_html_aab9e5105b7ab0902daa8a6cca213081c"><div class="ttname"><a href="../../d2/d37/structARC__LexerToken.html#aab9e5105b7ab0902daa8a6cca213081c">ARC_LexerToken::rule</a></div><div class="ttdeci">uint32_t rule</div><div class="ttdef"><b>Definition</b> <a href="#l00019">lexer.h:19</a></div></div>
<div class="ttc" id="astructARC__LexerToken_html_acd5e79928adf611401e2c5fe0decf1ea"><div class="ttname"><a href="../../d2/d37/structARC__LexerToken.html#acd5e79928adf611401e2c5fe0decf1ea">ARC_LexerToken::data</a></div><div class="ttdeci">ARC_String * data</div><div class="ttdef"><b>Definition</b> <a href="#l00020">lexer.h:20</a></div></div>
<div class="ttc" id="astructARC__String_html"><div class="ttname"><a href="../../df/d06/structARC__String.html">ARC_String</a></div><div class="ttdoc">substring position within a string</div><div class="ttdef"><b>Definition</b> <a href="../../da/d66/string_8h_source.html#l00014">string.h:14</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.9.2-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul><li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_8698ff38f6ae643760cdad826b9d4736.html">arc</a></li><li class="navelem"><a class="el" href="../../dir_b3e500eb3a6fe660b1141f591e523c76.html">std</a></li><li class="navelem"><a class="el" href="../../d5/df3/lexer_8h.html">lexer.h</a></li></ul>
</div>
<script type="text/javascript">
// script for doxygen 1.9.1
$(function() {
toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
toggleButton.title = "Toggle Light/Dark Mode"
$(document).ready(function(){
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
})
$(window).resize(function(){
document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
})
})
</script>
</body>
</html>