CVersionInfo Dr. Detlef Meyer-EltzPParsergenerator and Interpreter1.7.3.0 Tetra.exe+Copyright 2002 - 09 Dr. Detlef Meyer-Eltz Tetra.exeTextTransformernormal BIN_NUMBERCToken@M BIN_NUMBER%[01]+,{{ xn.add( "LITERAL", xState.str() ); }} node& xnCOMMENT_DELPHICTokenHMCOMMENT_DELPHI(//[^\r\n]*)\r?\n{{ //IgLit(xn, "LITERAL"); node n("IgLit"); xn.addChildLast(n); n.add("IGNORED", xState.str(-1)); n.add("COMMENT_DELPHI", xState.str(1)); // !! without line break }} node& xn CTRL_CHARCTokenk CTRL_CHARtb0187.pp: c:=^.; { this compile in tp7, c should contain 'n'/#110 } The care (^) character toggles the sixth bit ($40) of the character's value, which changes an upper case letter to its control character equivalent. If the character is lowercase, the caret clears the fifth and sixth bits ($60). This means you can apply the caret to nonalphabetic characters. For example ^2 is the same as 'r' because '2' has the ordinal value $32, and toggling the $40 bit makes it $72, which is the ordinal value for 'r'. (From Delphi in a nutshell). CTRL_CHAR1CToken|,N CTRL_CHAR1P#(\d+|{HEX_NUMBER}) \ |\^[@a-zA-Z] \ "" \ single quote,{{ xn.add( "LITERAL", xState.str() ); }} node& xn CTRL_CHAR2CTokenTT CTRL_CHAR2tb0187.pp: c:=^.; { this compile in tp7, c should contain 'n'/#110 } The care (^) character toggles the sixth bit ($40) of the character's value, which changes an upper case letter to its control character equivalent. If the character is lowercase, the caret clears the fifth and sixth bits ($60). This means you can apply the caret to nonalphabetic characters. For example ^2 is the same as 'r' because '2' has the ordinal value $32, and toggling the $40 bit makes it $72, which is the ordinal value for 'r'. (From Delphi in a nutshell)\^.,{{ xn.add( "LITERAL", xState.str() ); }} node& xnDIGITSCToken0UDIGITS\d+,{{ xn.add( "LITERAL", xState.str() ); }} node& xn HEX_NUMBERCTokenf HEX_NUMBER~Eine Pascal Hexadezimal-Zahl als ein Dollarzeichen gefolgt von bis zu acht Ziffern oder Buchstaben aus dem Bereich 'A' bis 'F'\$[[:xdigit:]]+,{{ xn.add( "LITERAL", xState.str() ); }} node& xnIDCTokenlgID[a-zA-Z_][\da-zA-Z_]*,{{ xn.add( "LITERAL", xState.str() ); }} node& xn IGNORABLECTokenHh IGNORABLE( \ \s \// spaces |//[^\n]*\n \// Zeilenkommentare |\{[^}]*\} \// {...}-comment |\(\*[^*]*\*+([^)*][^*]*\*+)*\) \// (*...*)-comment )+ node& xnNUMBERCTokenL5NNUMBER#(\d+|{HEX_NUMBER}),{{ xn.add( "LITERAL", xState.str() ); }} node& xn OCT_NUMBERCToken(6N OCT_NUMBER&[0-7]+,{{ xn.add( "LITERAL", xState.str() ); }} node& xn SCALE_FACTORCToken7N SCALE_FACTOR [Ee][+-]?\d+,{{ xn.add( "LITERAL", xState.str() ); }} node& xnSTRINGCToken7NSTRING'([^\r\n']|'')*',{{ xn.add( "LITERAL", xState.str() ); }} node& xnUNSIGNED_INTEGER0CToken8NUNSIGNED_INTEGER0C\d+ \ |{HEX_NUMBER} \ |{OCT_NUMBER} \ |{BIN_NUMBER},{{ xn.add( "LITERAL", xState.str() ); }} node& xnUNSIGNED_REAL0CToken9NUNSIGNED_REAL0O\d+( \ \.\d+([Ee][+-]?\d+)? \ |[Ee][+-]?\d+ \ ),{{ xn.add( "LITERAL", xState.str() ); }} node& xnadd_opCProduction_LINKt:Nadd_op{{ node n("add_op"); xn.addChildLast(n); }} ( "-" | "or" | "+" | "xor" ) {{ n.add( "operator", xState.str() ); }} node& xnaddress_expressionCProduction_LINK no deindentation node& xnparameter_declarationCProduction_LINKXsparameter_declaration{{ node n("parameter_declaration"); xn.addChildLast(n); }} ( value_parameter[n] | variable_parameter[n] | constant_parameter[n] | out_parameter[n] | in_parameter[n] )?node& xn% IGNORABLEparameter_declaration_listCProduction_LINKuparameter_declaration_list{{ node n("parameter_declaration_list"); xn.addChildLast(n); }} "(" {{n.add( "(", xState.str() ); }} parameter_declaration[n] ( ";" {{n.add( ";", xState.str()); }} parameter_declaration[n] )* ")" {{n.add( ")", xState.str() ); }} node& xn% IGNORABLE pointer_typeCProduction_LINKw pointer_type{{ node n("pointer_type"); xn.addChildLast(n); }} ( "^" {{n.add( "^", xState.str() ); }} type_id[n] | "pointer" {{n.add( "LITERAL", xState.str() ); }} ) node& xnprimitive_typeCProduction_LINK`yprimitive_types{{ node n("primitive_type"); xn.addChildLast(n); }} ( "boolean" | "bytebool" | "wordbool" | "longbool" | "integer" | "cardinal" | "shortint" | "smallint" | "longint" | "int64" | "byte" | "word" | "longword" | "char" | "widechar" | "ansichar" | "pchar" ) {{ n.add( "LITERAL", xState.str() ); }} node& xnprocedural_typeCProduction_LINK|procedural_type{{ node n("procedural_type"); xn.addChildLast(n); }} ( "procedure" {{n.add( "procedure", xState.str() ); }} parameter_declaration_list[n]? | "function" {{n.add( "function", xState.str() ); }} parameter_declaration_list[n]? ":" {{n.add( ":", xState.str() ); }} result_type[n] ) ( "of" {{n.add( "of", xState.str() ); }} "object" {{n.add( "LITERAL", xState.str() ); }} )? ( ";" {{n.add( ";", xState.str() ); }} | call_modifier[n] )* node& xnprocedure_declarationCProduction_LINK,procedure_declaration{{ node n("procedure_declaration"); xn.addChildLast(n); }} procedure_header[n] code_procedure_directives[n] subroutine_block[n] node& xn% IGNORABLEprocedure_headerCProduction_LINKdprocedure_header{{ node n("procedure_header"); xn.addChildLast(n); }} "procedure" {{n.add( "procedure", xState.str() ); }} qual_id[n] parameter_declaration_list[n]? node& xnprocedure_headers_partCProduction_LINK̈procedure_headers_part,{{ node n("procedure_headers_part"); xn.addChildLast(n); }} ( procedure_header[n] | function_header_with_result[n] ) method_suffixes[n]* ( external_directive[n] ( ";" {{n.add( ";", xState.str() ); }} )? //( code_procedure_directives ";")* )? {{BottomLastSc(n); }} node& xn program_fileCProduction_LINKT program_file{{ node n("program_file"); xn.addChildLast(n); }} program_heading[n]? uses_clause[n]? declaration_part[n]* init_section[n]node& xnprogram_headingCProduction_LINKprogram_heading{{ node n("program_heading"); xn.addChildLast(n); }} "program" {{n.add( "program", xState.str() ); }} ID[n] ( "(" {{n.add( "(", xState.str() ); }} qual_id_list[n] ")" {{n.add( ")", xState.str() ); }} )? ";" {{n.add( "last_sc", xState.str() ); }} node& xnproperty_definitionCProduction_LINKԔproperty_definition{{ node n("property_definition"); xn.addChildLast(n); }} "property" {{n.add( "property", xState.str() ); }} ID[n] property_interface[n] property_specifiers[n] {{BottomLastSc(n); }} node& xnproperty_interfaceCProduction_LINKproperty_interface{{ node n("property_interface"); xn.addChildLast(n); }} ( "[" {{n.add( "[", xState.str() ); }} parameter_declaration[n] ( ";" {{n.add( ";", xState.str() ); }} parameter_declaration[n] )* "]" {{n.add( "]", xState.str() ); }} )? ( ":" {{n.add( ":", xState.str() ); }} type_id[n] )? ( "index" {{n.add( "LITERAL", xState.str() ); }} integer_expression[n] )? node& xnproperty_specifiersCProduction_LINKproperty_specifiers{{ node n("property_specifiers"); xn.addChildLast(n); }} ( "read" {{n.add( "LITERAL", xState.str() ); }} field_or_method[n] )? ( "write" {{n.add( "LITERAL", xState.str() ); }} field_or_method[n] | "implements" {{n.add( "LITERAL", xState.str() ); }} qual_id_list[n] )? ( "stored" {{n.add( "LITERAL", xState.str() ); }} const_expr[n] )? ( "default" {{n.add( "LITERAL", xState.str() ); }} const_expr[n] | "nodefault" {{n.add( "LITERAL", xState.str() ); }} )? ( "readonly" {{n.add( "LITERAL", xState.str() ); }} )? ( "writeonly" {{n.add( "LITERAL", xState.str() ); }} )? ( "dispid" {{n.add( "LITERAL", xState.str() ); }} integer_expression[n] )? ( ";" {{n.add( ";", ";" ); }} ( "default" {{n.add( "LITERAL", xState.str() ); }} ";" {{n.add( ";", ";" ); }} )? )? node& xnqual_idCProduction_LINKqual_idg{{ node n("qual_id"); xn.addChildLast(n); }} ID[n] ("." {{n.add( ".", xState.str() ); }} ID[n])* node& xn qual_id_listCProduction_LINKȦ qual_id_listv{{ node n("qual_id_list"); xn.addChildLast(n); }} qual_id[n] ("," {{n.add( ",", xState.str() ); }} qual_id[n])* node& xn raise_stmtCProduction_LINK raise_stmt{{ node n("raise_stmt"); xn.addChildLast(n); }} "raise" {{n.add( "LITERAL", xState.str() ); }} ( expr[n] ( "at" {{n.add( "LITERAL", xState.str() ); }} address_expression[n] )? )? node& xnrangeCProduction_LINKrange"." "." ( "." EXIT )? \t\n\r real_typeCProduction_LINKĮ real_type{{ node n("real_type"); xn.addChildLast(n); }} ( "real" | "real48" | "single" | "double" | "extended" | "comp" ) {{ n.add( "LITERAL", xState.str() ); }} node& xn\t\n\r record_case_listCProduction_LINK0~record_case_list{{ node n("record_case_list"); xn.addChildLast(n); }} ( const_expr[n] ( "," {{n.add( ",", xState.str() ); }} const_expr[n] )* variant_case[n] )+ node& xn\t\n\r record_constCProduction_LINKT record_const{{ node n("record_const"); xn.addChildLast(n); }} //"(" const_field[n] ( ";" {{n.add( ";", xState.str() ); }} const_field[n]? )* node& xnrecord_field_listCProduction_LINKprecord_field_list{{ node n("record_field_list"); xn.addChildLast(n); }} ( record_section[n] ( ";" {{n.add( ";", xState.str() ); }} )? {{BottomLastSc(n);}} )* record_variant[n]? node& xnrecord_sectionCProduction_LINKrecord_section_D4 system.pas contains C type relicts! See c_or_pas_type for a possible (formal only) solution{{{ node n("record_section"); xn.addChildLast(n); }} qual_id_list[n] ":" {{n.add( ":", xState.str() ); }} type[n] node& xn record_typeCProduction_LINKȳ record_type{{ node n("record_type"); xn.addChildLast(n); }} "record" {{n.add( "record", xState.str() ); }} record_field_list[n] "end" {{n.add( "end", xState.str() ); }} node& xnrecord_variantCProduction_LINKtrecord_variant{{ node n("record_variant"); xn.addChildLast(n); }} "case" {{n.add( "case", xState.str() ); }} ID[n] ( ":" {{n.add( ":", xState.str() ); }} ordinal_type[n] )? "of" {{n.add( "case_of", xState.str() ); }} record_case_list[n] node& xn register_listCProduction_LINK  register_list${{ node n("register_list"); xn.addChildLast(n); }} "[" {{n.add( "[", xState.str() ); }} string_constant[n] ( "," {{n.add( ",", xState.str() ); }} string_constant[n] )* "]" {{n.add( "]", xState.str() ); }} node& xn\t\n\r rel_opCProduction_LINK$rel_op{{ node n("rel_op"); xn.addChildLast(n); }} ( "=" | ">" | ">=" | "<" | "<=" | "in" | "is" | "<>" ) {{ n.add( "operator", xState.str() ); }} node& xn repeat_stmtCProduction_LINKH repeat_stmt{{ node n("repeat_stmt"); xn.addChildLast(n); }} "repeat" {{n.add( "repeat", xState.str() ); }} stmt_list[n]? "until" {{n.add( "until", xState.str() ); }} expr[n] node& xnrequires_clauseCProduction_LINKrequires_clause{{ node n("requires_clause"); xn.addChildLast(n); }} "requires" {{n.add( "LITERAL", xState.str() ); }} qual_id_list[n] ";" {{n.add( ";", xState.str() ); }} node& xnresource_definitionCProduction_LINKPresource_definition{{ node n("resource_definition"); xn.addChildLast(n); }} ID[n] "=" {{n.add( "operator", xState.str() ); }} string_constant_declaration[n] hintdirective[n]? ";" {{n.add( "last_sc", xState.str() ); }} node& xn% IGNORABLEresourcestring_declaration_partCProduction_LINK(resourcestring_declaration_part{{ node n("resourcestring_declaration_part"); xn.addChildLast(n); }} "resourcestring" {{n.add( "LITERAL", xState.str() ); }} resource_definition[n]* node& xn% IGNORABLE result_typeCProduction_LINK result_typeA{{ node n("result_type"); xn.addChildLast(n); }} type_id[n] node& xn selectorsCProduction_LINK selectorsEstart and succ warning disabled, which would be raised from case_stmt{{ node n("selectors"); xn.addChildLast(n); }} ( "." {{n.add( ".", xState.str() ); }} ID[n] //member selector | "^" {{n.add( "^", xState.str() ); }} //dereference | "(" {{n.add( "(", xState.str() ); }} writearg_list[n]? ")" {{n.add( ")", xState.str() ); }} //call or typecast | "[" {{n.add( "[", xState.str() ); }} expr_list[n]? "]" {{n.add( "]", xState.str() ); }} //array or property selector )* ( "as" {{n.add( "LITERAL", xState.str() ); }} factor[n] )? node& xn` IGNORABLE selectors_cCProduction_LINK selectors_cEstart and succ warning disabled, which would be raised from case_stmt{{ node n("selectors_c"); xn.addChildLast(n); }} ( "." {{n.add( ".", xState.str() ); }} ID[n] //member selector | "^" {{n.add( "^", xState.str() ); }} //dereference | "(" {{n.add( "(", xState.str() ); }} expr_list_c[n]? ")" {{n.add( ")", xState.str() ); }} //call or typecast | "[" {{n.add( "[", xState.str() ); }} expr_list_c[n]? "]" {{n.add( "]", xState.str() ); }} //array or property selector )* node& xn` IGNORABLEset_typeCProduction_LINKHset_type{{ node n("set_type"); xn.addChildLast(n); }} "set" {{n.add( "LITERAL", xState.str() ); }} "of" {{n.add( "of", xState.str() ); }} simple_type[n] node& xn simple_exprCProduction_LINK  simple_exprQ{{ node n("simple_expr"); xn.addChildLast(n); }} term[n] (add_op[n] term[n])*node& xn simple_expr_cCProduction_LINK, simple_expr_cY{{ node n("simple_expr_c"); xn.addChildLast(n); }} term_c[n] ( add_op[n] term_c[n] )*node& xn IGNORABLE simple_expr_iCProduction_LINKL simple_expr_iW{{ node n("simple_expr_i"); xn.addChildLast(n); }} term_i[n] (add_op[n] term_i[n])*node& xn\t\n\r simple_expr_tCProduction_LINKl simple_expr_tY{{ node n("simple_expr_t"); xn.addChildLast(n); }} term_t[n] (add_op[n] term_t[n])* node& xn\t\n\r simple_typeCProduction_LINK simple_typeenum or array constructors5{{ node n("simple_type"); xn.addChildLast(n); }} /* IF(enumerated_type()) enumerated_type[n] ELSE simple_expr_t[n] ( ".." {{n.add( "LITERAL", xState.str() ); }} simple_expr_t[n] )? END */ ( ordinal_type[n] | real_type[n] | pointer_type[n] ) node& xn simple_type_cCProduction_LINK$ simple_type_cenum or array constructorsv{{ node n("simple_type_c"); xn.addChildLast(n); }} /* IF(enumerated_type()) enumerated_type_c[n] ELSE IF(enumerated_type()) enumerated_type_c[n] ELSE simple_expr_c[n] END (".." {{n.add( "LITERAL", xState.str() ); }} simple_expr_c[n])? END */ ( ordinal_type_c[n] | real_type[n] //| pointer_type[n] ) node& xn IGNORABLE source_moduleCProduction_LINK source_module3{{ SetIndenter(' '); m_iIndent = 2; }} ""? // not opened as UTF8 ( library_file[m_nTree] | package_file[m_nTree] | unit_file[m_nTree] | program_file[m_nTree] ) "." {{m_nTree.add( ".", xState.str() ); }} {{ str sResult; node nContext; InitPrettyPrint(); InitPPOptions(nContext); if(m_Comments.findKey("INITIAL_COMMENT")) { m_ftCommentTree.visit(m_Comments.value(), sResult); sResult += "\n"; } m_ftTree.visit(m_nTree, sResult, nContext); if(m_bCRPENDING) sResult += "\n"; out << sResult; }} SKIP? stmtCProduction_LINKpstmtr{{ node n("stmt"); xn.addChildLast(n); }} WHILE(is_stmt_label()) label[n] END stmt_notLabel[n]?node& xn stmt_listCProduction_LINK stmt_list{{ node n("stmt_list"); xn.addChildLast(n); }} ( ";" {{n.add( "last_sc", xState.str() ); }} stmt_list_not_empty[n]? | stmt_list_not_empty[n] ) node& xnstmt_list_not_emptyCProduction_LINK stmt_list_not_empty{{ node n("stmt_list_not_empty"); xn.addChildLast(n); }} stmt[n] ( IF(!is_end_of_stmt_list()) ";"+ {{n.add( "last_sc", xState.str() ); }} stmt[n] ELSE ";" {{n.add( "last_sc", xState.str() ); }} END )* node& xn\t\n\r stmt_list0CProduction_LINK stmt_list0Jless complicated than the actual "stmt_list", but causes a lot of warningss{{ node n("stmt_list0"); xn.addChildLast(n); }} ( stmt[n] | ";" {{n.add( ";", xState.str() ); }} )+ node& xn\t\n\r stmt_notLabelCProduction_LINK0 stmt_notLabelB{{ node n("stmt_notLabel"); xn.addChildLast(n); }} ( assignment_stmt[n] | asm_statement[n] | compound_stmt[n] | case_stmt[n] | for_stmt[n] | goto_stmt[n] | if_stmt[n] | inline_block[n] | raise_stmt[n] | repeat_stmt[n] | try_stmt[n] | while_stmt[n] | with_stmt[n] ) node& xn IGNORABLEstr_typeCProduction_LINKstr_type,string_type is typedef in the generated code{{ node n("str_type"); xn.addChildLast(n); }} ( "string" {{n.add( "LITERAL", xState.str() ); }} ( "[" {{n.add( "[", xState.str() ); }} const_expr[n] "]" {{n.add( "]", xState.str() ); }} )? | "shortstring" {{n.add( "LITERAL", xState.str() ); }} | "ansistring" {{n.add( "LITERAL", xState.str() ); }} | "widestring" {{n.add( "LITERAL", xState.str() ); }} ) node& xnstring_constantCProduction_LINK8string_constant{{ node n("string_constant"); xn.addChildLast(n); }} ( NUMBER[n] | STRING[n] | "'" {{ throw CTT_Error("String constant exceeds line"); }} )+ node& xn\t\n\r string_constant_declarationCProduction_LINKstring_constant_declaration{{ node n("string_constant_declaration"); xn.addChildLast(n); }} ( ID[n] | string_constant_ex[n] ) ( "+" {{n.add( "LITERAL", xState.str() ); }} ( ID[n] | string_constant_ex[n] ) )*node& xn IGNORABLEstring_constant_exCProduction_LINK string_constant_ex{{ node n("string_constant_ex"); xn.addChildLast(n); }} ( string_constant[n] | "^" CTRL_CHAR {{n.add( "CTRL_CHAR", str("^") + xState.str() ); }} )+ node& xnstring_expressionCProduction_LINK $string_expressionB{{ node n("string_expression"); xn.addChildLast(n); }} expr[n]node& xnstructured_constCProduction_LINK@&structured_const{{ node n("structured_const"); xn.addChildLast(n); }} "(" {{n.add( "(", xState.str() ); }} ( IF(is_id_colon()) record_const[n] ELSE array_const[n] END )? ")" {{n.add( ")", xState.str() ); }} node& xnstructured_typeCProduction_LINK(*structured_type!{{ node n("structured_type"); xn.addChildLast(n); }} ( "packed" {{n.add( "LITERAL", xState.str() ); }} )? ( array_type[n] | record_type[n] | object_type[n] | class_type[n] //| class_reference_type | interface_type[n] | set_type[n] | file_type[n] )node& xn subrange_typeCProduction_LINK. subrange_type{{ node n("subrange_type"); xn.addChildLast(n); }} simple_expr_t[n] ( ".." {{n.add( "LITERAL", xState.str() ); }} simple_expr_t[n] )? node& xnsubrange_type_cCProduction_LINKsubrange_type_c{{ node n("subrange_type"); xn.addChildLast(n); }} simple_expr_c[n] ( ".." {{n.add( "LITERAL", xState.str() ); }} simple_expr_c[n] )? node& xn\t\n\r subroutine_blockCProduction_LINKD0subroutine_block{{ node n("subroutine_block"); xn.addChildLast(n); }} ( "forward" {{n.add( "LITERAL", xState.str() ); }} ( ";" {{n.add( ";", xState.str() ); }} ( "overload" {{n.add( "LITERAL", xState.str() ); }} ( ";" {{n.add( ";", xState.str() ); }} )? )? )? {{BottomLastSc(n); }} | external_directive[n] code_procedure_directives[n] // e.g. procedure Sleep; external kernel32 name 'Sleep'; stdcall; {{BottomLastSc(n); }} | {{BottomLastSc(n); }} ( block[n] | asm_block[n] ) ( ";" {{n.add( ";", xState.str() ); }} )? {{BottomLastSc(n); }} ) node& xn\t\n\r termCProduction_LINK1termN{{ node n("term"); xn.addChildLast(n); }} factor[n] (mul_op[n] factor[n])*node& xnterm_cCProduction_LINKP7term_cV{{ node n("term_c"); xn.addChildLast(n); }} factor_c[n] ( mul_op[n] factor_c[n] )*node& xn IGNORABLEterm_iCProduction_LINKXNterm_iT{{ node n("term_i"); xn.addChildLast(n); }} factor_i[n] (mul_op[n] factor_i[n])*node& xn\t\n\r term_tCProduction_LINKxPterm_tV{{ node n("term_t"); xn.addChildLast(n); }} factor_t[n] (mul_op[n] factor_t[n])* node& xn\t\n\r then_stmtCProduction_LINKR then_stmt{{{ node n("then_stmt"); xn.addChildLast(n); }} "then" {{n.add( "then", xState.str() ); }} stmt[n]? else_stmt[n]? node& xn\t\n\r threadvariable_declaration_partCProduction_LINKTthreadvariable_declaration_part{{ node n("threadvariable_declaration_part"); xn.addChildLast(n); }} "threadvar" {{n.add( "LITERAL", xState.str() ); }} variable_declaration[n]+ node& xn IGNORABLEtry_stmtCProduction_LINKXtry_stmt/{{ node n("try_stmt"); xn.addChildLast(n); }} "try" {{n.add( "try", xState.str() ); }} stmt_list[n]? ( "finally" {{n.add( "finally", xState.str() ); }} stmt_list[n]? | "except" {{n.add( "except", xState.str() ); }} exception_block[n]? ) "end" {{n.add( "end", xState.str() ); }} node& xntypeCProduction_LINK\type {{ node n("type_"); // distinction from type keyword xn.addChildLast(n); }} //WHILE (IsPtr()) "^" {{n.add( "^", xState.str() ); }} END ( simple_type[n] hintdirective[n]? //simple_type | structured_type[n] | procedural_type[n] | str_type[n] ) node& xntype_declarationCProduction_LINK`type_declaration{{ node n("type_declaration"); xn.addChildLast(n); }} ID[n] "=" {{n.add( "operator", xState.str() ); }} ( "type" {{n.add( "type", xState.str() ); }} )? type[n] hintdirective[n]? ( ";" {{n.add( ";", xState.str() ); }} )? {{BottomLastSc(n); }} node& xntype_declaration_partCProduction_LINK@etype_declaration_part{{ node n("type_declaration_part"); xn.addChildLast(n); }} "type" {{n.add( "type_decl", xState.str() ); }} type_declaration[n]+ node& xntype_idCProduction_LINKhtype_id{{ node n("type_id"); xn.addChildLast(n); }} ( qual_id[n] | primitive_type[n] | real_type[n] | str_type[n] | "OleVariant" {{n.add("LITERAL", "OleVariant" ); }} ) node& xntyped_constantCProduction_LINKdktyped_constants{{ node n("typed_constant"); xn.addChildLast(n); }} IF(expr()) expr[n] ELSE structured_const[n] ENDnode& xntyped_constant_subroutine_blockCProduction_LINKmtyped_constant_subroutine_block{{ node n("typed_constant_subroutine_block"); xn.addChildLast(n); }} ":" {{n.add( ":", xState.str() ); }} type[n] "=" {{n.add( "operator", xState.str() ); }} typed_constant[n] hintdirective[n]? ";" {{n.add( ";", xState.str() ); }} node& xn unit_fileCProduction_LINKq unit_file{{ node n("unit_file"); xn.addChildLast(n); }} "unit" {{n.add( "unit", xState.str() ); }} ID[n] hintdirective[n]? ";" {{n.add( "last_sc", xState.str() ); }} interface_part[n] implementation_part[n] init_section[n] node& xn unit_nameCProduction_LINKu unit_name{{ node n("unit_name"); xn.addChildLast(n); }} ID[n] ( "in" {{n.add( "LITERAL", xState.str() ); }} string_expression[n] )? node& xnunsigned_integerCProduction_LINKxunsigned_integer{{ node n("unsigned_integer"); xn.addChildLast(n); }} ( DIGITS[n] | HEX_NUMBER[n] | OCT_NUMBER[n] | BIN_NUMBER[n] ) node& xn\t\n\r uses_clauseCProduction_LINK{ uses_clause{{ node n("uses_clause"); xn.addChildLast(n); }} "uses" {{n.add( "uses", xState.str() ); }} unit_name[n] ( "," {{n.add( ",", xState.str() ); }} unit_name[n] )* ";" {{n.add( "last_sc", xState.str() ); }} node& xnvalue_parameterCProduction_LINK|value_parameter{{ node n("value_parameter"); xn.addChildLast(n); }} qual_id[n] ( ( "," {{n.add( ",", xState.str() ); }} qual_id[n] )+ ( ":" {{n.add( ":", xState.str() ); }} array_of[n]? type_id[n] ) | ":" {{n.add( ":", xState.str() ); }} ( array_of[n] type_id[n] | type_id[n] ( "=" {{n.add( "operator", xState.str() ); }} const_expr[n] )? ) ) node& xn% IGNORABLEvariable_declarationCProduction_LINKvariable_declaration{{ node n("variable_declaration"); xn.addChildLast(n); }} ident_list[n] ":" {{n.add( ":", xState.str() ); }} type[n] ( "=" {{n.add( "LITERAL", xState.str() ); }} typed_constant[n] )? variable_modifier[n]* {{ BottomLastSc(n); }} node& xnvariable_declaration_partCProduction_LINK؈variable_declaration_part{{ node n("variable_declaration_part"); xn.addChildLast(n); }} "var" {{n.add( "var_decl", xState.str() ); }} variable_declaration[n]+ node& xnvariable_modifierCProduction_LINKvariable_modifierq{{ node n("variable_modifier"); xn.addChildLast(n); }} ( "absolute" {{n.add( "LITERAL", xState.str() ); }} expr_i[n] | ";" {{n.add( ";", xState.str() ); }} ( "export" {{n.add( "LITERAL", xState.str() ); }} | "cvar" {{n.add( "LITERAL", xState.str() ); }} | external_directive[n] )? | hintdirective[n] ) node& xnvariable_parameterCProduction_LINKvariable_parameter{{ node n("variable_parameter"); xn.addChildLast(n); }} "var" {{n.add( "LITERAL", xState.str() ); }} qual_id_list[n] ( ":" {{n.add( ":", xState.str() ); }} array_of[n]? type_id[n] )? node& xn% IGNORABLE variant_caseCProduction_LINKd variant_case {{ node n("variant_case"); xn.addChildLast(n); }} ( ":" {{n.add( "case:", xState.str() ); }} "(" {{n.add( "(", xState.str() ); }} record_field_list[n] ")" {{n.add( ")", xState.str() ); }} ( ";" {{n.add( "last_sc", xState.str() ); }} )? ) node& xn visibilityCProduction_LINK visibility{{ node n("visibility"); xn.addChildLast(n); }} ( "private" {{n.add( "LITERAL", xState.str() ); }} | "protected" {{n.add( "LITERAL", xState.str() ); }} | "public" {{n.add( "LITERAL", xState.str() ); }} | "published" {{n.add( "LITERAL", xState.str() ); }} ) node& xn while_stmtCProduction_LINK  while_stmt{{ node n("while_stmt"); xn.addChildLast(n); }} "while" {{n.add( "while", xState.str() ); }} expr[n] "do" {{n.add( "do", xState.str() ); }} stmt[n]? node& xn with_stmtCProduction_LINK| with_stmt{{ node n("with_stmt"); xn.addChildLast(n); }} "with" {{n.add( "with", xState.str() ); }} expr_list[n] "do" {{n.add( "do", xState.str() ); }} stmt[n]? node& xnwriteargCProduction_LINKwritearg{{ node n("writearg"); xn.addChildLast(n); }} expr[n] ( ":" {{n.add( ":", xState.str() ); }} expr[n] ( ":" {{n.add( ":", xState.str() ); }} expr[n] )? )? node& xn writearg_listCProduction_LINKئ writearg_list<copes with special argument construct for Write(), WriteLn()y{{ node n("writearg_list"); xn.addChildLast(n); }} writearg[n] ("," {{n.add( ",", xState.str() ); }} writearg[n])* node& xn$ BottomLastScCElementScript@ BottomLastSc{{ //if(xn.bottomLastChild().value() == ";") // xn.bottomLastChild().setLabel("last_sc"); node pos = xn.bottomLastChild(); while(pos.value().empty() && pos != node::npos) pos = pos.prev(); if(pos.value() == ";") pos.setLabel("last_sc"); }} node& xnCommentTree_crafterCElementScript(CommentTree_crafter{{ if(m_bCRCOMMENTPENDING) WRITECRS( 1, xsResult); xsResult += xn.value(); m_bCRPENDING = true; m_bCRCOMMENTPENDING = true; }} const node& xn, str& xsResultCommentTree_DefaultCElementScriptCommentTree_Default{{ node pos = xn.firstChild(); while(pos != node::npos) { m_ftCommentTree.visit(xState, pos, xsResult); pos = pos.nextSibling(); } }} const node& xn, str& xsResultCommentTree_ValueCElementScriptCommentTree_Value{{ if(m_bCRCOMMENTPENDING) { WRITECRS( 1, xsResult); m_bCRCOMMENTPENDING = false; m_bCRPENDING = false; } xsResult += xn.value(); }} const node& xn, str& xsResult CopyCommentCElementScript CopyComment{{ m_bCRCOMMENTPENDING = false; if(!xn.attrib("COMMENT").empty()) m_ftCommentTree.visit(m_Comments[xn.attrib("COMMENT")], xsResult); }} const node& xn, str& xsResult DebugInfoCElementScript DebugInfo{{ log << "label = " << xn.label() << endl << "value = " << xn.value() << endl << "m_bCRPENDING = " << m_bCRPENDING << endl << "m_bNOSPACE = " << m_bNOSPACE << endl << "m_bSPACEPENDING = " << m_bSPACEPENDING << endl << "m_iCURRMARGIN = " << IndentStr().size() << endl << "m_iCURRLINEPOS = " << m_iCURRLINEPOS << endl << endl; }} const node& xn GetPPOptionsCElementScript GetPPOptions{{ if(m_mPrettyPrint.findKey(xn.label())) return m_mPrettyPrint.value(); else return m_mPrettyPrint["LITERAL"]; }} const node& xnnodeIgLitCElementScriptLIgLitp{{ node n("IgLit"); xnNode.addChildLast(n); n.add("IGNORED", xState.str(-1)); n.add(xs, xState.str()); }} node& xnNode, const str& xs InitPPOptionsCElementScript InitPPOptionsn{{ xn.setAttrib("CRSUPPRESS", "false"); xn.setAttrib("SPACEBEFORESUPPRESS", "false"); xn.setAttrib("SPACEAFTERSUPPRESS", "false"); xn.setAttrib("CRBEFORE", "false"); xn.setAttrib("BLANKLINEBEFORE", "false"); xn.setAttrib("DINDENT", "false"); xn.setAttrib("INDENTBYTAB", "false"); xn.setAttrib("INDENTTOCLP", "false"); xn.setAttrib("CRAFTER", "false"); }} node& xnInitPrettyPrintCElementScriptInitPrettyPrint{{ node n = NewPPOption("LITERAL"); n = NewPPOption("library"); n.setAttrib("BLANKLINEBEFORE", "true"); n = NewPPOption("package"); n.setAttrib("BLANKLINEBEFORE", "true"); n = NewPPOption("unit"); n.setAttrib("BLANKLINEBEFORE", "true"); n = NewPPOption("program"); n.setAttrib("BLANKLINEBEFORE", "true"); n = NewPPOption("uses"); n.setAttrib("BLANKLINEBEFORE", "true"); n = NewPPOption("implementation"); n.setAttrib("BLANKLINEBEFORE", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("const_decl"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("type_decl"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("var_decl"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("begin"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("repeat"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("record"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("case_of"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("of"); n.setAttrib("CRSUPPRESS", "true"); n = NewPPOption("do"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("then"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("else"); n.setAttrib("CRBEFORE", "true"); n.setAttrib("DINDENT", "true"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("try"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("asm"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("initialization"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("end"); n.setAttrib("CRBEFORE", "true"); n.setAttrib("DINDENT", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("until"); n.setAttrib("CRBEFORE", "true"); n.setAttrib("DINDENT", "true"); n = NewPPOption("finally"); n.setAttrib("CRBEFORE", "true"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("DINDENT", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("except"); n.setAttrib("CRBEFORE", "true"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("DINDENT", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("last_sc"); n.setAttrib("CRSUPPRESS", "true"); n.setAttrib("CRAFTER", "true"); n.setAttrib("SPACEBEFORESUPPRESS", "true"); n = NewPPOption(";"); n.setAttrib("SPACEBEFORESUPPRESS", "true"); n = NewPPOption(","); n.setAttrib("SPACEBEFORESUPPRESS", "true"); n = NewPPOption("label_:"); n.setAttrib("SPACEBEFORESUPPRESS", "true"); n.setAttrib("CRSUPPRESS", "true"); n.setAttrib("CRAFTER", "true"); n = NewPPOption("case:"); n.setAttrib("INDENTBYTAB", "true"); n.setAttrib("CRAFTER", "true"); n.setAttrib("SPACEBEFORESUPPRESS", "true"); n = NewPPOption(":"); n.setAttrib("SPACEBEFORESUPPRESS", "true"); n = NewPPOption("."); n.setAttrib("CRSUPPRESS", "true"); n.setAttrib("SPACEBEFORESUPPRESS", "true"); n.setAttrib("SPACEAFTERSUPPRESS", "true"); n = NewPPOption("^"); n.setAttrib("SPACEAFTERSUPPRESS", "true"); n = NewPPOption("enumerated_type("); n.setAttrib("INDENTTOCLP", "true"); n.setAttrib("SPACEAFTERSUPPRESS", "true"); n = NewPPOption("enumerated_type,"); n.setAttrib("CRAFTER", "true"); n.setAttrib("SPACEBEFORESUPPRESS", "true"); }} INSERTBLANKLINECElementScriptINSERTBLANKLINEa{{ if( m_iCURRLINEPOS == 0) WRITECRS( 1, xsResult ); else WRITECRS( 2, xsResult ); }} str& xsResultm_bCRCOMMENTPENDINGCElementScriptm_bCRCOMMENTPENDING&{{ m_bCRCOMMENTPENDING = false; }} bool m_bCRPENDINGCElementScriptl m_bCRPENDING{{ m_bCRPENDING = false; }} bool m_bNOSPACECElementScript< m_bNOSPACE{{ m_bNOSPACE = false; }} boolm_bSPACEPENDINGCElementScript m_bSPACEPENDING"{{ m_bSPACEPENDING = false; }} bool m_CommentsCElementScript m_Commentsmstrnodem_ftCommentTreeCElementScriptm_ftCommentTree{{ m_ftCommentTree.add("", CommentTree_Default); m_ftCommentTree.add("IGNORED", CommentTree_Value); m_ftCommentTree.add("LITERAL", CommentTree_Value); m_ftCommentTree.add("COMMENT_DELPHI", CommentTree_crafter); }} const node& xn, str& xsResultmstrfunm_ftTreeCElementScriptm_ftTree{{ m_ftTree.add("", Tree_Default); m_ftTree.add("then_stmt", Tree_deindent); m_ftTree.add("for_stmt", Tree_deindent); m_ftTree.add("while_stmt", Tree_deindent); m_ftTree.add("with_stmt", Tree_deindent); m_ftTree.add("exception_handler", Tree_deindent); m_ftTree.add("variable_declaration_part", Tree_deindent); m_ftTree.add("constant_declaration_part", Tree_deindent); m_ftTree.add("type_declaration_part", Tree_deindent); m_ftTree.add("variant_case", Tree_deindent); m_ftTree.add("enumerated_type", Tree_deindent); m_ftTree.add("case_list", Tree_cr_before_deindent); m_ftTree.add("record_case_list", Tree_cr_before_deindent); m_ftTree.add("constant_declaration", Tree_cr_before); m_ftTree.add("procedure_headers_part", Tree_cr_before); m_ftTree.add("resource_definition", Tree_cr_before); m_ftTree.add("variable_declaration", Tree_cr_before); m_ftTree.add("exports_clause", Tree_cr_before); m_ftTree.add("label_declaration", Tree_cr_before); m_ftTree.add("procedure_declaration", Tree_cr_before); m_ftTree.add("function_declaration", Tree_cr_before); m_ftTree.add("constructor_declaration", Tree_cr_before); m_ftTree.add("destructor_declaration", Tree_cr_before); m_ftTree.add("class_declaration", Tree_cr_before); m_ftTree.add("interface_declaration_part", Tree_blank_line_before); m_ftTree.add("declaration_part", Tree_blank_line_before); m_ftTree.add("type_declaration", Tree_type_declaration); m_ftTree.add("class_body", Tree_indent); }} 2const node& xnNode, str& xsResult, node& xnContextmstrfunm_iCURRLINEPOSCElementScripttm_iCURRLINEPOS{{ m_iCURRLINEPOS = 0; }} int m_iIndentCElementScriptD m_iIndent{{ m_iIndent = 2; }} intm_mPrettyPrintCElementScriptm_mPrettyPrint mstrnodem_nTreeCElementScriptm_nTree,{{ m_nTree.setLabel("source_module"); }} node NewPPOptionCElementScript NewPPOptionT{{ node n(xsName); InitPPOptions(n); m_mPrettyPrint[xsName] = n; return n; }} const str& xsNamenodePPSYMBOLCElementScriptPPSYMBOLp{{ int iCURRMARGIN = IndentStr().size(); if(m_iCURRLINEPOS <= iCURRMARGIN) { if(m_iCURRLINEPOS == 0) // smmall time otimization xsResult += IndentStr(); else for(int i = m_iCURRLINEPOS + 1; i <= iCURRMARGIN; i++) xsResult += " "; m_iCURRLINEPOS = iCURRMARGIN; } xsResult += xn.value(); m_iCURRLINEPOS += xn.value().size(); }} const node& xn, str& xsResultTree_bb_deindentCElementScriptTree_bb_deindent{{ INSERTBLANKLINE(xsResult); m_bCRPENDING = false; m_bNOSPACE = true; Tree_Default(xState, xnNode, xsResult, xnContext); PopIndent(); }} 2const node& xnNode, str& xsResult, node& xnContextTree_blank_line_beforeCElementScriptTree_blank_line_before{{ INSERTBLANKLINE(xsResult); m_bCRPENDING = false; m_bNOSPACE = true; node pos = xnNode.firstChild(); while(pos != node::npos) { m_ftTree.visit(xState, pos, xsResult, xnContext); pos = pos.nextSibling(); } }} 2const node& xnNode, str& xsResult, node& xnContextTree_cr_beforeCElementScriptTree_cr_before{{ WRITECRS( 1, xsResult); m_bCRPENDING = false; m_bNOSPACE = true; Tree_Default(xState, xnNode, xsResult, xnContext); }} 2const node& xnNode, str& xsResult, node& xnContextTree_cr_before_deindentCElementScriptTTree_cr_before_deindent{{ WRITECRS( 1, xsResult); m_bCRPENDING = false; m_bNOSPACE = true; Tree_Default(xState, xnNode, xsResult, xnContext); PopIndent(); }} 2const node& xnNode, str& xsResult, node& xnContext Tree_DefaultCElementScript} Tree_Default{{ if(!xnNode.value().empty()) Tree_Value(xState, xnNode, xsResult, xnContext); else Tree_iterate(xState, xnNode, xsResult, xnContext); }} 2const node& xnNode, str& xsResult, node& xnContext Tree_deindentCElementScripto Tree_deindentJ{{ Tree_Default(xState, xnNode, xsResult, xnContext); PopIndent(); }} 2const node& xnNode, str& xsResult, node& xnContext Tree_indentCElementScript3 Tree_indent{{ IncrIndent(m_iIndent); m_bCRPENDING = true; m_bNOSPACE = true; Tree_Default(xState, xnNode, xsResult, xnContext); }} 2const node& xnNode, str& xsResult, node& xnContext Tree_iterateCElementScripth Tree_iterate{{ node pos = xnNode.firstChild(); while(pos != node::npos) { m_ftTree.visit(xState, pos, xsResult, xnContext); pos = pos.nextSibling(); } }} 2const node& xnNode, str& xsResult, node& xnContextTree_type_declarationCElementScriptTree_type_declarationw{{ node pos = xnNode.findNextLabel("structured_type", xnNode.follow()); bool bFound = pos != node::npos && pos.firstChild().label() != "array_type" && pos.firstChild().label() != "set_type" && pos.firstChild().label() != "file_type"; if(bFound) { INSERTBLANKLINE(xsResult); m_bCRPENDING = false; m_bNOSPACE = true; } else { WRITECRS( 1, xsResult); m_bCRPENDING = false; m_bNOSPACE = true; } Tree_Default(xState, xnNode, xsResult, xnContext); if(bFound) { INSERTBLANKLINE(xsResult); m_bCRPENDING = false; m_bNOSPACE = true; } }} 2const node& xnNode, str& xsResult, node& xnContext Tree_ValueCElementScript Tree_Value~{{ str sDebug = xnNode.label(); WriteSym( xnNode, xsResult, GetPPOptions(xnNode) ); CopyComment(xnNode, xsResult); }} 2const node& xnNode, str& xsResult, node& xnContextWRITECRSCElementScriptbWRITECRS}{{ if(NUMBEROFCRS > 0) { for(int i = 1; i <= NUMBEROFCRS; i++) xsResult += "\n"; m_iCURRLINEPOS = 0; } }} int NUMBEROFCRS, str& xsResultWriteSymCElementScriptWriteSymo{{ str sDebug = xn.label(); if ( (m_bCRPENDING && xnContext.attrib("CRSUPPRESS") != "true") || xnContext.attrib("CRBEFORE") == "true") { WRITECRS( 1, xsResult); m_bCRPENDING = false; m_bNOSPACE = true; } if (xnContext.attrib("BLANKLINEBEFORE") == "true") { INSERTBLANKLINE(xsResult); m_bCRPENDING = false; m_bNOSPACE = true; } if (xnContext.attrib("DINDENT") == "true") { PopIndent(); m_bNOSPACE = true; } if (m_bSPACEPENDING && !m_bNOSPACE && xnContext.attrib("SPACEBEFORESUPPRESS") != "true") { xsResult += " "; m_iCURRLINEPOS++; } if(xnContext.attrib("SPACEAFTERSUPPRESS") == "true") m_bNOSPACE = true; else m_bNOSPACE = false; PPSYMBOL( xn, xsResult); if (!m_bNOSPACE) m_bSPACEPENDING = true; if (xnContext.attrib("INDENTBYTAB") == "true") IncrIndent(m_iIndent); if (xnContext.attrib("INDENTTOCLP") == "true") PushIndent(m_iCURRLINEPOS); if( xnContext.attrib("CRAFTER") == "true" ) m_bCRPENDING = true; }} 4const node& xn, str& xsResult, const node& xnContextcase1 CTestScriptLcase1&{{node nDummy;}} case_stmt[nDummy] &case x of 1: if y then a else b endcasetestcase2 CTestScriptwcase2&{{node nDummy;}} case_stmt[nDummy] Lcase x of 1: if y then a; //semicolon separates from case-else else b end casetestsComments CTestScriptVCommentssource_module 3 unit test; interface implementation end. { Comment 1 (* comment 2 *) } (* Comment 1 { comment 2 } *) { comment 1 // Comment 2 } (* comment 1 // Comment 2 *) // comment 1 (* comment 2 *) // comment 1 { comment 2 } unit test ; interface implementation end.MethRes CTestScript̸MethResp{{node nDummy;}} IF (method_resolution()) method_resolution[nDummy] ";" ELSE {{ out << "mist"; }} END $function Itest.GetProp = GetProp2; prop1 CTestScriptZprop1/{{node nDummy;}} property_definition[nDummy] .property arr[index: string]: string; default; COptionsProjectfProjectOptionsProjectOptionsCOptionSection|ProjectOptions5 CaseSensitiveCScriptpg CaseSensitive0CharTypeTemplateCScriptHCharTypeTemplate1 CommentToCodeCScript  CommentToCode0 ConfigParamCScriptD_ ConfigParam""CopyCodeCScript,CopyCode0Cpp_PrjMainSourceCScriptcCpp_PrjMainSourceCpp_PrjParserHeaderCScriptZCpp_PrjParserHeaderCpp_PrjParserSourceCScriptZCpp_PrjParserSourceCreateConstProductionsCScript4CreateConstProductions0CreateInterfaceCScriptCreateInterface0CreateWideCharRegexCScriptCreateWideCharRegex0DOMDefaultLabelCScriptDOMDefaultLabel default_labelDOMDocTypeNameCScriptDOMDocTypeName DOMPublicIDCScript8 DOMPublicID DOMRootLabelCScript DOMRootLabelroot DOMSystemIDCScript DOMSystemID ExportableCScript Exportable1 ExtraParamCScript ExtraParam""GlobalLiteralScannerCScriptGlobalLiteralScanner1GlobalRegexScannerCScriptHGlobalRegexScanner0 IgnoreCharsCScript IgnoreChars\t\n\rIgnoreWhiteSpaceCScriptIgnoreWhiteSpace1 InclusionProdCScriptt InclusionProdCOMMENT IndentCharCScript IndentCharws IndentDeltaCScript< IndentDelta2 InterpretableCScript Interpretable1IsNullableWarningCScriptIsNullableWarning0 LATokenBufferCScripth LATokenBuffer0LookAheadOverlapWarningCScriptLookAheadOverlapWarning0 MaxStackSizeCScript0 MaxStackSize300NeatlessCScriptNeatless1 NoAnyFailAltCScript NoAnyFailAlt1 NoSkipFailAltCScript\ NoSkipFailAlt0OpSystemCScriptOpSystem0 PluginTypeCScript$ PluginTypeCTT_ParseStatePlugin PreprocessorCScript PreprocessorDelphiPreproc.ttp SeparatedCScript Separated1SourceEncodingCScriptP SourceEncoding0SourceOpenModeCScript SourceOpenMode0StartSuccNullableWarningCScript!StartSuccNullableWarning1 StartruleCScript|! Startrule source_moduleStateParamRequiredCScript!StateParamRequired0TargetEncodingCScriptD"TargetEncoding0TargetOpenModeCScript"TargetOpenMode0TestAllLiteralsCScript #TestAllLiterals0TestAllLiteralsAlwaysCScriptp#TestAllLiteralsAlways0TestAllRegexsAlwaysCScript#TestAllRegexsAlways0TestFileCScript8$TestFileUseIgnoreRegexCScript$UseIgnoreRegex0UseLocalOptionsCScript%UseLocalOptions0 VersionMajorCScriptd% VersionMajor1 VersionMinorCScript% VersionMinor1VersionReleaseCScript,&VersionRelease6