1/*description:
2{
3	Here is the complete grammar of the CodeWorker's scripting language.
4
5	It is expressed in the extended-BNF dialect of CodeWorker, so has the
6	advantage of running under \CodeWorker\ for scanning scripts, and has the
7	original feature to be auto-descriptive.
8}
9*/
10
11/* "CodeWorker":	a scripting language for parsing and generating text.
12
13Copyright (C) 1996-1997, 1999-2003 C�dric Lemaire
14
15This library is free software; you can redistribute it and/or
16modify it under the terms of the GNU Lesser General Public
17License as published by the Free Software Foundation; either
18version 2.1 of the License, or (at your option) any later version.
19
20This library is distributed in the hope that it will be useful,
21but WITHOUT ANY WARRANTY; without even the implied warranty of
22MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23Lesser General Public License for more details.
24
25You should have received a copy of the GNU Lesser General Public
26License along with this library; if not, write to the Free Software
27Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28
29To contact the author: codeworker@free.fr
30*/
31
32//##markup##"header"
33//##begin##"header"
34 /*********************************************************************
35  *                      Grammar of CodeWorker
36  *                           version 4.5.3
37  *********************************************************************
38  *
39  * The grammar conforms to the extended-BNF notation of CodeWorker
40  *
41  *********************************************************************/
42//##end##"header"
43
44// Defines how to ignore insignificant characters between tokens.
45#ignore	::= [' ' | '\t' | '\r' | '\n' | "/*" ignoreEmbeddedComment | "//"->'\n']*;
46
47// The first production rule is the head of the grammar.
48// The context variable pointed to by 'this' holds information about the
49// type of the script to scan:
50//   - "procedural": the backbone of the scripting language,
51//   - "extended-BNF": includes also translation scripts,
52//   - "template-based": the server-page notation for generation patterns,
53// If the type is unknown, an empty string must be passed to the context
54// variable.
55translation_unit	::= script<this>;
56
57// The type of the script is unknown: the production rule tries the 3
58// types.
59// This rule is the less declarative. It specifies the current script's type
60// for scanning and catches syntax errors for looking at alternatives.
61// Note the possible use of a C++-template syntax for non-terminal symbols.
62script<"">	::=
63		#try
64			// '=>' is an escape mode to execute a procedural instruction
65			// or block.
66			=> set this = "procedural";
67			script<"procedural">
68		// We don't want to stop on error if the script wasn't recognized
69		// as a common one.
70		#catch(sError1)
71	|
72		#try
73			=> set this = "extended-BNF";
74			script<"extended-BNF">
75		#catch(sError2)
76	|
77		#try
78			=> set this = "template-based";
79			script<"template-based">
80		#catch(sError3)
81	|
82		// If none of the 3 types, the error for each of them is raised.
83		=> set this = "";
84		=> error("Not recognized as a 'CodeWorker' script:\n" +
85				 "  - procedural script:\n" + sError1 +
86				 "  - extended-BNF script:\n" + sError2 +
87				 "  - template-based script:\n" + sError3);
88	;
89
90// The non terminal 'script<"procedural">' scans a common script, such as a
91// leader script: not BNF and not template-based.
92// An error is raised if a syntax error is encountered (use of '#continue').
93script<"procedural">	::=
94		#ignore // ignore blanks and C++ comments between symbols
95		#continue // the rest of the sequence must be valid (or the scanner raises a syntax error)
96		[instruction]*
97		#empty // end of file expected; because of '#continue', a syntax error is raised if not reached
98		;
99
100// The well-named non terminal script<"extended-BNF"> scans an extended-BNF script.
101// It expects a set of:
102//   - BNF directives (case sensitive or not, ...),
103//   - functions declaration/definition,
104//   - production rules.
105// An error is raised if a syntax error is encountered (use of '#continue').
106script<"extended-BNF">	::=
107		#ignore
108		#continue
109		[BNF_instruction]+
110		#empty;
111
112BNF_instruction	::=
113			BNF_general_directive
114		|
115			FUNCTION_KEYWORD:sKeyword
116			#continue
117			instruction<sKeyword>
118		|
119			production_rule
120		;
121
122// The non terminal script<"template-based"> scans a template-based script.
123// Procedural instructions or expressions are embedded between @ symbols
124// or between <% and %>.
125// An error is raised if a syntax error is encountered (use of '#continue').
126script<"template-based">	::=
127		#continue
128		[
129			STARTING_RAW_TEXT
130			#continue
131			#ignore
132			[
133					!preprocessor expression
134					STARTING_TAG_OR_END
135				|
136					[instruction]*
137					STARTING_TAG_OR_END
138			]
139		]+;
140
141
142// Called by '#ignore'.
143ignoreEmbeddedComment	::= ->["*/" | "/*" ignoreEmbeddedComment | "//"->'\n' ignoreEmbeddedComment];
144
145//-------------------------------------------------------------
146//                          The expressions
147//-------------------------------------------------------------
148
149// A default expression (non arithmetic) that manipulates and returns
150// a string.
151expression	::=	boolean_expression<false>;
152
153// A condition for 'while', 'if', ... statements.
154boolean_expression	::= ternary_expression<""> [boolean_operator #continue ternary_expression<"">]*;
155
156// A concatenation of string expressions: the '+' is interpreted as
157// concatenation.
158concatenation_expression	::= comparison_member_expression<false>;
159
160// The template non terminal 'expression<bNumeric>' handles a string
161// expression when the template variable 'bNumeric' is worth false
162// ('false' is a keyword of the language that means an empty string),
163// and an arithmetic expression when it is instantiated with true
164// (keyword that means "true").
165// See the escape mode '$' in 'literal_expression<bNumeric>' to
166// understand how to swap in arithmetic mode.
167expression<bNumeric>	::=	boolean_expression<bNumeric>;
168
169// Generic form of a boolean expression, both for arithmetic and string
170// expressions.
171boolean_expression<bNumeric>	::= ternary_expression<bNumeric> [boolean_operator #continue ternary_expression<bNumeric>]*;
172boolean_operator	::= "&&" | "||" | "^^" | '&' | '|' | '^';
173
174// Non terminal of the C-like ternary operator '?' ':'.
175ternary_expression<bNumeric>	::= comparison_expression<bNumeric> ['?' #continue expression<bNumeric> ':' expression<bNumeric>]?;
176
177// Generic form of a comparison (both arithmetic and string).
178comparison_expression<bNumeric>	::=
179		comparison_member_expression<bNumeric>
180		[
181				comparison_operator #continue comparison_member_expression<bNumeric>
182			|
183				INSET #continue constant_set
184		]*
185		;
186comparison_operator	::=	"<=" | "<>" | ">=" | "!=" | "==" | '<' | '=' | '>';
187constant_set	::=
188		'{' #continue
189		[CONSTANT_STRING | CONSTANT_CHAR]
190		[
191			','
192			#continue
193			[CONSTANT_STRING | CONSTANT_CHAR]
194		]*
195		'}'
196		;
197
198// The generic non-terminal 'comparison_member_expression' is quite
199// particular. A comparison's member returns either a numeric (stored as
200// a string) or a string. Here, 'comparison_member_expression<true>'
201// handles an arithmetic expression. It means that it recognizes
202// arithmetic operators ('+' means addition instead of concatenation).
203comparison_member_expression<true>	::= shift_expression [sum_operator #continue shift_expression]*;
204sum_operator	::= PLUS | '-';
205
206// Binary shift operators, as in C/C++/Java ...
207shift_expression	::= factor_expression [shift_operator #continue factor_expression]*;
208shift_operator	::= "<<" | ">>";
209
210// The multiplication.
211factor_expression	::= literal_expression<true> [factor_operator #continue literal_expression<true>]*;
212factor_operator	::= '*' | '/' | '%';
213
214
215// The non-terminal 'comparison_member_expression<false>' recognizes
216// string expressions only and '+' means concatenation. Arithmetic
217// operators like '-' and '%' aren't available.
218comparison_member_expression<false>	::= literal_expression<false> [CONCAT #continue literal_expression<false>]*;
219
220
221// The generic non terminal of a literal:
222//   - string between double quotes,
223//   - expression between parenthesis,
224//   - arithmetic expression between '$' (cannot be reentrant),
225//   - bitwise negation,
226//   - constant char (interpreted as a string in CodeWorker),
227//   - boolean negation,
228//   - number (interpreted as a string in CodeWorker),
229//   - predefined constants 'true' (= "true") and 'false' (= ""),
230//   - function call,
231//   - variable expression, perhaps followed by a method call.
232literal_expression<bNumeric>	::=
233		CONSTANT_STRING
234	|
235		'(' #continue expression<bNumeric> ')'
236	|
237		'$' #continue #check(!bNumeric) expression<true> '$'
238	|
239		'~' #continue #check(bNumeric) literal_expression<true>
240	|
241		CONSTANT_CHAR
242	|
243		'!' #continue literal_expression<bNumeric>
244	|
245		#readNumeric // scans a number
246	|
247		// '#readIdentifier' is a predefined non terminal that scans
248		// a C-like identifier.
249		// - A:{"s1", ..., "sN"} means that the token must be worth
250		//   a constant string of the set,
251		// - A:var means that the token value is assigned to the
252		//   variable 'var'. If the variable doesn't exist yet, it is
253		//   declared in the local scope,
254		// - A:{"s1", ..., "sN"}:var means that the token must belong
255		//   to the set and that the value is assigned to the variable.
256		#readIdentifier:{"true", "false"}
257	|
258		function_call
259	|
260		variable_expression ['.' #continue method_call]?
261		;
262
263// Non terminal of a variable.
264variable_expression	::=
265		#readIdentifier:sIdentifier variable_expression<sIdentifier>
266	|
267		'#' #continue "evaluateVariable" '(' expression ')'
268		;
269
270// Non terminal of a script file to execute (parse/generation/interpretation).
271// Usually, it represents the file name of the script, but it may be the
272// full description of the script to execute, between brackets.
273script_file_expression<"free">	::=
274		'{' #continue [instruction]* '}'
275	|
276		expression
277		;
278
279script_file_expression<"pattern">	::=
280		'{' #continue
281		=> local bContinue = true;
282		[
283			#check(bContinue)
284			STARTING_RAW_TEXT
285			#continue
286			#ignore
287			[
288					!preprocessor expression
289					[STARTING_TAG | '}' => set bContinue = false;]
290				|
291					[instruction]*
292					[STARTING_TAG | '}' => set bContinue = false;]
293			]
294		]+
295	|
296		expression
297		;
298
299script_file_expression<"translate">	::= script_file_expression<"BNF">;
300script_file_expression<"BNF">	::=
301		'{' #continue [BNF_instruction]* '}'
302	|
303		expression
304		;
305
306// The right-side of a variable. '#!ignore' in the non-terminal declaration
307// part of the production rule means that neither blanks or C++-like comments
308// must be scanned before calling the non-terminal. Because of an ambiguity
309// on '#' and '[' with the extended-BNF syntax, whitespaces aren't allowed
310// before them in a variable expression, while a BNF directive (#...) or a
311// repeatable sequence ([...]...) must have at least a blank or comment before
312// them.
313//
314//   - points to a subnode with '.' as in C/C++/Java... for accessing
315//     the attributes of a structure,
316//   - points to an item of the current node's array,
317//   - accesses to the first/last item of the array or to the parent's node,
318//   - accesses to the nth item of the array (starting at 0),
319variable_expression<sIdentifier> : #!ignore	::=
320		[
321				#ignore '.' #readIdentifier
322				![['<' concatenation_expression '>']? '(']
323			|
324				'[' #ignore #continue expression ']'
325			|
326				'#'
327				[
328						VARIABLE_SPECIAL_ACCESSOR
329					|
330						'[' #ignore #continue expression ']'
331				]
332		]*
333		;
334
335// A method call consists of calling a function where (generally) the first
336// parameter is provided as an expression on the left-side:
337//    sText.findString('/');
338// calls the function
339//    findString(sText, '/');
340// For some predefined functions, the expression doesn't represent
341// the first parameter:
342//    list.findElement("BNF");
343// calls the function
344//    findElement("BNF", list);
345// where 'list' occupied the second position.
346method_call	::=
347		#readIdentifier:sMethodName
348		[
349				predefined_method_call<sMethodName>
350			|
351				user_method_call
352		];
353user_method_call	::=	['<' concatenation_expression '>']? '(' #continue [expression [',' #continue expression]*]? ')';
354
355// Call of a predefined/user-defined function.
356function_call	::=
357		#readIdentifier:sFunctionName
358		[
359				predefined_function_call<sFunctionName>
360			|
361				module_function_call
362			|
363				user_function_call
364		];
365module_function_call	::= "::" #readIdentifier:sFunctionName '(' #continue [expression [',' #continue expression]*]? ')';
366user_function_call	::=	['<' concatenation_expression '>']? '(' #continue [expression [',' #continue expression]*]? ')';
367
368
369//-------------------------------------------------------------
370//                          The instructions
371//-------------------------------------------------------------
372
373// The non-terminal of an instruction:
374//   - a block of instructions,
375//   - a simple statement,
376//   - a call to a predefined function,
377//   - a call to a predefined procedure,
378//   - a call to a user function,
379//   - a preprocessor directive,
380//   - a server page's raw text (between @ or %> <%).
381instruction	::=
382		'{' #continue [instruction]* '}'
383	|
384		#readIdentifier:sKeyword
385		[
386				instruction<sKeyword>
387			|
388				predefined_function_call<sKeyword> ';'
389			|
390				predefined_procedure_call<sKeyword> ';'
391			|
392				module_function_call ';'
393			|
394				user_function_call ';'
395		]
396	|
397		preprocessor
398	|
399		variable_expression '.' #continue method_call ';'
400	|
401		#check(this != "procedural")
402		STARTING_TAG
403		#!ignore
404		#continue STARTING_ENDING_RAW_TEXT
405		#ignore
406		[!preprocessor expression ![!'@' !"%>" !#empty]]?
407		;
408
409// Looks for a preprocessing directive
410preprocessor	::= '#' #readIdentifier:sKeyword preprocessor<sKeyword>;
411
412// The non-terminal 'preprocessor<"include">' includes a script file.
413preprocessor<"include">	::= #continue CONSTANT_STRING;
414
415// The non-terminal 'preprocessor<"coverage">' records the coverage of
416// an output file by a template-based script.
417preprocessor<"coverage">	::= #continue '(' variable_expression ')';
418
419// The non-terminal 'preprocessor<"matching">' records the coverage of
420// an input file by an extended-BNF script.
421preprocessor<"matching">	::= #continue '(' variable_expression ')';
422
423// The non-terminal 'preprocessor<"jointpoint">' is called into an advice
424// (Aspect-Oriented Programming with template-based scripts).
425preprocessor<"jointpoint">	::= ['(' #continue variable_expression ')']?;
426
427// The 'use' directive loads a dynamic library, whose name is the name
428// of the module ending with "cw".
429// Then, it adds new commands in CodeWorker.
430// Example: #use "PGSQL"   -> load of "PGSQLcw.dll"
431preprocessor<"use">	::= #continue #readIdentifier;
432
433// The generic form 'instruction<sIdentifier>' is called when the keyword
434// wasn't recognized as a statement. It might be an assignment.
435instruction<sIdentifier>	::=	variable_expression<sIdentifier> ['=' | "+="] #continue expression ';';
436
437//------------------ Some classical statements ------------------
438instruction<"if">	::= #continue boolean_expression instruction [ELSE #continue instruction]?;
439instruction<"do">	::= #continue instruction WHILE boolean_expression ';';
440instruction<"while">	::= #continue boolean_expression instruction;
441
442// The 'switch' statement works on strings. The 'start' label takes the
443// flow of control if the controlled sequence starts with the corresponding
444// constant expression.
445instruction<"switch">	::= #continue '(' expression ')' switch_body;
446switch_body	::=
447		'{'
448		#continue
449		[
450			[
451				DEFAULT
452			|
453				[CASE | START] #continue CONSTANT_STRING
454			]
455			':'
456			[instruction]*
457		]*
458		'}';
459
460//------------------ Some assignment operators ------------------
461
462// The right member of an assignment operator may describe a constant tree
463// to assign to the variable (the left member).
464assignment_expression	::=
465		'{'
466		#continue
467		[
468			assignment_expression
469			[',' #continue assignment_expression]*
470		]?
471		'}'
472	|
473		expression
474	;
475
476// Declare a local variable on the stack as a tree. The scope manages its
477// timelife. A value may be assigned to the variable.
478instruction<"local">	::= #continue variable_expression ['=' #continue assignment_expression]? ';';
479
480// Declare a global variable visible everywhere. A value may be assigned
481// to the variable.
482instruction<"global">	::= #continue variable_expression ['=' #continue assignment_expression]? ';';
483
484// Declare a local variable and assign a reference to another node.
485//     localref A = B;
486//   is the equivalent of:
487//     local A;
488//     ref A = B;
489instruction<"localref">	::= #continue variable_expression '=' variable_expression ';';
490
491// Copy a node to another integrally, after cleaning the destination node.
492instruction<"setall">	::= #continue variable_expression '=' variable_expression ';';
493
494// Merge a node to another integrally.
495instruction<"merge">	::= #continue variable_expression '=' variable_expression ';';
496
497// Classical assignment of a value to a node. If the node doesn't exist
498// yet, a warning is displayed but the node is created and the value
499// assigned. It is better to use 'insert' to create a node.
500instruction<"set">	::= #continue variable_expression ["+=" | '='] assignment_expression ';';
501
502// Assignment of a value to a node. If the node doesn't exist yet, it is created.
503// If nothing has to be assigned, the node is just created.
504instruction<"insert">	::= #continue variable_expression [["+=" | '='] #continue assignment_expression]? ';';
505
506// Assigns a reference to another node.
507instruction<"ref">	::= #continue variable_expression '=' variable_expression ';';
508
509// Adds a new item in an array, whose key is worth the position of the item
510// in the array (the last) starting at 0.
511instruction<"pushItem">	::= #continue variable_expression ['=' #continue expression]? ';';
512
513// The statement 'foreach' iterates items of an array.
514// It may sort items before, taking the case into account or not.
515// It may propagate the iteration on branches, which have the same
516// name as the array. Example: 'foreach i in cascading a.b.c ...'
517// will propagate the 'foreach' on 'i.c' and so on recursively.
518instruction<"foreach">	::= #continue #readIdentifier
519		IN
520		[
521				[REVERSE]?
522				SORTED
523				[NO_CASE]?
524			|
525				CASCADING
526				[#readIdentifier:{"first", "last"}]?
527		]*
528		variable_expression
529		instruction
530		;
531
532// The 'continue' statement, same meaning as in C/C++/Java.
533instruction<"continue">	::= #continue ';';
534// The 'break' statement, same meaning as in C/C++/Java.
535instruction<"break">	::= #continue ';';
536
537// The statement 'forfile' browses a directory and iterates all
538// files matching a pattern. The seach is recursive on directories
539// if 'cascading' is chosen.
540instruction<"forfile">	::= #continue #readIdentifier
541		IN
542		[
543				[REVERSE]?
544				SORTED
545				[NO_CASE]?
546			|
547				CASCADING
548				[#readIdentifier:{"first", "last"}]?
549		]*
550		expression
551		instruction
552		;
553
554// The statement 'select' crosscuts all tree nodes that match a
555// pattern of branch, in the spirit of XPath (XSL).
556instruction<"select">	::= #continue #readIdentifier
557		IN
558		[SORTED]?
559		motif_expression
560		instruction
561		;
562
563// the non-terminal 'motif_expression' defines a kind of XPath expression
564// to apply on a subtree.
565motif_expression	::=
566		[
567				'(' #continue motif_expression ')'
568			|
569				motif_and_expression
570		]
571		[
572			["||" | '|']
573			#continue
574			motif_and_expression
575		]*;
576motif_and_expression	::=	motif_concat_expression [["&&" | '&'] #continue motif_concat_expression]*;
577motif_concat_expression	::= motif_path_expression ['+' #continue motif_path_expression]*;
578motif_path_expression	::=
579		motif_step_expression
580		[
581				"..." #continue motif_ellipsis_expression
582			|
583				'.' #continue motif_step_expression
584		]*;
585motif_ellipsis_expression	::= motif_step_expression;
586motif_step_expression	::=
587		#continue
588		['*' | #readIdentifier]
589		['[' [expression]? ']']*
590		;
591
592
593//---------- Declaration / definition of user-defined functions ----------
594
595// The definition of a user-defined function starts with the keyword
596// 'function'. A function may have a kind of template form, instantiated
597// with a key between '<' and '>'.
598instruction<"function">	::= #continue #readIdentifier ['<' #continue CONSTANT_STRING '>']? '(' [function_parameter [',' #continue function_parameter]*]? ')' function_body;
599classical_function_definition	::= #readIdentifier '(' #continue function_parameters ')' function_body;
600instantiated_template_function_definition	::= #readIdentifier '<' #continue CONSTANT_STRING '>' #continue '(' function_parameters ')' function_body;
601generic_template_function_definition	::= #readIdentifier '<' #continue #readIdentifier '>' #continue '(' function_parameters ')' [template_function_body | function_body];
602function_parameters	::= [function_parameter [',' #continue function_parameter]*]?;
603function_parameter	::=	#readIdentifier [':' #continue function_parameter_type]?;
604function_parameter_type	::= #readIdentifier:{"value", "variable", "node", "reference", "index"};
605function_body	::=	#continue '{' [instruction]* '}';
606template_function_body	::=
607		"{{" #continue
608		[
609			STARTING_RAW_TEXT
610			#continue
611			#ignore
612			[
613					!preprocessor expression
614					[STARTING_TAG | '}' #break]
615				|
616					[instruction]*
617					[STARTING_TAG | '}' #break]
618			]
619		]+
620		'}'
621		;
622
623// Forward declaration of a function.
624instruction<"declare">	::= #continue FUNCTION #readIdentifier ['<' #continue CONSTANT_STRING '>']? '(' [function_parameter [',' #continue function_parameter]*]? ')' ';';
625
626// External function: binding with a C++ implementation of the function,
627// defined by the user.
628instruction<"external">	::= #continue FUNCTION #readIdentifier ['<' #continue CONSTANT_STRING '>']? '(' [function_parameter [',' #continue function_parameter]*]? ')' ';';
629
630// The hook 'readonlyHook' is called when the tool tries to save a generated
631// file but that the replaced file is locked for writing. The name of the file
632// is passed by value. It must return a non-empty value if the file have been
633// unlocked in the body (suceeded call to the source code control system).
634instruction<"readonlyHook">	::= #continue '(' #readIdentifier ')' function_body;
635
636instruction<"writefileHook">	::= #continue '(' #readIdentifier ',' #readIdentifier ',' #readIdentifier ')' function_body;
637
638// The hook 'stepintoHook' is called when entering into a BNF non-terminal call,
639// just before running the production rule.
640// It passes first the signature of the BNF clause, and then the local scope.
641instruction<"stepintoHook">	::= #continue '(' #readIdentifier ',' #readIdentifier ')' function_body;
642
643// The hook 'stepoutHook' is called when finishing a BNF non-terminal call,
644// just after running the production rule.
645// It passes the signature of the BNF clause, then the local scope and then
646// a boolean, is worth "true" if success.
647instruction<"stepoutHook">	::= #continue '(' #readIdentifier ',' #readIdentifier ',' #readIdentifier ')' function_body;
648
649// Returns the value of a user-defined function. It is never a node.
650// If no expression returned, one consider returning the value of a hidden
651// local variable having the name of the function.
652instruction<"return">	::= #continue [expression]? ';';
653
654// Classical 'try/catch' statement. The tool puts the error message into a
655// variable.
656instruction<"try">	::= #continue instruction "catch" '(' variable_expression ')' instruction;
657
658// The statement 'finally' defines a block to execute each time the flow
659// of control leaves the scope of the function, even in case of exception
660// raising.
661instruction<"finally">	::= #continue instruction;
662
663// Deprecated way to call a function, ignoring the output result.
664instruction<"nop">	::= #continue '(' function_call ')' ';';
665
666// A 'jointpoint' statement to declare into a template-based script (Aspect-oriented construct)
667instruction<"jointpoint">	::=
668	#continue
669	[#readIdentifier:"iterate"]?
670	#readIdentifier
671	['(' #continue variable_expression ')']?
672	[';' | instruction]
673	;
674
675// A 'advice' statement to declare into a template-based script (Aspect-oriented construct)
676instruction<"advice">	::=
677	#continue
678	ADVICE_TYPE
679	['(' #continue #readIdentifier ')']?
680	':' expression
681	instruction
682	;
683
684
685//---------- Statement modifiers ----------
686
687// Choose a file as the standard input (function 'inputLine()').
688instruction<"file_as_standard_input">	::= #continue '(' expression ')' instruction;
689
690// Choose a string as the standard input (function 'inputLine()').
691instruction<"string_as_standard_input">	::= #continue '(' expression ')' instruction;
692
693// Redirects all console outputs to a variable while running an instruction.
694instruction<"quiet">	::= #continue '(' variable_expression ')' instruction;
695
696// Measures the time consumed by an instruction. Use 'getLastDelay()' to
697// take the value in milliseconds after running the instruction.
698instruction<"delay">	::= #continue instruction;
699
700// Runs an instruction under the integrated debug mode, running to the
701// console.
702instruction<"debug">	::= #continue instruction;
703
704// Runs an instruction under the integrated quantify mode, measuring time
705// consuming in functions and the number of times each line of script is
706// visited.
707instruction<"quantify">	::= #continue ['(' #continue expression ')']? instruction;
708
709// The 'project' tree is the main tree of the application, a global tree.
710// To change it locally, just for running an instruction, use 'new_project'.
711instruction<"new_project">	::= #continue instruction;
712
713// In a translation or BNF script, change of the current parsed file.
714instruction<"parsed_file">	::= #continue '(' expression ')' instruction;
715
716// In a translation or BNF script, change of the current input to a parsed string.
717instruction<"parsed_string">	::= #continue '(' expression ')' instruction;
718
719// In a translation or template-based script, change of the current
720// generated file.
721instruction<"generated_file">	::= #continue '(' expression ')' instruction;
722
723// In a translation or template-based script, change of the current
724// output to an appending mode in a given file.
725instruction<"appended_file">	::= #continue '(' expression ')' instruction;
726
727// In a translation or template-based script, change of the current
728// output to a string instead of ta file.
729instruction<"generated_string">	::= #continue '(' variable_expression ')' instruction;
730
731
732//---------------------------------------------------------------------
733//                        Some lexical tokens
734//---------------------------------------------------------------------
735
736PLUS	::= '+' #!ignore !'=';
737CONCAT	::= '+' #!ignore !'=';
738
739DEFAULT	::= #readIdentifier:"default";
740CASE	::= #readIdentifier:"case";
741START	::= #readIdentifier:"start";
742CASCADING	::= #readIdentifier:"cascading";
743ELSE	::= #readIdentifier:"else";
744IN		::= #readIdentifier:"in";
745INSET	::= #readIdentifier:"in";
746NO_CASE	::= #readIdentifier:"no_case";
747REVERSE	::= #readIdentifier:"reverse";
748SORTED	::= #readIdentifier:"sorted";
749WHILE	::= #readIdentifier:"while";
750
751CONSTANT_STRING	::= #readCString;
752CONSTANT_CHAR	::= '\'' #!ignore #continue ['\\']? #readChar '\'';
753
754VARIABLE_SPECIAL_ACCESSOR ::= #readIdentifier:{"front", "back", "parent"};
755
756FUNCTION_KEYWORD	::= [FUNCTION | DECLARE | EXTERNAL | WRITEFILE_HOOK | READONLY_HOOK | STEPINTO_HOOK | STEPOUT_HOOK];
757FUNCTION	::= #readIdentifier:"function";
758DECLARE		::= #readIdentifier:"declare";
759EXTERNAL	::= #readIdentifier:"external";
760WRITEFILE_HOOK	::= #readIdentifier:"writefileHook";
761READONLY_HOOK	::= #readIdentifier:"readonlyHook";
762STEPINTO_HOOK	::= #readIdentifier:"stepintoHook";
763STEPOUT_HOOK	::= #readIdentifier:"stepoutHook";
764
765PRULE_SYMBOL	::= "::=";
766NON_TERMINAL	::=	#readIdentifier;
767ALTERNATION		::= '|';
768TR_BEGIN		::= '<';
769TR_END			::= '>';
770PIPESUP			::= "|>";
771ANDOR			::= "&|";
772
773ADVICE_TYPE		::=	#readIdentifier:{"before", "before_iteration", "around", "around_iteration", "after", "after_iteration"};
774
775STARTING_RAW_TEXT	::= ->['@' | "<%"];
776STARTING_ENDING_RAW_TEXT	::= ->['@' | "<%" | #empty];
777STARTING_TAG	::= ['@' | "%>"];
778STARTING_TAG_OR_END	::= ['@' | "%>" | #empty];
779
780
781//---------------------------------------------------------------------
782//                                BNF script
783//---------------------------------------------------------------------
784
785// A BNF directive starts with the symbol '#' and may be related to the
786// case or to the production rule for ignoring blanks between tokens...
787BNF_general_directive	::=
788		'#'
789		#readIdentifier:sKeyword
790		BNF_general_directive<sKeyword>
791		;
792
793// If not recognized as a BNF directive, it is a common preprocessor
794// directive.
795BNF_general_directive<T>	::= preprocessor<T>;
796
797// If set, the case isn't taken into account.
798BNF_general_directive<"noCase">	::= #check(true);
799
800// If set, the grammar will run in trace mode
801BNF_general_directive<"trace">	::= #check(true);
802
803// Defines the production rule for ignoring comments and blanks between
804// tokens.
805BNF_general_directive<"ignore">	::=
806		#continue
807		['[' #continue #readCString ']']?
808		PRULE_SYMBOL right_side_production_rule
809		;
810
811// Overload a non-terminal whose production rule has already been defined.
812BNF_general_directive<"overload">	::=
813		'#' #continue #readIdentifier:"ignore" BNF_general_directive<"ignore">
814	|
815		production_rule;
816
817// Only under the translation mode: means that the input stream is copied
818// to the output stream automatically while scanning (useful for program
819// transformations).
820BNF_general_directive<"implicitCopy">	::= ['(' #continue #readIdentifier ['<' #continue CONSTANT_STRING '>']? ')']?;
821
822// Only under the translation mode, chosen by default: the script specifies
823// between '@' symbols (or between '%>' '<%') the text to write in the output
824// stream.
825BNF_general_directive<"explicitCopy">	::= #check(true);
826
827BNF_general_directive<"parameters">	::=
828		#continue #readIdentifier '('
829		[clause_parameter [',' #continue clause_parameter]*]?
830		')' expression;
831
832BNF_general_directive<"transformRules">	::=
833		#continue
834		expression // the filter
835		'{' #continue [BNF_instruction]* '}' // the left member
836		'{' #continue [BNF_instruction]* '}' // the production rule
837		;
838
839BNF_general_directive<"applyBNFRule">	::=
840		#continue
841		BNF_clause_call
842		;
843
844// Definition of a production rule that may be template, resolved/instantiated
845// or not.
846// A non-terminal admits parameters (passed by value, by reference, by node) and
847// may return a value (see documentation).
848production_rule	::=
849		NON_TERMINAL
850		#continue
851		[
852			TR_BEGIN
853			#continue
854			[
855					#readIdentifier
856				|
857					CONSTANT_STRING
858			]
859			TR_END
860		]?
861		[
862			'('
863			#continue
864			[
865				clause_parameter
866				[',' #continue clause_parameter]*
867
868			]?
869			')'
870		]?
871		[
872			':'
873			BNF_clause_return_value
874		]?
875		[BNF_clause_preprocessing]?
876		PRULE_SYMBOL right_side_production_rule
877		;
878
879// Normally, what a non-terminal returns is the portion of text it has
880// scanned. Nevertheless, it is possible to specify to return a different
881// value.
882// Note: "node" and "list" aren't validated yet.
883BNF_clause_return_value	::= #readIdentifier:{"value", "node", "list"};
884
885// Preprocessing just before executing the right side of the production
886// rule.
887BNF_clause_preprocessing	::=
888		':' '#'
889		#continue
890		[
891				'!'
892				#continue
893				#readIdentifier:"ignore"
894			|
895				#readIdentifier:"ignore"
896				['(' #continue [#readCString | BNF_ignore_type] ')']?
897		];
898
899BNF_ignore_type	::= "C++/Doxygen" | "C++" | "JAVA" | "HTML" | "XML" | "blanks" | "LaTeX";
900
901// A non-terminal may accept parameters. Here are the allowed ones.
902clause_parameter	::=	#readIdentifier #continue ':' clause_parameter_type;
903clause_parameter_type	::= #readIdentifier:{"node", "value", "variable", "reference"};
904
905// Right-side of the production rule.
906right_side_production_rule	::= BNF_sequence #continue [ALTERNATION #continue BNF_sequence]* ';';
907BNF_sequence	::= [BNF_literal]+;
908
909// A BNF literal is a terminal or non-terminal or a directive.
910// 'BNF_literal<true>' means that the literal might be followed by a
911// constant (or set of constants) the token must match, or a variable
912// that will receive the scanned token.
913BNF_literal	::=	BNF_literal<true>;
914BNF_literal<bTokenCondition>	::=
915	[
916			CONSTANT_STRING
917			[#check(bTokenCondition) BNF_variable_assignation]?
918		|
919			CONSTANT_CHAR
920			[
921					".." #continue CONSTANT_CHAR
922					[#check(bTokenCondition) BNF_token_post_processing]?
923				|
924					[#check(bTokenCondition) BNF_variable_assignation]?
925			]
926		|
927			[
928					'~'
929				|
930					'^'
931				|
932					'!'
933				|
934					"->"
935					[multiplicity]?
936					[
937						'('	#continue
938						[BNF_variable_assignation]?
939						['-' BNF_variable_assignation]?
940						[BNF_sequence]?
941						')'
942					]?
943			]
944			#continue BNF_literal<false>
945			[#check(bTokenCondition) BNF_token_post_processing]?
946		|
947			'[' #continue BNF_sequence [ALTERNATION #continue BNF_sequence]* ']'
948			[multiplicity]?
949			[#check(bTokenCondition) BNF_token_post_processing]?
950		|
951			'#'
952			#continue
953			[
954					'!'
955					#continue
956					#readIdentifier:"ignore"
957				|
958					#readIdentifier:sDirective
959					BNF_directive<sDirective>:bTokenConditionAllowed
960					[
961						#check(bTokenCondition && bTokenConditionAllowed)
962						BNF_token_post_processing
963					]?
964			]
965		|
966			"=>" #continue instruction
967		|
968			BNF_clause_call
969			[#check(bTokenCondition) BNF_token_post_processing]?
970	]
971	[
972		[PIPESUP | ANDOR]
973		#continue
974		BNF_literal<bTokenCondition>
975	]?
976	;
977
978BNF_variable_assignation	::= [':' | ":+"] #continue variable_expression;
979
980multiplicity	::=
981			'?' | '+' | '*'
982		|
983			"#repeat" #continue '(' expression [',' #continue expression]? ')'
984		|
985			#readInteger [".." #continue [#readInteger | '*']]?
986		;
987
988// '#continue' means that the rest of the sequence must be valid.
989// If not, a syntax error is raised at the point where a literal
990// of the sequence doesn't match the sentence.
991BNF_directive<"continue"> : value	::= #check(true);
992
993// '#noCase' means that the case is ignored for the rest of the sequence.
994BNF_directive<"noCase"> : value	::= #check(true);
995
996// '#nextStep' fixes the cursor jump in '->' and '~' operators.
997BNF_directive<"nextStep"> : value	::= #check(true);
998
999// '#ratchet' allows that the cursor in the input stream never
1000// comes back before.
1001BNF_directive<"ratchet"> : value	::= #check(true);
1002
1003// '#super' works on non-terminals that overload a clause. It refers to
1004// the overloaded clause.
1005BNF_directive<"super"> : value	::=
1006		#continue "::" ['#' #continue "super" "::"]* BNF_clause_call
1007		=> set BNF_directive = true;
1008		;
1009
1010// BNF directive to catch errors thrown from the sequence inlayed in
1011// '#try'/'#catch'.
1012BNF_directive<"try"> : value	::=
1013		#continue
1014		[!['#' #readIdentifier:"catch"] #continue BNF_literal]+
1015		BNF_catch;
1016BNF_catch	::= '#' "catch" '(' variable_expression ')';
1017
1018// Directive to change the input file for the rest of the sequence.
1019BNF_directive<"parsedFile"> : value	::= #continue '(' expression ')' BNF_sequence;
1020BNF_directive<"parsedString"> : value	::= #continue '(' expression ')' BNF_sequence;
1021
1022
1023// Directive to change the output file for the rest of the sequence for a
1024// translation script.
1025BNF_directive<"generatedFile"> : value	::= #continue '(' expression ')' BNF_sequence;
1026
1027// Directive to change the output for the rest of the sequence for a
1028// translation script. The output is written into a variable.
1029BNF_directive<"generatedString"> : value	::= #continue '(' variable_expression ')' BNF_sequence;
1030
1031// Directive to change the output file for the rest of the sequence for a
1032// translation script. The output is appended.
1033BNF_directive<"appendedFile"> : value	::= #continue '(' expression ')' BNF_sequence;
1034
1035// Choose how to ignore insignificant characters between tokens:
1036//   - C++/Java/HTML/XML/LaTeX whitespaces and comments,
1037//   - blanks
1038BNF_directive<"ignore"> : value	::= ['(' #continue [#readCString | BNF_ignore_type] ')']?;
1039
1040// leaves a repeat token, considering that it has succeeded
1041BNF_directive<"break"> : value	::= #check(true);
1042
1043// Expects the end of the input file.
1044BNF_directive<"empty"> : value	::= #check(true);
1045
1046// Adds a new item in an array. If the rest of the sequence fails, the item
1047// is removed. If the directive had created the array node, it is removed too.
1048BNF_directive<"pushItem"> : value	::= #continue '(' variable_expression ')';
1049
1050// Inserts a new node. If the rest of the sequence fails and if the node wasn't
1051// existing before, the node is removed.
1052BNF_directive<"insert"> : value	::= #continue '(' variable_expression ')';
1053
1054// Reads end of line. It accepts a post
1055// processing for variable assignment or constant's comparison.
1056BNF_directive<"EOL"> : value	::= => { set BNF_directive = true; };
1057
1058// Reads a byte and returns it as a two hexadecimal digits. It admits a post
1059// processing for variable assignment or constant's comparison.
1060BNF_directive<"readByte"> : value	::= => { set BNF_directive = true; };
1061BNF_directive<"readBytes"> : value	::= => { set BNF_directive = true; };
1062
1063// Reads a character. It admits a post processing for variable assignment
1064// or constant's comparison.
1065BNF_directive<"readChar"> : value	::= => { set BNF_directive = true; };
1066BNF_directive<"readChars"> : value	::= => { set BNF_directive = true; };
1067
1068// Reads a C-like string. It admits a post processing for variable assignment
1069// or constant's comparison.
1070BNF_directive<"readCString"> : value	::= => { set BNF_directive = true; };
1071
1072// Reads a Python-like string. It admits a post processing for variable assignment
1073// or constant's comparison.
1074BNF_directive<"readPythonString"> : value	::= => { set BNF_directive = true; };
1075
1076// Reads a C-like identifier. It admits a post processing for variable
1077// assignment or constant's comparison.
1078BNF_directive<"readIdentifier"> : value	::= => { set BNF_directive = true; };
1079
1080// Reads a C-like identifier if the position points to the beginning of an
1081// identifier. It admits a post processing for variable assignment or
1082// constant's comparison.
1083BNF_directive<"readCompleteIdentifier"> : value	::= => { set BNF_directive = true; };
1084
1085// Reads an integer. It admits a post processing for variable
1086// assignment or constant's comparison.
1087BNF_directive<"readInteger"> : value	::= => { set BNF_directive = true; };
1088
1089// Reads an unsigned long and converts it between network and host representation.
1090// It admits a post processing for variable assignment or constant's comparison.
1091BNF_directive<"readNetworkLong"> : value	::= => { set BNF_directive = true; };
1092
1093// Reads an unsigned short and converts it between network and host representation.
1094// It admits a post processing for variable assignment or constant's comparison.
1095BNF_directive<"readNetworkShort"> : value	::= => { set BNF_directive = true; };
1096
1097// Reads an unsigned long in binary representation.
1098// It admits a post processing for variable assignment or constant's comparison.
1099BNF_directive<"readBinaryLong"> : value	::= => { set BNF_directive = true; };
1100
1101// Reads an unsigned short in binary representation.
1102// It admits a post processing for variable assignment or constant's comparison.
1103BNF_directive<"readBinaryShort"> : value	::= => { set BNF_directive = true; };
1104
1105// Reads an floating-point. It admits a post processing for variable
1106// assignment or constant's comparison.
1107BNF_directive<"readNumeric"> : value	::= => { set BNF_directive = true; };
1108
1109// Scans a terminal given as the result of an expression. It admits a post
1110// processing for variable assignment or constant's comparison.
1111BNF_directive<"readText"> : value	::= #continue '(' expression ')' => { set BNF_directive = true; };
1112
1113// Forces to skip insignificant characters, as specified previously to
1114// the BNF directive "ignore(...) or as required between parenthesis"
1115BNF_directive<"skipIgnore"> : value	::= ['(' #continue [#readCString | BNF_ignore_type] ')']?;
1116
1117// Checks a condition. Does nothing about scan.
1118BNF_directive<"check"> : value	::= #continue '(' expression ')';
1119
1120// Available only in a translation script: swap to 'implicit copy' for the
1121// rest of the sequence.
1122BNF_directive<"implicitCopy"> : value	::= #check(true);
1123
1124// Available only in a translation script: swap to 'explicit copy' for the
1125// rest of the sequence.
1126BNF_directive<"explicitCopy"> : value	::= #check(true);
1127
1128// The call of a non-terminal.
1129BNF_clause_call	::=
1130		NON_TERMINAL
1131		[TR_BEGIN #continue concatenation_expression TR_END]?
1132		['(' #continue [expression [',' #continue expression]*]? ')']?
1133		;
1134
1135// Some tokens accept a post processing. It consists of checking whether
1136// the scanned value belongs to a set of constants or not, and/or assigning
1137// the value to a variable.
1138BNF_token_post_processing	::=
1139		[
1140			':'
1141			[
1142					'{' #continue CONSTANT_STRING [',' #continue CONSTANT_STRING]* '}'
1143				|
1144					CONSTANT_STRING
1145			]
1146		]?
1147		[BNF_variable_assignation]?;
1148
1149
1150//---------------------------------------------------------------------
1151//               Predefined functions/methods/procedures
1152//---------------------------------------------------------------------
1153
1154predefined_function_call<T>	::= #check(false);
1155//##marker##"predefined_function_call"
1156//##begin##"predefined_function_call"
1157predefined_function_call<"flushOutputToSocket">	::=	'(' #continue expression ')';
1158predefined_function_call<"acceptSocket">	::=	'(' #continue expression ')';
1159predefined_function_call<"add">	::=	'(' #continue expression ',' expression ')';
1160predefined_function_call<"addGenerationTagsHandler">	::=	'(' #continue expression ',' script_file_expression<"BNF"> ',' script_file_expression<"pattern"> ')';
1161predefined_function_call<"addToDate">	::=	'(' #continue expression ',' expression ',' expression ')';
1162predefined_function_call<"byteToChar">	::=	'(' #continue expression ')';
1163predefined_function_call<"bytesToLong">	::=	'(' #continue expression ')';
1164predefined_function_call<"bytesToShort">	::=	'(' #continue expression ')';
1165predefined_function_call<"canonizePath">	::=	'(' #continue expression ')';
1166predefined_function_call<"changeDirectory">	::=	'(' #continue expression ')';
1167predefined_function_call<"changeFileTime">	::=	'(' #continue expression ',' expression ',' expression ')';
1168predefined_function_call<"charAt">	::=	'(' #continue expression ',' expression ')';
1169predefined_function_call<"charToByte">	::=	'(' #continue expression ')';
1170predefined_function_call<"charToInt">	::=	'(' #continue expression ')';
1171predefined_function_call<"chmod">	::=	'(' #continue expression ',' expression ')';
1172predefined_function_call<"ceil">	::=	'(' #continue expression ')';
1173predefined_function_call<"compareDate">	::=	'(' #continue expression ',' expression ')';
1174predefined_function_call<"completeDate">	::=	'(' #continue expression ',' expression ')';
1175predefined_function_call<"completeLeftSpaces">	::=	'(' #continue expression ',' expression ')';
1176predefined_function_call<"completeRightSpaces">	::=	'(' #continue expression ',' expression ')';
1177predefined_function_call<"composeAdaLikeString">	::=	'(' #continue expression ')';
1178predefined_function_call<"composeCLikeString">	::=	'(' #continue expression ')';
1179predefined_function_call<"composeHTMLLikeString">	::=	'(' #continue expression ')';
1180predefined_function_call<"composeSQLLikeString">	::=	'(' #continue expression ')';
1181predefined_function_call<"computeMD5">	::=	'(' #continue expression ')';
1182predefined_function_call<"copySmartFile">	::=	'(' #continue expression ',' expression ')';
1183predefined_function_call<"coreString">	::=	'(' #continue expression ',' expression ',' expression ')';
1184predefined_function_call<"countStringOccurences">	::=	'(' #continue expression ',' expression ')';
1185predefined_function_call<"createDirectory">	::=	'(' #continue expression ')';
1186predefined_function_call<"createINETClientSocket">	::=	'(' #continue expression ',' expression ')';
1187predefined_function_call<"createINETServerSocket">	::=	'(' #continue expression ',' expression ')';
1188predefined_function_call<"createIterator">	::=	'(' #continue #readIdentifier ',' variable_expression ')';
1189predefined_function_call<"createReverseIterator">	::=	'(' #continue #readIdentifier ',' variable_expression ')';
1190predefined_function_call<"createVirtualFile">	::=	'(' #continue expression ',' expression ')';
1191predefined_function_call<"createVirtualTemporaryFile">	::=	'(' #continue expression ')';
1192predefined_function_call<"decodeURL">	::=	'(' #continue expression ')';
1193predefined_function_call<"decrement">	::=	'(' #continue variable_expression ')';
1194predefined_function_call<"deleteFile">	::=	'(' #continue expression ')';
1195predefined_function_call<"deleteVirtualFile">	::=	'(' #continue expression ')';
1196predefined_function_call<"div">	::=	'(' #continue expression ',' expression ')';
1197predefined_function_call<"duplicateIterator">	::=	'(' #continue #readIdentifier ',' variable_expression ')';
1198predefined_function_call<"encodeURL">	::=	'(' #continue expression ')';
1199predefined_function_call<"endl">	::=	'(' #continue ')';
1200predefined_function_call<"endString">	::=	'(' #continue expression ',' expression ')';
1201predefined_function_call<"equal">	::=	'(' #continue expression ',' expression ')';
1202predefined_function_call<"equalsIgnoreCase">	::=	'(' #continue expression ',' expression ')';
1203predefined_function_call<"equalTrees">	::=	'(' #continue variable_expression ',' variable_expression ')';
1204predefined_function_call<"executeStringQuiet">	::=	'(' #continue variable_expression ',' expression ')';
1205predefined_function_call<"existDirectory">	::=	'(' #continue expression ')';
1206predefined_function_call<"existEnv">	::=	'(' #continue expression ')';
1207predefined_function_call<"existFile">	::=	'(' #continue expression ')';
1208predefined_function_call<"existVirtualFile">	::=	'(' #continue expression ')';
1209predefined_function_call<"existVariable">	::=	'(' #continue variable_expression ')';
1210predefined_function_call<"exp">	::=	'(' #continue expression ')';
1211predefined_function_call<"exploreDirectory">	::=	'(' #continue variable_expression ',' expression ',' expression ')';
1212predefined_function_call<"extractGenerationHeader">	::=	'(' #continue expression ',' variable_expression ',' variable_expression ',' variable_expression ')';
1213predefined_function_call<"fileCreation">	::=	'(' #continue expression ')';
1214predefined_function_call<"fileLastAccess">	::=	'(' #continue expression ')';
1215predefined_function_call<"fileLastModification">	::=	'(' #continue expression ')';
1216predefined_function_call<"fileLines">	::=	'(' #continue expression ')';
1217predefined_function_call<"fileMode">	::=	'(' #continue expression ')';
1218predefined_function_call<"fileSize">	::=	'(' #continue expression ')';
1219predefined_function_call<"findElement">	::=	'(' #continue expression ',' variable_expression ')';
1220predefined_function_call<"findFirstChar">	::=	'(' #continue expression ',' expression ')';
1221predefined_function_call<"findFirstSubstringIntoKeys">	::=	'(' #continue expression ',' variable_expression ')';
1222predefined_function_call<"findLastString">	::=	'(' #continue expression ',' expression ')';
1223predefined_function_call<"findNextString">	::=	'(' #continue expression ',' expression ',' expression ')';
1224predefined_function_call<"findNextSubstringIntoKeys">	::=	'(' #continue expression ',' variable_expression ',' expression ')';
1225predefined_function_call<"findString">	::=	'(' #continue expression ',' expression ')';
1226predefined_function_call<"first">	::=	'(' #continue #readIdentifier ')';
1227predefined_function_call<"floor">	::=	'(' #continue expression ')';
1228predefined_function_call<"formatDate">	::=	'(' #continue expression ',' expression ')';
1229predefined_function_call<"getArraySize">	::=	'(' #continue variable_expression ')';
1230predefined_function_call<"getCommentBegin">	::=	'(' #continue ')';
1231predefined_function_call<"getCommentEnd">	::=	'(' #continue ')';
1232predefined_function_call<"getCurrentDirectory">	::=	'(' #continue ')';
1233predefined_function_call<"getEnv">	::=	'(' #continue expression ')';
1234predefined_function_call<"getGenerationHeader">	::=	'(' #continue ')';
1235predefined_function_call<"getHTTPRequest">	::=	'(' #continue expression ',' variable_expression ',' variable_expression ')';
1236predefined_function_call<"getIncludePath">	::=	'(' #continue ')';
1237predefined_function_call<"getLastDelay">	::=	'(' #continue ')';
1238predefined_function_call<"getNow">	::=	'(' #continue ')';
1239predefined_function_call<"getProperty">	::=	'(' #continue expression ')';
1240predefined_function_call<"getShortFilename">	::=	'(' #continue expression ')';
1241predefined_function_call<"getTextMode">	::=	'(' #continue ')';
1242predefined_function_call<"getVariableAttributes">	::=	'(' #continue variable_expression ',' variable_expression ')';
1243predefined_function_call<"getVersion">	::=	'(' #continue ')';
1244predefined_function_call<"getWorkingPath">	::=	'(' #continue ')';
1245predefined_function_call<"getWriteMode">	::=	'(' #continue ')';
1246predefined_function_call<"hexaToDecimal">	::=	'(' #continue expression ')';
1247predefined_function_call<"hostToNetworkLong">	::=	'(' #continue expression ')';
1248predefined_function_call<"hostToNetworkShort">	::=	'(' #continue expression ')';
1249predefined_function_call<"increment">	::=	'(' #continue variable_expression ')';
1250predefined_function_call<"indentFile">	::=	'(' #continue expression [',' expression]? ')';
1251predefined_function_call<"index">	::=	'(' #continue #readIdentifier ')';
1252predefined_function_call<"inf">	::=	'(' #continue expression ',' expression ')';
1253predefined_function_call<"inputKey">	::=	'(' #continue expression ')';
1254predefined_function_call<"inputLine">	::=	'(' #continue expression [',' expression]? ')';
1255predefined_function_call<"isEmpty">	::=	'(' #continue variable_expression ')';
1256predefined_function_call<"isIdentifier">	::=	'(' #continue expression ')';
1257predefined_function_call<"isNegative">	::=	'(' #continue expression ')';
1258predefined_function_call<"isNumeric">	::=	'(' #continue expression ')';
1259predefined_function_call<"isPositive">	::=	'(' #continue expression ')';
1260predefined_function_call<"joinStrings">	::=	'(' #continue variable_expression ',' expression ')';
1261predefined_function_call<"key">	::=	'(' #continue #readIdentifier ')';
1262predefined_function_call<"last">	::=	'(' #continue #readIdentifier ')';
1263predefined_function_call<"leftString">	::=	'(' #continue expression ',' expression ')';
1264predefined_function_call<"lengthString">	::=	'(' #continue expression ')';
1265predefined_function_call<"loadBinaryFile">	::=	'(' #continue expression [',' expression]? ')';
1266predefined_function_call<"loadFile">	::=	'(' #continue expression [',' expression]? ')';
1267predefined_function_call<"loadVirtualFile">	::=	'(' #continue expression ')';
1268predefined_function_call<"log">	::=	'(' #continue expression ')';
1269predefined_function_call<"longToBytes">	::=	'(' #continue expression ')';
1270predefined_function_call<"midString">	::=	'(' #continue expression ',' expression ',' expression ')';
1271predefined_function_call<"mod">	::=	'(' #continue expression ',' expression ')';
1272predefined_function_call<"mult">	::=	'(' #continue expression ',' expression ')';
1273predefined_function_call<"networkLongToHost">	::=	'(' #continue expression ')';
1274predefined_function_call<"networkShortToHost">	::=	'(' #continue expression ')';
1275predefined_function_call<"next">	::=	'(' #continue #readIdentifier ')';
1276predefined_function_call<"not">	::=	'(' #continue expression ')';
1277predefined_function_call<"octalToDecimal">	::=	'(' #continue expression ')';
1278predefined_function_call<"parseFreeQuiet">	::=	'(' #continue expression ',' variable_expression ',' expression ')';
1279predefined_function_call<"pathFromPackage">	::=	'(' #continue expression ')';
1280predefined_function_call<"postHTTPRequest">	::=	'(' #continue expression ',' variable_expression ',' variable_expression ')';
1281predefined_function_call<"pow">	::=	'(' #continue expression ',' expression ')';
1282predefined_function_call<"prec">	::=	'(' #continue #readIdentifier ')';
1283predefined_function_call<"randomInteger">	::=	'(' #continue ')';
1284predefined_function_call<"receiveBinaryFromSocket">	::=	'(' #continue expression ',' expression ')';
1285predefined_function_call<"receiveFromSocket">	::=	'(' #continue expression ',' variable_expression ')';
1286predefined_function_call<"receiveTextFromSocket">	::=	'(' #continue expression ',' expression ')';
1287predefined_function_call<"relativePath">	::=	'(' #continue expression ',' expression ')';
1288predefined_function_call<"removeDirectory">	::=	'(' #continue expression ')';
1289predefined_function_call<"removeGenerationTagsHandler">	::=	'(' #continue expression ')';
1290predefined_function_call<"repeatString">	::=	'(' #continue expression ',' expression ')';
1291predefined_function_call<"replaceString">	::=	'(' #continue expression ',' expression ',' expression ')';
1292predefined_function_call<"replaceTabulations">	::=	'(' #continue expression ',' expression ')';
1293predefined_function_call<"resolveFilePath">	::=	'(' #continue expression ')';
1294predefined_function_call<"rightString">	::=	'(' #continue expression ',' expression ')';
1295predefined_function_call<"rsubString">	::=	'(' #continue expression ',' expression ')';
1296predefined_function_call<"scanDirectories">	::=	'(' #continue variable_expression ',' expression ',' expression ')';
1297predefined_function_call<"scanFiles">	::=	'(' #continue variable_expression ',' expression ',' expression ',' expression ')';
1298predefined_function_call<"sendBinaryToSocket">	::=	'(' #continue expression ',' expression ')';
1299predefined_function_call<"sendHTTPRequest">	::=	'(' #continue expression ',' variable_expression ')';
1300predefined_function_call<"sendTextToSocket">	::=	'(' #continue expression ',' expression ')';
1301predefined_function_call<"selectGenerationTagsHandler">	::=	'(' #continue expression ')';
1302predefined_function_call<"shortToBytes">	::=	'(' #continue expression ')';
1303predefined_function_call<"sqrt">	::=	'(' #continue expression ')';
1304predefined_function_call<"startString">	::=	'(' #continue expression ',' expression ')';
1305predefined_function_call<"sub">	::=	'(' #continue expression ',' expression ')';
1306predefined_function_call<"subString">	::=	'(' #continue expression ',' expression ')';
1307predefined_function_call<"sup">	::=	'(' #continue expression ',' expression ')';
1308predefined_function_call<"system">	::=	'(' #continue expression ')';
1309predefined_function_call<"toLowerString">	::=	'(' #continue expression ')';
1310predefined_function_call<"toUpperString">	::=	'(' #continue expression ')';
1311predefined_function_call<"translateString">	::=	'(' #continue script_file_expression<"translate"> ',' variable_expression ',' expression ')';
1312predefined_function_call<"trimLeft">	::=	'(' #continue variable_expression ')';
1313predefined_function_call<"trimRight">	::=	'(' #continue variable_expression ')';
1314predefined_function_call<"trim">	::=	'(' #continue variable_expression ')';
1315predefined_function_call<"truncateAfterString">	::=	'(' #continue variable_expression ',' expression ')';
1316predefined_function_call<"truncateBeforeString">	::=	'(' #continue variable_expression ',' expression ')';
1317predefined_function_call<"UUID">	::=	'(' #continue ')';
1318predefined_function_call<"countInputCols">	::=	'(' #continue ')';
1319predefined_function_call<"countInputLines">	::=	'(' #continue ')';
1320predefined_function_call<"getInputFilename">	::=	'(' #continue ')';
1321predefined_function_call<"getLastReadChars">	::=	'(' #continue expression ')';
1322predefined_function_call<"getInputLocation">	::=	'(' #continue ')';
1323predefined_function_call<"lookAhead">	::=	'(' #continue expression ')';
1324predefined_function_call<"peekChar">	::=	'(' #continue ')';
1325predefined_function_call<"readAdaString">	::=	'(' #continue variable_expression ')';
1326predefined_function_call<"readByte">	::=	'(' #continue ')';
1327predefined_function_call<"readBytes">	::=	'(' #continue expression ')';
1328predefined_function_call<"readCChar">	::=	'(' #continue ')';
1329predefined_function_call<"readChar">	::=	'(' #continue ')';
1330predefined_function_call<"readCharAsInt">	::=	'(' #continue ')';
1331predefined_function_call<"readChars">	::=	'(' #continue expression ')';
1332predefined_function_call<"readIdentifier">	::=	'(' #continue ')';
1333predefined_function_call<"readIfEqualTo">	::=	'(' #continue expression ')';
1334predefined_function_call<"readIfEqualToIgnoreCase">	::=	'(' #continue expression ')';
1335predefined_function_call<"readIfEqualToIdentifier">	::=	'(' #continue expression ')';
1336predefined_function_call<"readLine">	::=	'(' #continue variable_expression ')';
1337predefined_function_call<"readNextText">	::=	'(' #continue expression ')';
1338predefined_function_call<"readNumber">	::=	'(' #continue variable_expression ')';
1339predefined_function_call<"readPythonString">	::=	'(' #continue variable_expression ')';
1340predefined_function_call<"readString">	::=	'(' #continue variable_expression ')';
1341predefined_function_call<"readUptoJustOneChar">	::=	'(' #continue expression ')';
1342predefined_function_call<"readWord">	::=	'(' #continue ')';
1343predefined_function_call<"skipBlanks">	::=	'(' #continue ')';
1344predefined_function_call<"skipSpaces">	::=	'(' #continue ')';
1345predefined_function_call<"skipEmptyCpp">	::=	'(' #continue ')';
1346predefined_function_call<"skipEmptyCppExceptDoxygen">	::=	'(' #continue ')';
1347predefined_function_call<"skipEmptyHTML">	::=	'(' #continue ')';
1348predefined_function_call<"skipEmptyLaTeX">	::=	'(' #continue ')';
1349predefined_function_call<"countOutputCols">	::=	'(' #continue ')';
1350predefined_function_call<"countOutputLines">	::=	'(' #continue ')';
1351predefined_function_call<"decrementIndentLevel">	::=	'(' #continue [ expression]? ')';
1352predefined_function_call<"equalLastWrittenChars">	::=	'(' #continue expression ')';
1353predefined_function_call<"existFloatingLocation">	::=	'(' #continue expression ',' expression ')';
1354predefined_function_call<"getFloatingLocation">	::=	'(' #continue expression ')';
1355predefined_function_call<"getLastWrittenChars">	::=	'(' #continue expression ')';
1356predefined_function_call<"getMarkupKey">	::=	'(' #continue ')';
1357predefined_function_call<"getMarkupValue">	::=	'(' #continue ')';
1358predefined_function_call<"getOutputFilename">	::=	'(' #continue ')';
1359predefined_function_call<"getOutputLocation">	::=	'(' #continue ')';
1360predefined_function_call<"getProtectedArea">	::=	'(' #continue expression ')';
1361predefined_function_call<"getProtectedAreaKeys">	::=	'(' #continue variable_expression ')';
1362predefined_function_call<"indentText">	::=	'(' #continue expression ')';
1363predefined_function_call<"newFloatingLocation">	::=	'(' #continue expression ')';
1364predefined_function_call<"remainingProtectedAreas">	::=	'(' #continue variable_expression ')';
1365predefined_function_call<"removeFloatingLocation">	::=	'(' #continue expression ')';
1366predefined_function_call<"removeProtectedArea">	::=	'(' #continue expression ')';
1367//##end##"predefined_function_call"
1368
1369predefined_method_call<T> : value	::= #check(false);
1370//##marker##"predefined_method_call"
1371//##begin##"predefined_method_call"
1372predefined_method_call<"flushOutputToSocket"> : value	::=	'(' #continue ')' => set predefined_method_call = "flushOutputToSocket"; ;
1373predefined_method_call<"acceptSocket"> : value	::=	'(' #continue ')' => set predefined_method_call = "acceptSocket"; ;
1374predefined_method_call<"add"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "add"; ;
1375predefined_method_call<"addGenerationTagsHandler"> : value	::=	'(' #continue script_file_expression<"BNF"> ',' script_file_expression<"pattern"> ')' => set predefined_method_call = "addGenerationTagsHandler"; ;
1376predefined_method_call<"addToDate"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "addToDate"; ;
1377predefined_method_call<"byteToChar"> : value	::=	'(' #continue ')' => set predefined_method_call = "byteToChar"; ;
1378predefined_method_call<"bytesToLong"> : value	::=	'(' #continue ')' => set predefined_method_call = "bytesToLong"; ;
1379predefined_method_call<"bytesToShort"> : value	::=	'(' #continue ')' => set predefined_method_call = "bytesToShort"; ;
1380predefined_method_call<"canonizePath"> : value	::=	'(' #continue ')' => set predefined_method_call = "canonizePath"; ;
1381predefined_method_call<"changeDirectory"> : value	::=	'(' #continue ')' => set predefined_method_call = "changeDirectory"; ;
1382predefined_method_call<"changeFileTime"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "changeFileTime"; ;
1383predefined_method_call<"charAt"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "charAt"; ;
1384predefined_method_call<"charToByte"> : value	::=	'(' #continue ')' => set predefined_method_call = "charToByte"; ;
1385predefined_method_call<"charToInt"> : value	::=	'(' #continue ')' => set predefined_method_call = "charToInt"; ;
1386predefined_method_call<"chmod"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "chmod"; ;
1387predefined_method_call<"ceil"> : value	::=	'(' #continue ')' => set predefined_method_call = "ceil"; ;
1388predefined_method_call<"compareDate"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "compareDate"; ;
1389predefined_method_call<"completeDate"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "completeDate"; ;
1390predefined_method_call<"completeLeftSpaces"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "completeLeftSpaces"; ;
1391predefined_method_call<"completeRightSpaces"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "completeRightSpaces"; ;
1392predefined_method_call<"composeAdaLikeString"> : value	::=	'(' #continue ')' => set predefined_method_call = "composeAdaLikeString"; ;
1393predefined_method_call<"composeCLikeString"> : value	::=	'(' #continue ')' => set predefined_method_call = "composeCLikeString"; ;
1394predefined_method_call<"composeHTMLLikeString"> : value	::=	'(' #continue ')' => set predefined_method_call = "composeHTMLLikeString"; ;
1395predefined_method_call<"composeSQLLikeString"> : value	::=	'(' #continue ')' => set predefined_method_call = "composeSQLLikeString"; ;
1396predefined_method_call<"computeMD5"> : value	::=	'(' #continue ')' => set predefined_method_call = "computeMD5"; ;
1397predefined_method_call<"copySmartFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "copySmartFile"; ;
1398predefined_method_call<"coreString"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "coreString"; ;
1399predefined_method_call<"countStringOccurences"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "countStringOccurences"; ;
1400predefined_method_call<"createDirectory"> : value	::=	'(' #continue ')' => set predefined_method_call = "createDirectory"; ;
1401predefined_method_call<"createINETClientSocket"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "createINETClientSocket"; ;
1402predefined_method_call<"createINETServerSocket"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "createINETServerSocket"; ;
1403predefined_method_call<"createIterator"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "createIterator"; ;
1404predefined_method_call<"createReverseIterator"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "createReverseIterator"; ;
1405predefined_method_call<"createVirtualFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "createVirtualFile"; ;
1406predefined_method_call<"createVirtualTemporaryFile"> : value	::=	'(' #continue ')' => set predefined_method_call = "createVirtualTemporaryFile"; ;
1407predefined_method_call<"decodeURL"> : value	::=	'(' #continue ')' => set predefined_method_call = "decodeURL"; ;
1408predefined_method_call<"decrement"> : value	::=	'(' #continue ')' => set predefined_method_call = "decrement"; ;
1409predefined_method_call<"deleteFile"> : value	::=	'(' #continue ')' => set predefined_method_call = "deleteFile"; ;
1410predefined_method_call<"deleteVirtualFile"> : value	::=	'(' #continue ')' => set predefined_method_call = "deleteVirtualFile"; ;
1411predefined_method_call<"div"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "div"; ;
1412predefined_method_call<"duplicateIterator"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "duplicateIterator"; ;
1413predefined_method_call<"encodeURL"> : value	::=	'(' #continue ')' => set predefined_method_call = "encodeURL"; ;
1414predefined_method_call<"endString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "endString"; ;
1415predefined_method_call<"equal"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "equal"; ;
1416predefined_method_call<"equalsIgnoreCase"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "equalsIgnoreCase"; ;
1417predefined_method_call<"equalTrees"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "equalTrees"; ;
1418predefined_method_call<"executeStringQuiet"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "executeStringQuiet"; ;
1419predefined_method_call<"existDirectory"> : value	::=	'(' #continue ')' => set predefined_method_call = "existDirectory"; ;
1420predefined_method_call<"existEnv"> : value	::=	'(' #continue ')' => set predefined_method_call = "existEnv"; ;
1421predefined_method_call<"existFile"> : value	::=	'(' #continue ')' => set predefined_method_call = "existFile"; ;
1422predefined_method_call<"existVirtualFile"> : value	::=	'(' #continue ')' => set predefined_method_call = "existVirtualFile"; ;
1423predefined_method_call<"existVariable"> : value	::=	'(' #continue ')' => set predefined_method_call = "existVariable"; ;
1424predefined_method_call<"exp"> : value	::=	'(' #continue ')' => set predefined_method_call = "exp"; ;
1425predefined_method_call<"exploreDirectory"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "exploreDirectory"; ;
1426predefined_method_call<"extractGenerationHeader"> : value	::=	'(' #continue variable_expression ',' variable_expression ',' variable_expression ')' => set predefined_method_call = "extractGenerationHeader"; ;
1427predefined_method_call<"fileCreation"> : value	::=	'(' #continue ')' => set predefined_method_call = "fileCreation"; ;
1428predefined_method_call<"fileLastAccess"> : value	::=	'(' #continue ')' => set predefined_method_call = "fileLastAccess"; ;
1429predefined_method_call<"fileLastModification"> : value	::=	'(' #continue ')' => set predefined_method_call = "fileLastModification"; ;
1430predefined_method_call<"fileLines"> : value	::=	'(' #continue ')' => set predefined_method_call = "fileLines"; ;
1431predefined_method_call<"fileMode"> : value	::=	'(' #continue ')' => set predefined_method_call = "fileMode"; ;
1432predefined_method_call<"fileSize"> : value	::=	'(' #continue ')' => set predefined_method_call = "fileSize"; ;
1433predefined_method_call<"findElement"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "findElement"; ;
1434predefined_method_call<"findFirstChar"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "findFirstChar"; ;
1435predefined_method_call<"findFirstSubstringIntoKeys"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "findFirstSubstringIntoKeys"; ;
1436predefined_method_call<"findLastString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "findLastString"; ;
1437predefined_method_call<"findNextString"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "findNextString"; ;
1438predefined_method_call<"findNextSubstringIntoKeys"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "findNextSubstringIntoKeys"; ;
1439predefined_method_call<"findString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "findString"; ;
1440predefined_method_call<"first"> : value	::=	'(' #continue ')' => set predefined_method_call = "first"; ;
1441predefined_method_call<"floor"> : value	::=	'(' #continue ')' => set predefined_method_call = "floor"; ;
1442predefined_method_call<"formatDate"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "formatDate"; ;
1443predefined_method_call<"size"> : value	::=	'(' #continue ')' => set predefined_method_call = "getArraySize"; ;
1444predefined_method_call<"getArraySize"> : value	::=	'(' #continue ')' => set predefined_method_call = "getArraySize"; ;
1445predefined_method_call<"getEnv"> : value	::=	'(' #continue ')' => set predefined_method_call = "getEnv"; ;
1446predefined_method_call<"getHTTPRequest"> : value	::=	'(' #continue variable_expression ',' variable_expression ')' => set predefined_method_call = "getHTTPRequest"; ;
1447predefined_method_call<"getProperty"> : value	::=	'(' #continue ')' => set predefined_method_call = "getProperty"; ;
1448predefined_method_call<"getShortFilename"> : value	::=	'(' #continue ')' => set predefined_method_call = "getShortFilename"; ;
1449predefined_method_call<"getVariableAttributes"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "getVariableAttributes"; ;
1450predefined_method_call<"hexaToDecimal"> : value	::=	'(' #continue ')' => set predefined_method_call = "hexaToDecimal"; ;
1451predefined_method_call<"hostToNetworkLong"> : value	::=	'(' #continue ')' => set predefined_method_call = "hostToNetworkLong"; ;
1452predefined_method_call<"hostToNetworkShort"> : value	::=	'(' #continue ')' => set predefined_method_call = "hostToNetworkShort"; ;
1453predefined_method_call<"increment"> : value	::=	'(' #continue ')' => set predefined_method_call = "increment"; ;
1454predefined_method_call<"indentFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "indentFile"; ;
1455predefined_method_call<"index"> : value	::=	'(' #continue ')' => set predefined_method_call = "index"; ;
1456predefined_method_call<"inf"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "inf"; ;
1457predefined_method_call<"inputKey"> : value	::=	'(' #continue ')' => set predefined_method_call = "inputKey"; ;
1458predefined_method_call<"inputLine"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "inputLine"; ;
1459predefined_method_call<"empty"> : value	::=	'(' #continue ')' => set predefined_method_call = "isEmpty"; ;
1460predefined_method_call<"isEmpty"> : value	::=	'(' #continue ')' => set predefined_method_call = "isEmpty"; ;
1461predefined_method_call<"isIdentifier"> : value	::=	'(' #continue ')' => set predefined_method_call = "isIdentifier"; ;
1462predefined_method_call<"isNegative"> : value	::=	'(' #continue ')' => set predefined_method_call = "isNegative"; ;
1463predefined_method_call<"isNumeric"> : value	::=	'(' #continue ')' => set predefined_method_call = "isNumeric"; ;
1464predefined_method_call<"isPositive"> : value	::=	'(' #continue ')' => set predefined_method_call = "isPositive"; ;
1465predefined_method_call<"joinStrings"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "joinStrings"; ;
1466predefined_method_call<"key"> : value	::=	'(' #continue ')' => set predefined_method_call = "key"; ;
1467predefined_method_call<"last"> : value	::=	'(' #continue ')' => set predefined_method_call = "last"; ;
1468predefined_method_call<"leftString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "leftString"; ;
1469predefined_method_call<"length"> : value	::=	'(' #continue ')' => set predefined_method_call = "lengthString"; ;
1470predefined_method_call<"lengthString"> : value	::=	'(' #continue ')' => set predefined_method_call = "lengthString"; ;
1471predefined_method_call<"loadBinaryFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "loadBinaryFile"; ;
1472predefined_method_call<"loadFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "loadFile"; ;
1473predefined_method_call<"loadVirtualFile"> : value	::=	'(' #continue ')' => set predefined_method_call = "loadVirtualFile"; ;
1474predefined_method_call<"log"> : value	::=	'(' #continue ')' => set predefined_method_call = "log"; ;
1475predefined_method_call<"longToBytes"> : value	::=	'(' #continue ')' => set predefined_method_call = "longToBytes"; ;
1476predefined_method_call<"midString"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "midString"; ;
1477predefined_method_call<"mod"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "mod"; ;
1478predefined_method_call<"mult"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "mult"; ;
1479predefined_method_call<"networkLongToHost"> : value	::=	'(' #continue ')' => set predefined_method_call = "networkLongToHost"; ;
1480predefined_method_call<"networkShortToHost"> : value	::=	'(' #continue ')' => set predefined_method_call = "networkShortToHost"; ;
1481predefined_method_call<"next"> : value	::=	'(' #continue ')' => set predefined_method_call = "next"; ;
1482predefined_method_call<"not"> : value	::=	'(' #continue ')' => set predefined_method_call = "not"; ;
1483predefined_method_call<"octalToDecimal"> : value	::=	'(' #continue ')' => set predefined_method_call = "octalToDecimal"; ;
1484predefined_method_call<"parseFreeQuiet"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "parseFreeQuiet"; ;
1485predefined_method_call<"pathFromPackage"> : value	::=	'(' #continue ')' => set predefined_method_call = "pathFromPackage"; ;
1486predefined_method_call<"postHTTPRequest"> : value	::=	'(' #continue variable_expression ',' variable_expression ')' => set predefined_method_call = "postHTTPRequest"; ;
1487predefined_method_call<"pow"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "pow"; ;
1488predefined_method_call<"prec"> : value	::=	'(' #continue ')' => set predefined_method_call = "prec"; ;
1489predefined_method_call<"receiveBinaryFromSocket"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "receiveBinaryFromSocket"; ;
1490predefined_method_call<"receiveFromSocket"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "receiveFromSocket"; ;
1491predefined_method_call<"receiveTextFromSocket"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "receiveTextFromSocket"; ;
1492predefined_method_call<"relativePath"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "relativePath"; ;
1493predefined_method_call<"removeDirectory"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeDirectory"; ;
1494predefined_method_call<"removeGenerationTagsHandler"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeGenerationTagsHandler"; ;
1495predefined_method_call<"repeatString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "repeatString"; ;
1496predefined_method_call<"replaceString"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "replaceString"; ;
1497predefined_method_call<"replaceTabulations"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "replaceTabulations"; ;
1498predefined_method_call<"resolveFilePath"> : value	::=	'(' #continue ')' => set predefined_method_call = "resolveFilePath"; ;
1499predefined_method_call<"rightString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "rightString"; ;
1500predefined_method_call<"rsubString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "rsubString"; ;
1501predefined_method_call<"scanDirectories"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "scanDirectories"; ;
1502predefined_method_call<"scanFiles"> : value	::=	'(' #continue expression ',' expression ',' expression ')' => set predefined_method_call = "scanFiles"; ;
1503predefined_method_call<"sendBinaryToSocket"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "sendBinaryToSocket"; ;
1504predefined_method_call<"sendHTTPRequest"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "sendHTTPRequest"; ;
1505predefined_method_call<"sendTextToSocket"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "sendTextToSocket"; ;
1506predefined_method_call<"selectGenerationTagsHandler"> : value	::=	'(' #continue ')' => set predefined_method_call = "selectGenerationTagsHandler"; ;
1507predefined_method_call<"shortToBytes"> : value	::=	'(' #continue ')' => set predefined_method_call = "shortToBytes"; ;
1508predefined_method_call<"sqrt"> : value	::=	'(' #continue ')' => set predefined_method_call = "sqrt"; ;
1509predefined_method_call<"startString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "startString"; ;
1510predefined_method_call<"sub"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "sub"; ;
1511predefined_method_call<"subString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "subString"; ;
1512predefined_method_call<"sup"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "sup"; ;
1513predefined_method_call<"system"> : value	::=	'(' #continue ')' => set predefined_method_call = "system"; ;
1514predefined_method_call<"toLowerString"> : value	::=	'(' #continue ')' => set predefined_method_call = "toLowerString"; ;
1515predefined_method_call<"toUpperString"> : value	::=	'(' #continue ')' => set predefined_method_call = "toUpperString"; ;
1516predefined_method_call<"translateString"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "translateString"; ;
1517predefined_method_call<"trimLeft"> : value	::=	'(' #continue ')' => set predefined_method_call = "trimLeft"; ;
1518predefined_method_call<"trimRight"> : value	::=	'(' #continue ')' => set predefined_method_call = "trimRight"; ;
1519predefined_method_call<"trim"> : value	::=	'(' #continue ')' => set predefined_method_call = "trim"; ;
1520predefined_method_call<"truncateAfterString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "truncateAfterString"; ;
1521predefined_method_call<"truncateBeforeString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "truncateBeforeString"; ;
1522predefined_method_call<"getLastReadChars"> : value	::=	'(' #continue ')' => set predefined_method_call = "getLastReadChars"; ;
1523predefined_method_call<"lookAhead"> : value	::=	'(' #continue ')' => set predefined_method_call = "lookAhead"; ;
1524predefined_method_call<"readAdaString"> : value	::=	'(' #continue ')' => set predefined_method_call = "readAdaString"; ;
1525predefined_method_call<"readBytes"> : value	::=	'(' #continue ')' => set predefined_method_call = "readBytes"; ;
1526predefined_method_call<"readChars"> : value	::=	'(' #continue ')' => set predefined_method_call = "readChars"; ;
1527predefined_method_call<"readIfEqualTo"> : value	::=	'(' #continue ')' => set predefined_method_call = "readIfEqualTo"; ;
1528predefined_method_call<"readIfEqualToIgnoreCase"> : value	::=	'(' #continue ')' => set predefined_method_call = "readIfEqualToIgnoreCase"; ;
1529predefined_method_call<"readIfEqualToIdentifier"> : value	::=	'(' #continue ')' => set predefined_method_call = "readIfEqualToIdentifier"; ;
1530predefined_method_call<"readLine"> : value	::=	'(' #continue ')' => set predefined_method_call = "readLine"; ;
1531predefined_method_call<"readNextText"> : value	::=	'(' #continue ')' => set predefined_method_call = "readNextText"; ;
1532predefined_method_call<"readNumber"> : value	::=	'(' #continue ')' => set predefined_method_call = "readNumber"; ;
1533predefined_method_call<"readPythonString"> : value	::=	'(' #continue ')' => set predefined_method_call = "readPythonString"; ;
1534predefined_method_call<"readString"> : value	::=	'(' #continue ')' => set predefined_method_call = "readString"; ;
1535predefined_method_call<"readUptoJustOneChar"> : value	::=	'(' #continue ')' => set predefined_method_call = "readUptoJustOneChar"; ;
1536predefined_method_call<"decrementIndentLevel"> : value	::=	'(' #continue ')' => set predefined_method_call = "decrementIndentLevel"; ;
1537predefined_method_call<"equalLastWrittenChars"> : value	::=	'(' #continue ')' => set predefined_method_call = "equalLastWrittenChars"; ;
1538predefined_method_call<"existFloatingLocation"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "existFloatingLocation"; ;
1539predefined_method_call<"getFloatingLocation"> : value	::=	'(' #continue ')' => set predefined_method_call = "getFloatingLocation"; ;
1540predefined_method_call<"getLastWrittenChars"> : value	::=	'(' #continue ')' => set predefined_method_call = "getLastWrittenChars"; ;
1541predefined_method_call<"getProtectedArea"> : value	::=	'(' #continue ')' => set predefined_method_call = "getProtectedArea"; ;
1542predefined_method_call<"getProtectedAreaKeys"> : value	::=	'(' #continue ')' => set predefined_method_call = "getProtectedAreaKeys"; ;
1543predefined_method_call<"indentText"> : value	::=	'(' #continue ')' => set predefined_method_call = "indentText"; ;
1544predefined_method_call<"newFloatingLocation"> : value	::=	'(' #continue ')' => set predefined_method_call = "newFloatingLocation"; ;
1545predefined_method_call<"remainingProtectedAreas"> : value	::=	'(' #continue ')' => set predefined_method_call = "remainingProtectedAreas"; ;
1546predefined_method_call<"removeFloatingLocation"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeFloatingLocation"; ;
1547predefined_method_call<"removeProtectedArea"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeProtectedArea"; ;
1548predefined_method_call<"appendFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "appendFile"; ;
1549predefined_method_call<"autoexpand"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "autoexpand"; ;
1550predefined_method_call<"clearVariable"> : value	::=	'(' #continue ')' => set predefined_method_call = "clearVariable"; ;
1551predefined_method_call<"compileToCpp"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "compileToCpp"; ;
1552predefined_method_call<"copyFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "copyFile"; ;
1553predefined_method_call<"copyGenerableFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "copyGenerableFile"; ;
1554predefined_method_call<"copySmartDirectory"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "copySmartDirectory"; ;
1555predefined_method_call<"cutString"> : value	::=	'(' #continue expression ',' variable_expression ')' => set predefined_method_call = "cutString"; ;
1556predefined_method_call<"environTable"> : value	::=	'(' #continue ')' => set predefined_method_call = "environTable"; ;
1557predefined_method_call<"error"> : value	::=	'(' #continue ')' => set predefined_method_call = "error"; ;
1558predefined_method_call<"executeString"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "executeString"; ;
1559predefined_method_call<"expand"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "expand"; ;
1560predefined_method_call<"extendExecutedScript"> : value	::=	'(' #continue ')' => set predefined_method_call = "extendExecutedScript"; ;
1561predefined_method_call<"generate"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "generate"; ;
1562predefined_method_call<"generateString"> : value	::=	'(' #continue variable_expression ',' variable_expression ')' => set predefined_method_call = "generateString"; ;
1563predefined_method_call<"insertElementAt"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "insertElementAt"; ;
1564predefined_method_call<"invertArray"> : value	::=	'(' #continue ')' => set predefined_method_call = "invertArray"; ;
1565predefined_method_call<"listAllGeneratedFiles"> : value	::=	'(' #continue ')' => set predefined_method_call = "listAllGeneratedFiles"; ;
1566predefined_method_call<"loadProject"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "loadProject"; ;
1567predefined_method_call<"openLogFile"> : value	::=	'(' #continue ')' => set predefined_method_call = "openLogFile"; ;
1568predefined_method_call<"parseAsBNF"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "parseAsBNF"; ;
1569predefined_method_call<"parseStringAsBNF"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "parseStringAsBNF"; ;
1570predefined_method_call<"parseFree"> : value	::=	'(' #continue variable_expression ',' expression ')' => set predefined_method_call = "parseFree"; ;
1571predefined_method_call<"produceHTML"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "produceHTML"; ;
1572predefined_method_call<"putEnv"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "putEnv"; ;
1573predefined_method_call<"randomSeed"> : value	::=	'(' #continue ')' => set predefined_method_call = "randomSeed"; ;
1574predefined_method_call<"removeAllElements"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeAllElements"; ;
1575predefined_method_call<"removeElement"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "removeElement"; ;
1576predefined_method_call<"removeFirstElement"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeFirstElement"; ;
1577predefined_method_call<"removeLastElement"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeLastElement"; ;
1578predefined_method_call<"removeRecursive"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "removeRecursive"; ;
1579predefined_method_call<"removeVariable"> : value	::=	'(' #continue ')' => set predefined_method_call = "removeVariable"; ;
1580predefined_method_call<"saveBinaryToFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "saveBinaryToFile"; ;
1581predefined_method_call<"saveProject"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "saveProject"; ;
1582predefined_method_call<"saveProjectTypes"> : value	::=	'(' #continue ')' => set predefined_method_call = "saveProjectTypes"; ;
1583predefined_method_call<"saveToFile"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "saveToFile"; ;
1584predefined_method_call<"setCommentBegin"> : value	::=	'(' #continue ')' => set predefined_method_call = "setCommentBegin"; ;
1585predefined_method_call<"setCommentEnd"> : value	::=	'(' #continue ')' => set predefined_method_call = "setCommentEnd"; ;
1586predefined_method_call<"setGenerationHeader"> : value	::=	'(' #continue ')' => set predefined_method_call = "setGenerationHeader"; ;
1587predefined_method_call<"setIncludePath"> : value	::=	'(' #continue ')' => set predefined_method_call = "setIncludePath"; ;
1588predefined_method_call<"setNow"> : value	::=	'(' #continue ')' => set predefined_method_call = "setNow"; ;
1589predefined_method_call<"setProperty"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "setProperty"; ;
1590predefined_method_call<"setTextMode"> : value	::=	'(' #continue ')' => set predefined_method_call = "setTextMode"; ;
1591predefined_method_call<"setVersion"> : value	::=	'(' #continue ')' => set predefined_method_call = "setVersion"; ;
1592predefined_method_call<"setWriteMode"> : value	::=	'(' #continue ')' => set predefined_method_call = "setWriteMode"; ;
1593predefined_method_call<"setWorkingPath"> : value	::=	'(' #continue ')' => set predefined_method_call = "setWorkingPath"; ;
1594predefined_method_call<"sleep"> : value	::=	'(' #continue ')' => set predefined_method_call = "sleep"; ;
1595predefined_method_call<"slideNodeContent"> : value	::=	'(' #continue variable_expression ')' => set predefined_method_call = "slideNodeContent"; ;
1596predefined_method_call<"sortArray"> : value	::=	'(' #continue ')' => set predefined_method_call = "sortArray"; ;
1597predefined_method_call<"traceLine"> : value	::=	'(' #continue ')' => set predefined_method_call = "traceLine"; ;
1598predefined_method_call<"traceObject"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "traceObject"; ;
1599predefined_method_call<"traceText"> : value	::=	'(' #continue ')' => set predefined_method_call = "traceText"; ;
1600predefined_method_call<"translate"> : value	::=	'(' #continue variable_expression ',' expression ',' expression ')' => set predefined_method_call = "translate"; ;
1601predefined_method_call<"attachInputToSocket"> : value	::=	'(' #continue ')' => set predefined_method_call = "attachInputToSocket"; ;
1602predefined_method_call<"detachInputFromSocket"> : value	::=	'(' #continue ')' => set predefined_method_call = "detachInputFromSocket"; ;
1603predefined_method_call<"setInputLocation"> : value	::=	'(' #continue ')' => set predefined_method_call = "setInputLocation"; ;
1604predefined_method_call<"allFloatingLocations"> : value	::=	'(' #continue ')' => set predefined_method_call = "allFloatingLocations"; ;
1605predefined_method_call<"attachOutputToSocket"> : value	::=	'(' #continue ')' => set predefined_method_call = "attachOutputToSocket"; ;
1606predefined_method_call<"detachOutputFromSocket"> : value	::=	'(' #continue ')' => set predefined_method_call = "detachOutputFromSocket"; ;
1607predefined_method_call<"incrementIndentLevel"> : value	::=	'(' #continue ')' => set predefined_method_call = "incrementIndentLevel"; ;
1608predefined_method_call<"insertText"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "insertText"; ;
1609predefined_method_call<"insertTextOnce"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "insertTextOnce"; ;
1610predefined_method_call<"insertTextToFloatingLocation"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "insertTextToFloatingLocation"; ;
1611predefined_method_call<"insertTextOnceToFloatingLocation"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "insertTextOnceToFloatingLocation"; ;
1612predefined_method_call<"overwritePortion"> : value	::=	'(' #continue expression ',' expression ')' => set predefined_method_call = "overwritePortion"; ;
1613predefined_method_call<"populateProtectedArea"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "populateProtectedArea"; ;
1614predefined_method_call<"resizeOutputStream"> : value	::=	'(' #continue ')' => set predefined_method_call = "resizeOutputStream"; ;
1615predefined_method_call<"setFloatingLocation"> : value	::=	'(' #continue expression ')' => set predefined_method_call = "setFloatingLocation"; ;
1616predefined_method_call<"setOutputLocation"> : value	::=	'(' #continue ')' => set predefined_method_call = "setOutputLocation"; ;
1617predefined_method_call<"setProtectedArea"> : value	::=	'(' #continue ')' => set predefined_method_call = "setProtectedArea"; ;
1618predefined_method_call<"writeBytes"> : value	::=	'(' #continue ')' => set predefined_method_call = "writeBytes"; ;
1619predefined_method_call<"writeText"> : value	::=	'(' #continue ')' => set predefined_method_call = "writeText"; ;
1620predefined_method_call<"writeTextOnce"> : value	::=	'(' #continue ')' => set predefined_method_call = "writeTextOnce"; ;
1621predefined_method_call<"closeSocket"> : value	::=	'(' #continue ')' => set predefined_method_call = "closeSocket"; ;
1622//##end##"predefined_method_call"
1623
1624predefined_procedure_call<T>	::= #check(false);
1625//##marker##"predefined_procedure_call"
1626//##begin##"predefined_procedure_call"
1627predefined_procedure_call<"appendFile">	::=	'(' #continue expression ',' expression ')';
1628predefined_procedure_call<"autoexpand">	::=	'(' #continue expression ',' variable_expression ')';
1629predefined_procedure_call<"clearVariable">	::=	'(' #continue variable_expression ')';
1630predefined_procedure_call<"compileToCpp">	::=	'(' #continue expression ',' expression ',' expression ')';
1631predefined_procedure_call<"copyFile">	::=	'(' #continue expression ',' expression ')';
1632predefined_procedure_call<"copyGenerableFile">	::=	'(' #continue expression ',' expression ')';
1633predefined_procedure_call<"copySmartDirectory">	::=	'(' #continue expression ',' expression ')';
1634predefined_procedure_call<"cutString">	::=	'(' #continue expression ',' expression ',' variable_expression ')';
1635predefined_procedure_call<"environTable">	::=	'(' #continue variable_expression ')';
1636predefined_procedure_call<"error">	::=	'(' #continue expression ')';
1637predefined_procedure_call<"executeString">	::=	'(' #continue variable_expression ',' expression ')';
1638predefined_procedure_call<"expand">	::=	'(' #continue script_file_expression<"pattern"> ',' variable_expression ',' expression ')';
1639predefined_procedure_call<"extendExecutedScript">	::=	'(' #continue expression ')';
1640predefined_procedure_call<"generate">	::=	'(' #continue script_file_expression<"pattern"> ',' variable_expression ',' expression ')';
1641predefined_procedure_call<"generateString">	::=	'(' #continue script_file_expression<"pattern"> ',' variable_expression ',' variable_expression ')';
1642predefined_procedure_call<"insertElementAt">	::=	'(' #continue variable_expression ',' expression ',' expression ')';
1643predefined_procedure_call<"invertArray">	::=	'(' #continue variable_expression ')';
1644predefined_procedure_call<"listAllGeneratedFiles">	::=	'(' #continue variable_expression ')';
1645predefined_procedure_call<"loadProject">	::=	'(' #continue expression [',' variable_expression]? ')';
1646predefined_procedure_call<"openLogFile">	::=	'(' #continue expression ')';
1647predefined_procedure_call<"parseAsBNF">	::=	'(' #continue script_file_expression<"BNF"> ',' variable_expression ',' expression ')';
1648predefined_procedure_call<"parseStringAsBNF">	::=	'(' #continue script_file_expression<"BNF"> ',' variable_expression ',' expression ')';
1649predefined_procedure_call<"parseFree">	::=	'(' #continue script_file_expression<"free"> ',' variable_expression ',' expression ')';
1650predefined_procedure_call<"produceHTML">	::=	'(' #continue expression ',' expression ')';
1651predefined_procedure_call<"putEnv">	::=	'(' #continue expression ',' expression ')';
1652predefined_procedure_call<"randomSeed">	::=	'(' #continue expression ')';
1653predefined_procedure_call<"removeAllElements">	::=	'(' #continue variable_expression ')';
1654predefined_procedure_call<"removeElement">	::=	'(' #continue variable_expression ',' expression ')';
1655predefined_procedure_call<"removeFirstElement">	::=	'(' #continue variable_expression ')';
1656predefined_procedure_call<"removeLastElement">	::=	'(' #continue variable_expression ')';
1657predefined_procedure_call<"removeRecursive">	::=	'(' #continue variable_expression ',' expression ')';
1658predefined_procedure_call<"removeVariable">	::=	'(' #continue variable_expression ')';
1659predefined_procedure_call<"saveBinaryToFile">	::=	'(' #continue expression ',' expression ')';
1660predefined_procedure_call<"saveProject">	::=	'(' #continue expression [',' variable_expression]? ')';
1661predefined_procedure_call<"saveProjectTypes">	::=	'(' #continue expression ')';
1662predefined_procedure_call<"saveToFile">	::=	'(' #continue expression ',' expression ')';
1663predefined_procedure_call<"setCommentBegin">	::=	'(' #continue expression ')';
1664predefined_procedure_call<"setCommentEnd">	::=	'(' #continue expression ')';
1665predefined_procedure_call<"setGenerationHeader">	::=	'(' #continue expression ')';
1666predefined_procedure_call<"setIncludePath">	::=	'(' #continue expression ')';
1667predefined_procedure_call<"setNow">	::=	'(' #continue expression ')';
1668predefined_procedure_call<"setProperty">	::=	'(' #continue expression ',' expression ')';
1669predefined_procedure_call<"setTextMode">	::=	'(' #continue expression ')';
1670predefined_procedure_call<"setVersion">	::=	'(' #continue expression ')';
1671predefined_procedure_call<"setWriteMode">	::=	'(' #continue expression ')';
1672predefined_procedure_call<"setWorkingPath">	::=	'(' #continue expression ')';
1673predefined_procedure_call<"sleep">	::=	'(' #continue expression ')';
1674predefined_procedure_call<"slideNodeContent">	::=	'(' #continue variable_expression ',' variable_expression ')';
1675predefined_procedure_call<"sortArray">	::=	'(' #continue variable_expression ')';
1676predefined_procedure_call<"traceEngine">	::=	'(' #continue ')';
1677predefined_procedure_call<"traceLine">	::=	'(' #continue expression ')';
1678predefined_procedure_call<"traceObject">	::=	'(' #continue variable_expression [',' expression]? ')';
1679predefined_procedure_call<"traceStack">	::=	'(' #continue ')';
1680predefined_procedure_call<"traceText">	::=	'(' #continue expression ')';
1681predefined_procedure_call<"translate">	::=	'(' #continue script_file_expression<"translate"> ',' variable_expression ',' expression ',' expression ')';
1682predefined_procedure_call<"attachInputToSocket">	::=	'(' #continue expression ')';
1683predefined_procedure_call<"detachInputFromSocket">	::=	'(' #continue expression ')';
1684predefined_procedure_call<"goBack">	::=	'(' #continue ')';
1685predefined_procedure_call<"setInputLocation">	::=	'(' #continue expression ')';
1686predefined_procedure_call<"allFloatingLocations">	::=	'(' #continue variable_expression ')';
1687predefined_procedure_call<"attachOutputToSocket">	::=	'(' #continue expression ')';
1688predefined_procedure_call<"detachOutputFromSocket">	::=	'(' #continue expression ')';
1689predefined_procedure_call<"incrementIndentLevel">	::=	'(' #continue [ expression]? ')';
1690predefined_procedure_call<"insertText">	::=	'(' #continue expression ',' expression ')';
1691predefined_procedure_call<"insertTextOnce">	::=	'(' #continue expression ',' expression ')';
1692predefined_procedure_call<"insertTextToFloatingLocation">	::=	'(' #continue expression ',' expression ')';
1693predefined_procedure_call<"insertTextOnceToFloatingLocation">	::=	'(' #continue expression ',' expression ')';
1694predefined_procedure_call<"overwritePortion">	::=	'(' #continue expression ',' expression ',' expression ')';
1695predefined_procedure_call<"populateProtectedArea">	::=	'(' #continue expression ',' expression ')';
1696predefined_procedure_call<"resizeOutputStream">	::=	'(' #continue expression ')';
1697predefined_procedure_call<"setFloatingLocation">	::=	'(' #continue expression ',' expression ')';
1698predefined_procedure_call<"setOutputLocation">	::=	'(' #continue expression ')';
1699predefined_procedure_call<"setProtectedArea">	::=	'(' #continue expression ')';
1700predefined_procedure_call<"writeBytes">	::=	'(' #continue expression ')';
1701predefined_procedure_call<"writeText">	::=	'(' #continue expression ')';
1702predefined_procedure_call<"writeTextOnce">	::=	'(' #continue expression ')';
1703predefined_procedure_call<"closeSocket">	::=	'(' #continue expression ')';
1704//##end##"predefined_procedure_call"
1705