1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleScriptParser</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<h1 class="unit">Unit CastleScriptParser</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td>Classes, Interfaces, Objects and Records</td><td><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></td><td><a class="section" href="#PasDoc-Types">Types</a></td><td>Constants</td><td>Variables</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
<p>
Parser for <a class="normal" href="CastleScript.html">CastleScript</a> language, see [<a href="http://castle-engine.sourceforge.net/castle_script.php">http://castle-engine.sourceforge.net/castle_script.php</a>].</p>
<p>
<p>Can parse whole program in <a class="normal" href="CastleScript.html">CastleScript</a> language, is also prepared to parse only a single expression (usefull for cases when I need to input only a mathematical expression, like for glplotter function expression).</p>
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
<ul class="useslist"><li><a href="CastleScript.html">CastleScript</a></li><li><a href="CastleScriptLexer.html">CastleScriptLexer</a></li><li>Math</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-FuncsProcs"></a><h3 class="summary">Functions and Procedures</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleScriptParser.html#ParseFloatExpression">ParseFloatExpression</a></b>(const S: string; const Variables: array of <a href="CastleScript.TCasScriptValue.html">TCasScriptValue</a>): <a href="CastleScript.TCasScriptExpression.html">TCasScriptExpression</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleScriptParser.html#ParseExpression">ParseExpression</a></b>(const S: string; const Variables: array of <a href="CastleScript.TCasScriptValue.html">TCasScriptValue</a>): <a href="CastleScript.TCasScriptExpression.html">TCasScriptExpression</a>;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleScriptParser.html#ParseConstantFloatExpression">ParseConstantFloatExpression</a></b>(const S: string): <a href="CastleUtils.html#Float">Float</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleScriptParser.html#ParseProgram">ParseProgram</a></b>(const S: string; const Variables: array of <a href="CastleScript.TCasScriptValue.html">TCasScriptValue</a>): <a href="CastleScript.TCasScriptProgram.html">TCasScriptProgram</a>; overload;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleScriptParser.html#ParseProgram">ParseProgram</a></b>(const S: string; const Variables: <a href="CastleScript.TCasScriptValueList.html">TCasScriptValueList</a>): <a href="CastleScript.TCasScriptProgram.html">TCasScriptProgram</a>; overload;</code></td>
</tr>
</table>
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a href="CastleScriptParser.html#ECasScriptSyntaxError">ECasScriptSyntaxError</a></b> = <a href="CastleScriptLexer.ECasScriptSyntaxError.html">CastleScriptLexer.ECasScriptSyntaxError</a>;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Functions and Procedures</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ParseFloatExpression"></a><code>function <b>ParseFloatExpression</b>(const S: string; const Variables: array of <a href="CastleScript.TCasScriptValue.html">TCasScriptValue</a>): <a href="CastleScript.TCasScriptExpression.html">TCasScriptExpression</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Creates and returns instance of <a class="normal" href="CastleScript.TCasScriptExpression.html">TCasScriptExpression</a>, that represents parsed tree of expression in S, casted to float. The easiest way to evaluate such expression is to call <a class="normal" href="CastleScript.TCasScriptExpression.html#AsFloat">TCasScriptExpression.AsFloat</a> method.
<p>This parses a subset of <a class="normal" href="CastleScript.html">CastleScript</a> language, that allows you to define only one expression without any assignments. Also the end result is always casted to the float() type (just like it would be wrapped inside float() function call — in fact this is exactly what happens.)
<p>The end result is that this is perfect for describing things like function expressions, ideal e.g. for [<a href="http://castle-engine.sourceforge.net/glplotter_and_gen_function.php">http://castle-engine.sourceforge.net/glplotter_and_gen_function.php</a>].
<p>
<p></p>
<h6 class="description_section">Parameters</h6>
<dl class="parameters">
<dt>Variables</dt>
<dd>contains a list of named values you want to allow in this expression.
<p>Important: They will all have OwnedByParentExpression set to <code>False</code>, and you will have to free them yourself. That's because given expression may use the same variable more than once (so freeing it twice would cause bugs), or not use it at all (so it will be automatically freed at all).
<p>So setting OwnedByParentExpression and freeing it yourself is the only sensible thing to do.</dd>
</dl>
<h6 class="description_section">Exceptions raised</h6>
<dl class="exceptions_raised">
<dt><a class="normal" href="CastleScriptParser.html#ECasScriptSyntaxError">ECasScriptSyntaxError</a></dt>
<dd>in case of error when parsing expression.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ParseExpression"></a><code>function <b>ParseExpression</b>(const S: string; const Variables: array of <a href="CastleScript.TCasScriptValue.html">TCasScriptValue</a>): <a href="CastleScript.TCasScriptExpression.html">TCasScriptExpression</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Creates and returns instance of <a class="normal" href="CastleScript.TCasScriptExpression.html">TCasScriptExpression</a>, that represents parsed tree of expression in S. </p>
<h6 class="description_section">Parameters</h6>
<dl class="parameters">
<dt>Variables</dt>
<dd>contains a list of named values you want to allow in this expression. See <a class="normal" href="CastleScriptParser.html#ParseFloatExpression">ParseFloatExpression</a> for description.</dd>
</dl>
<h6 class="description_section">Exceptions raised</h6>
<dl class="exceptions_raised">
<dt><a class="normal" href="CastleScriptParser.html#ECasScriptSyntaxError">ECasScriptSyntaxError</a></dt>
<dd>in case of error when parsing expression.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ParseConstantFloatExpression"></a><code>function <b>ParseConstantFloatExpression</b>(const S: string): <a href="CastleUtils.html#Float">Float</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Parse constant float expression. This can be used as a drop-in replacement for StrToFloat. Takes a string with any constant mathematical expression, according to <a class="normal" href="CastleScript.html">CastleScript</a> syntax, parses it and calculates.
<p></p>
<h6 class="description_section">Exceptions raised</h6>
<dl class="exceptions_raised">
<dt><a class="normal" href="CastleScriptParser.html#ECasScriptSyntaxError">ECasScriptSyntaxError</a></dt>
<dd>in case of error when parsing expression.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ParseProgram"></a><code>function <b>ParseProgram</b>(const S: string; const Variables: array of <a href="CastleScript.TCasScriptValue.html">TCasScriptValue</a>): <a href="CastleScript.TCasScriptProgram.html">TCasScriptProgram</a>; overload;</code></td>
</tr>
<tr><td colspan="1">
<p>
Parse <a class="normal" href="CastleScript.html">CastleScript</a> program.
<p>Variable list works like for <a class="normal" href="CastleScriptParser.html#ParseFloatExpression">ParseFloatExpression</a>, see there for description.
<p>
<p></p>
<h6 class="description_section">Exceptions raised</h6>
<dl class="exceptions_raised">
<dt><a class="normal" href="CastleScriptParser.html#ECasScriptSyntaxError">ECasScriptSyntaxError</a></dt>
<dd>in case of error when parsing expression.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ParseProgram"></a><code>function <b>ParseProgram</b>(const S: string; const Variables: <a href="CastleScript.TCasScriptValueList.html">TCasScriptValueList</a>): <a href="CastleScript.TCasScriptProgram.html">TCasScriptProgram</a>; overload;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<h3 class="detail">Types</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="ECasScriptSyntaxError"></a><code><b>ECasScriptSyntaxError</b> = <a href="CastleScriptLexer.ECasScriptSyntaxError.html">CastleScriptLexer.ECasScriptSyntaxError</a>;</code></td>
</tr>
<tr><td colspan="1">
<p>
Reexported in this unit, so that the identifier <code>ECasScriptSyntaxError</code> will be visible when using this unit.</p>
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Piwik Code -->
<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:11</em>
</span>
</td></tr></table></body></html>
|