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