home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / p2demo21.exe / PEL / PASCAL.PEL < prev    next >
Text File  |  1995-03-21  |  10KB  |  177 lines

  1. # $Header:   P:\source\wmacros\pascal.pev   1.5   21 Mar 1995 13:16:48   WALKER  $
  2.  
  3. ##############################################################################
  4. #
  5. #       Compuware Corporation
  6. #         31440 Northwestern Highway
  7. #           Farmington Hills, Michigan 48334-2564
  8. #
  9. #   This source code listing contains information that is
  10. #   proprietary to Compuware Corporation and may not be copied
  11. #   duplicated, translated, transmitted, stored, retrieved
  12. #   or in any manner or by any method conveyed or disclosed
  13. #   to a third party or parties without express written
  14. #   permission from Compuware Corporation.
  15. #
  16. #  
  17. ##############################################################################
  18.  
  19. #### $Workfile:   pascal.pel  $: Pascal support functions
  20.  
  21. function setup_pascal_template()
  22. {
  23.    delete( language_template );    # delete last template and start over
  24.  
  25.    ELEC_LANG = "pascal"
  26.  
  27.    language_template[ "(" ] = "( `statement` )"
  28.    language_template[ "*" ] = "(***\n *** `comment` \n ***)"
  29.    language_template[ "[" ] = "[ `expression` ]"
  30.    language_template[ "{" ] = "{ `expression` }"                # }
  31.  
  32.    language_template[ "BE" ] = "BEGIN\n\t`statement`\n\bEND;\n"
  33.    language_template[ "CA" ] = "CASE `expression` OF\n\t`value` : `statement`;\n\bEND;"
  34.    language_template[ "CS" ] = "`value` : `statement`;"
  35.    language_template[ "EI" ] = "ELSE IF `expression` THEN\n\t`statement`;\n"
  36.    language_template[ "EL" ] = "ELSE\n\t`statement`;"
  37.    language_template[ "EN" ] = "END;"
  38.    language_template[ "FO" ] = "FOR `var` := `start` TO `finish` DO\n\tBEGIN\n\t`statement`;\n\bEND;"
  39.    language_template[ "FU" ] = "FUNCTION `name`( `parm` : `type` ) : `type`;\n\nBEGIN\n\t`statement`;\n\bEND;"
  40.    language_template[ "IE" ] = "IF ( `expression` ) THEN\n\t`statement-1`;\n\bELSE\n\t`statement-2`;\n"
  41.    language_template[ "IF" ] = "IF ( `expression` ) THEN\n\t`statement`; "
  42.    language_template[ "PG" ] = "PROGRAM `name`;\n"
  43.    language_template[ "PR" ] = "PROCEDURE `name`( `parm` : `type` );\nBEGIN\n\t`statement`;\n\bEND;"
  44.    language_template[ "RD" ] = "READLN ( `expression` );"
  45.    language_template[ "RE" ] = "REPEAT\n\t`statement`;\n\bUNTIL ( `expression` )"
  46.    language_template[ "VA" ] = "VAR\n\t`var` : `type`;\n"
  47.    language_template[ "VN" ] = "`var` : `type`;"
  48.    language_template[ "WH" ] = "WHILE ( `expression` ) DO\n\tBEGIN\n\t`statement`;\n\bEND;\n"
  49.    language_template[ "WR" ] = "WRITELN ( `expression` );"
  50.  
  51.    language_template[ "be" ] = "begin\n\t`statement`\n\bend;\n"
  52.    language_template[ "ca" ] = "case `expression` of\n\t`value` : `statement`;\n\bend;"
  53.    language_template[ "cs" ] = "`value` : `statement`;"
  54.    language_template[ "ei" ] = "else if `expression` then\n\t`statement`;\n"
  55.    language_template[ "el" ] = "else\n\t`statement`;"
  56.    language_template[ "en" ] = "end;"
  57.    language_template[ "fo" ] = "for `var` := `start` to `finish` do\n\tbegin\n\t`statement`;\n\bend;"
  58.    language_template[ "fu" ] = "function `name`( `parm` : `type` ) : `type`;\n\nbegin\n\t`statement`;\n\bend;"
  59.    language_template[ "ie" ] = "if ( `expression` ) then\n\t`statement-1`;\n\belse\n\t`statement-2`;\n"
  60.    language_template[ "if" ] = "if ( `expression` ) then\n\t`statement`; "
  61.    language_template[ "pg" ] = "program `name`;\n"
  62.    language_template[ "pr" ] = "procedure `name`( `parm` : `type` );\nbegin\n\t`statement`;\n\bend;"
  63.    language_template[ "rd" ] = "readln ( `expression` );"
  64.    language_template[ "re" ] = "repeat\n\t`statement`;\n\buntil ( `expression` )"
  65.    language_template[ "va" ] = "var\n\t`var` : `type`;\n"
  66.    language_template[ "vn" ] = "`var` : `type`;"
  67.    language_template[ "wh" ] = "while ( `expression` ) do\n\tbegin\n\t`statement`;\n\bend;\n"
  68.    language_template[ "wr" ] = "writeln ( `expression` );"
  69. }
  70.  
  71. global function add_pascal_type()
  72. {
  73.    add_type("pascal", "Turbo Pascal", "pascal", "5 9", "1 77", "begin end (* *) { }", "\\", 
  74.             default_buffer_flags, 0, 1, "()[];:,='", 0, 1);
  75. }
  76.  
  77. global function load_factory_pascal_syntax()
  78. {
  79.    local type = "pascal";
  80.  
  81.    set_factory_categories( type );
  82.  
  83.    add_syntax_item(type, KEYWORD, "and", CATEGORY_RESERVED);
  84.    add_syntax_item(type, KEYWORD, "array", CATEGORY_RESERVED);
  85.    add_syntax_item(type, KEYWORD, "begin", CATEGORY_RESERVED);
  86.    add_syntax_item(type, KEYWORD, "case", CATEGORY_RESERVED);
  87.    add_syntax_item(type, KEYWORD, "const", CATEGORY_RESERVED);
  88.    add_syntax_item(type, KEYWORD, "div", CATEGORY_RESERVED);
  89.    add_syntax_item(type, KEYWORD, "do", CATEGORY_RESERVED);
  90.    add_syntax_item(type, KEYWORD, "downto", CATEGORY_RESERVED);
  91.    add_syntax_item(type, KEYWORD, "else", CATEGORY_RESERVED);
  92.    add_syntax_item(type, KEYWORD, "end", CATEGORY_RESERVED);
  93.    add_syntax_item(type, KEYWORD, "file", CATEGORY_RESERVED);
  94.    add_syntax_item(type, KEYWORD, "for", CATEGORY_RESERVED);
  95.    add_syntax_item(type, KEYWORD, "function", CATEGORY_RESERVED);
  96.    add_syntax_item(type, KEYWORD, "goto", CATEGORY_RESERVED);
  97.    add_syntax_item(type, KEYWORD, "if", CATEGORY_RESERVED);
  98.    add_syntax_item(type, KEYWORD, "in", CATEGORY_RESERVED);
  99.    add_syntax_item(type, KEYWORD, "label", CATEGORY_RESERVED);
  100.    add_syntax_item(type, KEYWORD, "mod", CATEGORY_RESERVED);
  101.    add_syntax_item(type, KEYWORD, "nil", CATEGORY_RESERVED);
  102.    add_syntax_item(type, KEYWORD, "not", CATEGORY_RESERVED);
  103.    add_syntax_item(type, KEYWORD, "of", CATEGORY_RESERVED);
  104.    add_syntax_item(type, KEYWORD, "or", CATEGORY_RESERVED);
  105.    add_syntax_item(type, KEYWORD, "packed", CATEGORY_RESERVED);
  106.    add_syntax_item(type, KEYWORD, "procedure", CATEGORY_RESERVED);
  107.    add_syntax_item(type, KEYWORD, "program", CATEGORY_RESERVED);
  108.    add_syntax_item(type, KEYWORD, "record", CATEGORY_RESERVED);
  109.    add_syntax_item(type, KEYWORD, "repeat", CATEGORY_RESERVED);
  110.    add_syntax_item(type, KEYWORD, "set", CATEGORY_RESERVED);
  111.    add_syntax_item(type, KEYWORD, "then", CATEGORY_RESERVED);
  112.    add_syntax_item(type, KEYWORD, "to", CATEGORY_RESERVED);
  113.    add_syntax_item(type, KEYWORD, "type", CATEGORY_RESERVED);
  114.    add_syntax_item(type, KEYWORD, "until", CATEGORY_RESERVED);
  115.    add_syntax_item(type, KEYWORD, "var", CATEGORY_RESERVED);
  116.    add_syntax_item(type, KEYWORD, "while", CATEGORY_RESERVED);
  117.    add_syntax_item(type, KEYWORD, "with", CATEGORY_RESERVED);
  118.    add_syntax_item(type, KEYWORD, "false", CATEGORY_CONSTANT);
  119.    add_syntax_item(type, KEYWORD, "true", CATEGORY_CONSTANT);
  120.    add_syntax_item(type, KEYWORD, "maxint", CATEGORY_CONSTANT);
  121.    add_syntax_item(type, KEYWORD, "integer", CATEGORY_TYPE);
  122.    add_syntax_item(type, KEYWORD, "boolean", CATEGORY_TYPE);
  123.    add_syntax_item(type, KEYWORD, "real", CATEGORY_TYPE);
  124.    add_syntax_item(type, KEYWORD, "char", CATEGORY_TYPE);
  125.    add_syntax_item(type, KEYWORD, "string", CATEGORY_TYPE);
  126.    add_syntax_item(type, KEYWORD, "text", CATEGORY_TYPE);
  127.    add_syntax_item(type, KEYWORD, "interactive", CATEGORY_TYPE);
  128.    add_syntax_item(type, KEYWORD, "input", CATEGORY_RESERVED);
  129.    add_syntax_item(type, KEYWORD, "output", CATEGORY_RESERVED);
  130.    add_syntax_item(type, KEYWORD, "keyboard", CATEGORY_RESERVED);
  131.    add_syntax_item(type, KEYWORD, "abs", CATEGORY_FUNCTIONS);
  132.    add_syntax_item(type, KEYWORD, "atan", CATEGORY_FUNCTIONS);
  133.    add_syntax_item(type, KEYWORD, "chr", CATEGORY_FUNCTIONS);
  134.    add_syntax_item(type, KEYWORD, "cos", CATEGORY_FUNCTIONS);
  135.    add_syntax_item(type, KEYWORD, "eof", CATEGORY_FUNCTIONS);
  136.    add_syntax_item(type, KEYWORD, "eoln", CATEGORY_FUNCTIONS);
  137.    add_syntax_item(type, KEYWORD, "exp", CATEGORY_FUNCTIONS);
  138.    add_syntax_item(type, KEYWORD, "ln", CATEGORY_FUNCTIONS);
  139.    add_syntax_item(type, KEYWORD, "odd", CATEGORY_FUNCTIONS);
  140.    add_syntax_item(type, KEYWORD, "ord", CATEGORY_FUNCTIONS);
  141.    add_syntax_item(type, KEYWORD, "ioresult", CATEGORY_FUNCTIONS);
  142.    add_syntax_item(type, KEYWORD, "pred", CATEGORY_FUNCTIONS);
  143.    add_syntax_item(type, KEYWORD, "round", CATEGORY_FUNCTIONS);
  144.    add_syntax_item(type, KEYWORD, "sin", CATEGORY_FUNCTIONS);
  145.    add_syntax_item(type, KEYWORD, "sqr", CATEGORY_FUNCTIONS);
  146.    add_syntax_item(type, KEYWORD, "sqrt", CATEGORY_FUNCTIONS);
  147.    add_syntax_item(type, KEYWORD, "succ", CATEGORY_FUNCTIONS);
  148.    add_syntax_item(type, KEYWORD, "trunc", CATEGORY_FUNCTIONS);
  149.    add_syntax_item(type, KEYWORD, "length", CATEGORY_FUNCTIONS);
  150.    add_syntax_item(type, KEYWORD, "log", CATEGORY_FUNCTIONS);
  151.    add_syntax_item(type, KEYWORD, "concat", CATEGORY_FUNCTIONS);
  152.    add_syntax_item(type, KEYWORD, "copy", CATEGORY_FUNCTIONS);
  153.    add_syntax_item(type, KEYWORD, "pos", CATEGORY_FUNCTIONS);
  154.    add_syntax_item(type, KEYWORD, "pwroften", CATEGORY_FUNCTIONS);
  155.    add_syntax_item(type, KEYWORD, "get", CATEGORY_PROCEDURES);
  156.    add_syntax_item(type, KEYWORD, "new", CATEGORY_PROCEDURES);
  157.    add_syntax_item(type, KEYWORD, "put", CATEGORY_PROCEDURES);
  158.    add_syntax_item(type, KEYWORD, "read", CATEGORY_PROCEDURES);
  159.    add_syntax_item(type, KEYWORD, "readln", CATEGORY_PROCEDURES);
  160.    add_syntax_item(type, KEYWORD, "reset", CATEGORY_PROCEDURES);
  161.    add_syntax_item(type, KEYWORD, "rewrite", CATEGORY_PROCEDURES);
  162.    add_syntax_item(type, KEYWORD, "seek", CATEGORY_PROCEDURES);
  163.    add_syntax_item(type, KEYWORD, "write", CATEGORY_PROCEDURES);
  164.    add_syntax_item(type, KEYWORD, "writeln", CATEGORY_PROCEDURES);
  165.    add_syntax_item(type, KEYWORD, "delete", CATEGORY_PROCEDURES);
  166.    add_syntax_item(type, KEYWORD, "insert", CATEGORY_PROCEDURES);
  167.                               
  168.    add_syntax_item(type, BLOCK, "(* *)", CATEGORY_COMMENT);
  169.  
  170.    add_syntax_item(type, LINE, "' '", CATEGORY_LITERAL);
  171.                     
  172.    set_escape_character(type, "\\")
  173.    set_style_delimiters(type, ".();,=:")
  174.  
  175.    set_case_sensitive(type, 0)
  176. }
  177.