File: CastleScriptParser.html

package info (click to toggle)
castle-game-engine 5.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 185,428 kB
  • sloc: pascal: 260,781; cpp: 1,363; objc: 713; makefile: 537; xml: 496; sh: 480; php: 4
file content (177 lines) | stat: -rw-r--r-- 11,378 bytes parent folder | download
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 &mdash; 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">
&nbsp;</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&amp;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>