(Bessere) Alternativen zum SAS-Editor ?

Hat hier jemand Erfahrungen gesammelt mit Alternativen zum SAS eigenen Editor ?
Gibt es evtl. Alternativen die zusätzliche Möglichkeiten bieten zum effektiveren Arbeiten (> Tastaturmakros, Versionierung, etc.) ?

Herzlichen Dank für Tipps und Empfehlungen

T.Malz

Eclipse

Ich arbeite mit Eclipse und dem Plugin "Colorer-Editor" (net.sf.colorer_0.7.1), das mit Hilfe geeigneter "Grammatikdateien" auch sehr komplexen SAS-Code wunderhübsch einzufärben versteht und zugehörige Klammerpaare zeigt etc.

Die im Plugin benötigten Grammatikdateien sas.hrc und sas.hrd kann ich bei Bedarf zur Verfügung stellen (oder hier irgendwie hochladen???)

Eclipse bietet dann z.B. über CVS auch schöne Versionierungsmöglichkeiten.

Plugin

handelt es sich hier um das Plugin, welches man hier runterladen kann?

Gruß
Wolfgang Hornung

Ja

(das scheint allerdings eine neuere Version zu sein, die ich noch nicht ausprobiert habe)

Upload kommt !

... da ist kein Halten mehr.

Angesichts des Angebots die Grammatikdateien zum Syntax-Highlighting von SAS im Eclipse-Editor bereitzustellen, gehe ich eine spontane Selbstverpflichtung ein, bis Anfang März eine Upload-Möglichkeit auf Redscope bereitzustellen (... wird ja schon lange genug diskutiert).

Also: Bis zur KSFE gibt's den Upload.

... see you in Ulm :-)

Gruß Stephan

Grammatikdateien

Hier sind sie, leider ohne ordentliche Einrückung (s.u.).

Einfach an den angegebenen Pfad stellen, nachdem das Plugin installiert wurde, dann bei Eclipse die Dateieindung .sas mit dem "Colorer Editor" verbinden.

Ausserdem in der Datei eclipse/plugins/net.sf.colorer_0.7.1/colorer/hrc/proto.hrc
einen Block der Form

  <prototype name="sas" group="main" description="SAS">
    <location link=
"/home/jh/sas/hrc/sas.hrc"/>
    <filename>/\
.sas$/i</filename>
  </prototype>
einfügen und in der Datei eclipse/plugins/net.sf.colorer_0.7.1/colorer/catalog.xml
zwei Blöcke der Form
    <location link="hrc/sas.hrc"/>
und
    <hrd class="rgb" name="sas" description="SAS syntax colors">
      <location link=
"hrd/sas.hrd"/>
    </hrd>
einfügen.

eclipse\plugins\net.sf.colorer_0.7.1\colorer\hrd\rgb\sas.hrd

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE hrd PUBLIC "-//Cail Lomecb//DTD Colorer HRD take5//EN"
"http://colorer.sf.net/2003/hrd.dtd">
<hrd xmlns="http://colorer.sf.net/2003/hrd">

<assign name="sas:SASBlockBoundary" fore="#6666cc" style='1'/>
<assign name="sas:SASDataline" fore="#888888" style='2'/>
<assign name="sas:SASDeclarative" fore="#006633"/>
<assign name="sas:SASMacroBlockBoundary" fore="#aa0000" style='1'/>
<assign name="sas:SASMacroDefBoundary" fore="#aa0000" style='1'/>
<assign name="sas:SASMacroLabel" fore="#aa0000" style='3'/>
<assign name="sas:SASMacroRef" fore="#cc6666" style='1'/>
<assign name="sas:SASMacroVar" fore="#aa0000"/>
<assign name="sas:SASStatement" fore="#0000aa"/>
<assign name="sql:tsqlWord" fore="#0000aa"/>
<assign name="sas:SASStatementLabel" fore="#0000aa" style='2'/>
<assign name="sas:SASStepBoundary" fore="#0000aa" style='1'/>
<assign name="sas:SASString" fore="#888888" style='2'/>
<assign name="sas:SASComment" fore="#00aa00" style='2'/>
<assign name="sas:SASSyntaxError" fore="#ffffff" back="#ff0000"/>
<assign name="def:Text" fore="#000000" back="#ffffff"/>
<!--
<assign name="def:Text" fore="#000020" back="#f6f8ff"/>
-->
<assign name="def:HorzCross" fore="#000000" back="#e8e7f8"/>
<assign name="def:VertCross" fore="#000000" back="#e1e0f2"/>

<assign name="def:Number" fore="#008c00"/>
<assign name="def:NumberDec" fore="#008c00"/>
<assign name="def:NumberHex" fore="#008000"/>
<assign name="def:NumberBin" fore="#005b00"/>
<assign name="def:NumberOct" fore="#008c00"/>
<assign name="def:NumberFloat" fore="#008000"/>
<assign name="def:NumberSuffix" fore="#006600"/>

<assign name="def:String" fore="#1060b6"/>
<assign name="def:StringContent" fore="#0f69ff"/>
<assign name="def:StringEdge" fore="#800000"/>
<assign name="def:CharacterContent" fore="#0000cc"/>

<assign name="def:Comment" fore="#595979"/>
<assign name="def:CommentContent" fore="#7F9FBF" style='1'/>
<assign name="def:CommentEdge" fore="#606090"/>
<assign name="def:CommentDoc" fore="#3F7F8F"/>
<assign name="def:CommentDocEdge" fore="#c0bd92"/>

<assign name="def:Symbol" fore="#308080"/>
<assign name="def:SymbolStrong" fore="#406080"/>
<assign name="def:Prefix" fore="#0066ee"/>

<assign name="def:Operator" fore="#44aadd"/>

<assign name="def:Keyword" fore="#200080" style='1'/>
<assign name="def:KeywordStrong" fore="#7779bb" style='1'/>
<assign name="def:FunctionKeyword" fore="#400000"/>
<assign name="def:DeprecatedKeyword" fore="#008484"/>
<assign name="def:InterfaceKeyword" fore="#008484"/>
<assign name="def:ClassKeyword" fore="#6679aa" style='1'/>
<assign name="def:StructKeyword" fore="#003060"/>
<assign name="def:TypeKeyword" fore="#7779bb"/>

<assign name="def:Function"/>
<assign name="def:Register" fore="#000080"/>
<assign name="def:Constant" fore="#7d0045"/>
<assign name="def:Var" fore="#007d45"/>
<assign name="def:VarStrong" fore="#007997"/>
<assign name="def:Identifier" fore="#005fd2"/>
<assign name="def:BooleanConstant" fore="#0f4d75"/>

<assign name="def:Directive" fore="#004a43"/>
<assign name="def:Parameter" fore="#074726"/>
<assign name="def:ParameterUnknown" fore="#474796"/>

<assign name="def:Tag" fore="#333385"/>
<assign name="def:OpenTag" fore="#0057a6"/>
<assign name="def:CloseTag" fore="#0057a6"/>

<assign name="def:Label" fore="#e34adc"/>
<assign name="def:LabelStrong" fore="#000000" back="#a8a800"/>

<assign name="def:Insertion" fore="#000000" back="#cceeee"/>

<assign name="def:Error" fore="#ffffff" back="#dd9999" style='3'/>
<assign name="def:ErrorText" fore="#ee00ee"/>

<assign name="def:TODO" fore="#ffffff" back="#808000"/>
<assign name="def:Debug" fore="#80abfd" back="#007084"/>

<assign name="def:Path" fore="#40015a"/>
<assign name="def:URL" fore="#5555DD"/>
<assign name="def:EMail" fore="#7144c4"/>

<assign name="def:Date" fore="#009797"/>
<assign name="def:Time" fore="#8745a0"/>

<assign name="def:PairStart" fore="#d0d0ff"/>
<assign name="def:PairEnd" fore="#d0d0ff"/>
<assign name="def:PairStrongStart" fore="#880088"/>
<assign name="def:PairStrongEnd" fore="#880088"/>
</hrd>

eclipse\plugins\net.sf.colorer_0.7.1\colorer\hrc\sas.hrc

<?xml version="1.0" encoding='Windows-1251'?>
<!DOCTYPE hrc PUBLIC "-//Cail Lomecb//DTD Colorer HRC take5//EN"
"http://colorer.sf.net/2003/hrc.dtd">
<hrc version="take5" xmlns="http://colorer.sf.net/2003/hrc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://colorer.sf.net/2003/hrc http://colorer.sf.net/2003/hrc.xsd">

<annotation>
<documentation>
This is a HRC file for SAS (under construction).
</documentation>
<contributors>
Jobst Heitzig
</contributors>
</annotation>

<type name="sas">
<import type="def"/>

<region name="SASMacroOutlined" parent="def:Outlined" description="set parent='def:Outlined' for detailed macro outlining"/>
<region name="SASOutlined" parent="def: Outlined" description="set parent='def:Outlined' for detailed outlining"/>

<region name="SASBlockBoundary" description="Non-macro block boundary"/>
<region name="SASComment" description="Non-macro Comment"/>
<region name="SASDataline" description="Dataline in a data step"/>
<region name="SASDeclarative" description="Declarative statement in a data step"/>
<region name="SASMacroBlockBoundary" description="Macro block boundary"/>
<region name="SASMacroDefBoundary" description="Macro definition boundary"/>
<region name="SASMacroLabel" description="Label for %goto"/>
<region name="SASMacroRef" description="Macro reference"/>
<region name="SASMacroVar" description="Macro variable reference"/>
<region name="SASStatement" description="Ordinary statement"/>
<region name="SASStatementLabel" description="Statement label for goto and link"/>
<region name="SASStepBoundary" description="Data or proc step boundary"/>
<region name="SASString" description="String literal"/>
<region name="SASSyntaxError" description="Syntax Error"/>

<entity name="sasExpressionEnds" value="\)|\]|\}"/>
<entity name="sasDataOrIMLEnds" value="\b(end)\s*\;|finish\b|%sasExpressionEnds;"/>
<entity name="sasMacroEnds" value="\%(end|mend)\b"/>
<entity name="sasMacroStatements" value="\%(abort|return|if|do|macro|local|goto|copy|display|global|input|include|let|put|symdel|syscall|sysexec|syslput|sysrput|window)\b"/>
<entity name="sasStepStarts" value="\b(data|proc)(\s*\=)?!\b"/>
<entity name="sasQuitProcEnd" value="((\b(quit)\s*\;|(%sasStepStarts;|%sasMacroEnds;)?=))"/>

<scheme name="sas">
<inherit scheme="sasAnywhere"/>
<inherit scheme="sasGlobalStatements"/>
<block scheme="sasData"
start="/\b(((?{procname}data)\b(\s*\=)?!\s*([\w\.]*)))\b/i" region01="SASStepBoundary" region02="def:PairStart" region00="def:Outlined"
end="/((\b(run)\s*\;|(%sasStepStarts;|%sasMacroEnds;)?=))/i" region11="SASStepBoundary" region12="def:PairEnd"
/>
<block scheme="sasIML"
start="/\b((proc\s+(?{procname}iml)))\b/i" region01="SASStepBoundary" region02="def:PairStart" region00="def:Outlined"
end="/%sasQuitProcEnd;/i" region11="SASStepBoundary" region12="def:PairEnd"
/>
<block scheme="sasSQL"
start="/\b((proc\s+(?{procname}sql)))\b/i" region01="SASStepBoundary" region02="def:PairStart" region00="def:Outlined"
end="/%sasQuitProcEnd;/i" region11="SASStepBoundary" region12="def:PairEnd"
/>
<block scheme="sasQuitProc"
start="/\b((proc\s+(?{procname}access|catalog|datasets|dbload|gdevice|greplay|plot|pmenu|quest)))\b/i" region01="SASStepBoundary" region02="def:PairStart" region00="def:Outlined"
end="/%sasQuitProcEnd;/i" region11="SASStepBoundary" region12="def:PairEnd"
/>
<block scheme="sasProc"
start="/\b((proc\s+(?{procname}\w+)))\b/i" region01="SASStepBoundary" region02="def:PairStart" region00="def:Outlined"
end="/((\b(run|quit)\s*\;|(%sasStepStarts;|%sasMacroEnds;)?=))/i" region11="SASStepBoundary" region12="def:PairEnd"
/>
</scheme>

<scheme name="sasDataOrIML">
<block scheme="sasInStatement"
start="/\b(if)\b/i"
end="/(\;|(\bthen\b)?=)/i" region00="SASBlockBoundary" region12="SASBlockBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<block scheme="sasDo"
start="/\b((((then|else)\s+)?do\b(\s+(\w+\=?=|(until|while|data)\b))?))/i" region01="SASBlockBoundary" region02="def:PairStart" region00="SASOutlined"
end="/\b((end\s*\;))|(%sasMacroEnds;)?=/i" region11="SASBlockBoundary" region10="def:PairEnd"
/>
<block scheme="sasSelect"
start="/\b((((then|else)\s+)?select(\s*(\;|\())?=))\b/i" region01="SASBlockBoundary" region02="def:PairStart" region00="SASOutlined"
end="/\b((end\s*\;))/i" region11="SASBlockBoundary" region12="def:PairEnd"
/>
<block scheme="sasInStatement"
start="/\b(abend|abort|delete|return|return|stop)\b/i"
end="/(\;)/" region00="SASBlockBoundary" region10="SASBlockBoundary" region01="def:PairStart" region11="def:PairEnd"/>
<keywords region="SASBlockBoundary" ignorecase="yes">
<word name='else'/>
<word name='then'/>
</keywords>
<block scheme="sasInStatement"
start="/\b(array|by|drop|informat|keep|length|rename|retain|where)(\s*\=)?!\b/i"
end="/(\;)/" region00="SASDeclarative" region10="SASDeclarative" region01="def:PairStart" region11="def:PairEnd"/>
<block scheme="sasInStatement"
start="/\b(call|declare|describe|display|error|execute|file|infile|input|list|lostcard|merge|modify|_new_|output|put|putlog|redirect|remove|replace|set|update)(\s*\=)?!\b/i"
end="/(\;)/" region00="SASStatement" region10="SASStatement" region01="def:PairStart" region11="def:PairEnd"/>
<regexp match="/\b(go\s*to|link)\s+(\w+)\s*\;/i" region1="SASBlockBoundary" region2="SASStatementLabel" priority="low"/>
<block scheme="sasEmptyBlock" priority="low"
start="/\b(\w+\s*\:)/i" end="//" region00="SASStatementLabel" region01="def:Outlined"/>
<regexp match="/%sasDataOrIMLEnds;/i" region="SASSyntaxError" priority="low"/>
<inherit scheme="sasInner"/>
<inherit scheme="sasGlobalStatements"/>
</scheme>

<scheme name="sasDo">
<inherit scheme="sasDataOrIML"/>
<block scheme="sasDo"
start="/\b(((continue|leave)\s*\;))/i" region01="SASBlockBoundary" region02="def:PairStart"
end="/(((\b(end)\s*\;)?=))/i" region12="def:PairEnd"
/>
</scheme>
<scheme name="sasSelect">
<inherit scheme="sasDataOrIML"/>
<block scheme="sasSelect"
start="/\b(((leave)\s*\;))/i" region01="SASBlockBoundary" region02="def:PairStart"
end="/(((\b(end)\s*\;)?=))/i" region12="def:PairEnd"
/>
<keywords region="SASBlockBoundary" ignorecase="yes">
<word name='otherwise'/>
<word name='when'/>
</keywords>
</scheme>

<scheme name="sasData">
<inherit scheme="sasDataOrIML"/>
<block scheme="sasDatalines"
start="/\b(((cards|cards4|datalines|datalines4)\s*))(\;)?=/i" region01="SASStepBoundary" region02="def:PairStart" region00="def:Outlined"
end="/(((^\s*(run\s*\;|quit\s*\;|data|proc|\;))?=))/i" region12="def:PairEnd"
/>
</scheme>
<scheme name="sasDatalines">
<regexp match="/^.*/" priority="low" region="SASDataline"/>
</scheme>

<scheme name="sasProc">
<inherit scheme="sasInner"/>
<inherit scheme="sasGlobalStatements"/>
</scheme>
<scheme name="sasQuitProc">
<inherit scheme="sasProc"/>
<block scheme="sasEmptyBlock" priority="low"
start="/\b(run)\s*\;/i" end="//" region00="SASBlockBoundary" region01="def:Outlined"/>
</scheme>
<scheme name="sasIML">
<block scheme="sasIML"
start="/\b((start(\s+(?{modulename}\w+))?))\b/i" region01="SASStepBoundary" region02="def:PairStart" region00="def:Outlined"
end="/\b((finish(\s+\y{modulename})?\s*\;))|(%sasMacroEnds;)?=/i" region11="SASStepBoundary" region10="def:PairEnd"
/>
<block scheme="sasInStatement"
start="/\b(pause|reset|return)\b/i"
end="/(\;)/" region00="SASBlockBoundary" region10="SASBlockBoundary" region01="def:PairStart" region11="def:PairEnd"/>
<block scheme="sasInStatement"
start="/\b(append|close|closefile|create|delete|display|edit|find|force|free|index|load|mattrib|print|purge|put|read|remove|replace|resume|save|setin|setout|show|sort|store|summary|use)(\s*\=)?!\b/i"
end="/(\;)/" region00="SASStatement" region10="SASStatement" region01="def:PairStart" region11="def:PairEnd"/>
<inherit scheme="sasQuitProc"/>
<inherit scheme="sasDataOrIML"/>
</scheme>
<scheme name="sasSQL">
<inherit scheme="sasQuitProc"/>
<inherit scheme="sql:sql"/>
</scheme>

<scheme name="sasGlobalStatements">
<block scheme="sasEmptyBlock" priority="low"
start="/\b((title))\b\s*([^;]*)?=/i" end="/(\;)/" region02="SASDeclarative" region03="def:Outlined" region01="def:PairStart" region11="def:PairEnd"/>
<block scheme="sasInStatement"
start="/\b(attrib|format|label|catname|filename|goptions|libname|lock|ods|option|options|page|sasfile|skip|x|(axis|footnote|legend|pattern|symbol|title)[0-9]{0,2})(\s*\=)?!\b/i"
end="/(\;)/" region00="SASDeclarative" region10="SASDeclarative" region01="def:PairStart" region11="def:PairEnd"/>
</scheme>

<scheme name="sasMacroDef">
<inherit scheme="sasMacroInner"/>
<inherit scheme="sas"/>
<inherit scheme="sasDataOrIML"/>
</scheme>

<scheme name="sasMacroInner">
<block scheme="sasMacroDef"
start="/(((\%(then|else)\s*)?\%do\s*\;))/i" region01="SASMacroBlockBoundary" region02="def:PairStart"
end="/((\%end\s*\;))/i" region11="SASMacroBlockBoundary" region10="def:PairEnd"
/>
<block scheme="sasMacroDoLoop"
start="/(((\%(then|else)\s*)?\%do((\s+\w+(\s*\=)?=))))\b/i" region01="SASMacroBlockBoundary" region02="def:PairStart" region00="SASMacroOutlined"
end="/((\%end\s*\;))/i" region11="SASMacroBlockBoundary" region10="def:PairEnd"
/>
<block scheme="sasMacroDoUntilWhile"
start="/(((\%(then|else)\s*)?\%do((\s*\%(until|while)(\s*\()?=))))\b/i" region01="SASMacroBlockBoundary" region02="def:PairStart" region00="SASMacroOutlined"
end="/((\%end\s*\;))/i" region11="SASMacroBlockBoundary" region10="def:PairEnd"
/>
<block scheme="sasInMacroStatement"
start="/(\%(abort|return))\b/i"
end="/\;/" region00="SASMacroBlockBoundary" region10="SASMacroBlockBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<block scheme="sasInMacroStatement"
start="/(\%if)\b/i"
end="/((\%then\b)?=)/i" region00="SASMacroBlockBoundary" region12="SASMacroBlockBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<block scheme="sasMacroDef"
start="/(\%(else|then)(\s*%sasMacroStatements;)?!)\b/i"
end="/(\;|$)/i" region00="SASMacroBlockBoundary" region10="SASMacroBlockBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<block scheme="sasInMacroStatement"
start="/(\%local)\b/i"
end="/(\;)/" region00="SASMacroRef" region10="SASMacroRef" region01="def:PairStart" region11="def:PairEnd"
/>
<!-- <regexp match="/\%(else)\b/i" region="SASMacroBlockBoundary"/>-->
<regexp match="/((\%(then|else)\s*)?\%go\s*to)\s+(\w+)\s*\;/i" region1="SASMacroBlockBoundary" region4="SASMacroLabel"/>
<block scheme="sasEmptyBlock"
start="/(\%\w+\s*\:)/i" end="//" region00="SASMacroLabel" region01="def:Outlined"
/>
</scheme>

<scheme name="sasMacroMacro">
<block scheme="sasInMacroStatement"
start="/~\s*(\()/i" region00="SASMacroDefBoundary"
end="/(\)\s*\;)/" region10="SASMacroDefBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<inherit scheme="sasMacroDef"/>
</scheme>

<scheme name="sasMacroDoLoop">
<block scheme="sasInMacroStatement"
start="/~\s*(\=)/i"
end="/(\%to\b)/" region10="SASMacroDefBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<block scheme="sasInMacroStatement"
start="/~|(\%to)?#3/"
end="/(\;)/" region10="SASMacroDefBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<inherit scheme="sasMacroDef"/>
</scheme>
<scheme name="sasMacroDoUntilWhile">
<block scheme="sasInMacroStatement"
start="/(\()/i" region00="SASMacroDefBoundary"
end="/(\)\s*\;)/" region10="SASMacroDefBoundary" region01="def:PairStart" region11="def:PairEnd"
/>
<inherit scheme="sasMacroDef"/>
</scheme>

<scheme name="sasInner">
<inherit scheme="sasMacroInner"/>
<inherit scheme="sasAnywhere"/>
</scheme>

<scheme name="sasAnywhere">
<block scheme="sasMacroMacro"
start="/((\%macro\s+(?{macroname}\w+)))(\s*(\(|\;|\/))?=\b/i" region01="SASMacroDefBoundary" region00="def:PairStart" region02="def:Outlined"
end="/((\%mend(\s+\y{macroname})?\s*\;))/i" region11="SASMacroDefBoundary" region12="def:PairEnd"
/>
<block scheme="sasInMacroStatement"
start="/((\%(else|then)\s*)?(\%(copy|display|global|include|input|let|put|symdel|syscall|sysexec|syslput|sysrput|window)))\b/i"
end="/(\;)/" region02="SASMacroBlockBoundary" region04="SASMacroRef" region10="SASMacroRef" region00="def:PairStart" region11="def:PairEnd"
/>
<regexp match="/\;/" region="SASStatement" priority="low"/>
<inherit scheme="sasInMacroStatement"/>
</scheme>

<scheme name="sasInStatement">
<inherit scheme="sasInner"/>
<inherit scheme="sasInMacroStatement"/>
</scheme>
<scheme name="sasInMacroStatement">
<block start="/\/\*/" end="/\*\//" scheme="sasComment"
region="SASComment" region00="PairStart" region10="PairEnd"
/>
<block start="/\%\*/" end="/\;/" scheme="sasComment"
region="SASComment" region00="PairStart" region10="PairEnd"
/>

<block scheme="sasNRQuote"
start="/(\%(nrbquote|nrquote|nrstr|superq)\s*\()/i"
end="/(\))/i" region00="SASMacroRef" region10="SASMacroRef" region01="def:PairStart" region11="def:PairEnd"
/>
<block scheme="sasQuote"
start="/(\%(bquote|quote|str)\s*\()/i"
end="/(\%?~1\))/i" region00="SASMacroRef" region10="SASMacroRef" region01="def:PairStart" region11="def:PairEnd"
/>
<block scheme="sasString" start="/\'/" end="/\'/" region00="def:PairStart" region10="def:PairEnd"/>
<block scheme="sasString" start='/\"/' end='/\"/' region00="def:PairStart" region10="def:PairEnd"/>

<block scheme="sasInStatement" start="/(\w+\s*)?\(/" end="/\)/" region00="def:PairStart" region10="def:PairEnd" priority="low"/>
<block scheme="sasInStatement" start="/(\w+\s*)?\[/" end="/\]/" region00="def:PairStart" region10="def:PairEnd" priority="low"/>
<block scheme="sasInStatement" start="/(\w+\s*)?\{/" end="/\}/" region00="def:PairStart" region10="def:PairEnd" priority="low"/>
<block start="/&\w?=/" end="/\w+\b\.?/" scheme="sasEmptyBlock"
region="SASMacroVar" region00="PairStart" region10="PairEnd"
/>
<regexp match="/%sasMacroEnds;|%sasExpressionEnds;|%sasMacroStatements;/i" region="SASSyntaxError" priority="low"/>
<block scheme="sasInStatement"
start="/(\%\w+\s*\()/i"
end="/(\))/" region00="SASMacroRef" region10="SASMacroRef" region01="def:PairStart" region11="def:PairEnd"
/>
<regexp match="/\%\w+\b/i" region="SASMacroRef" priority="low"/>
</scheme>

<scheme name="sasString">
<block start="/&\w?=/" end="/\w+\b\.?/" scheme="sasEmptyBlock"
region="SASMacroVar" region00="PairStart" region10="PairEnd"
/>
<regexp match="/.*/" priority="low" region="SASString"/>
</scheme>
<scheme name="sasComment">
<regexp match="/.*/" priority="low" region="SASComment"/>
</scheme>
<scheme name="sasNRQuote">
<block scheme="sasNRQuote" start="/\(/" end="/\)/" region="SASString" region00="def:PairStart" region10="def:PairEnd"/>
<regexp match="/[^\(]*/" priority="low" region="SASString"/>
</scheme>
<scheme name="sasQuote">
<block start="/&\w?=/" end="/\w+\b\.?/" scheme="sasEmptyBlock"
region="SASMacroVar" region00="PairStart" region10="PairEnd"
/>
<block scheme="sasQuote" start="/\%?~1\(/" end="/\%?~1\)/" region="SASString" region00="def:PairStart" region10="def:PairEnd"/>
<regexp match="/[^\(]*/" priority="low" region="SASString"/>
</scheme>

<scheme name="sasEmptyBlock">
<inherit scheme="sasAnywhere"/>
</scheme>

</type>
</hrc>

Kleine Verbesserung / Beschreibung der .hrc-File-Syntax

Habe dies jetzt mal unter Linux probiert und es funktioniert dort komischerweise nur, wenn man die 3 Vorkommen des &-Zeichens gegen Ende der .hrc-Datei durch \x26 ersetzt.

Die Syntax für die .hrc-Files befindet sich übrigens hier: http://colorer.sourceforge.net/hrc-ref/index.html

Plugin funktioniert bei mir nicht

Hallo,

leider habe ich wenig Erfahrung mit Eclipse, bin relative neu im SAS-Umfeld und habe nun versucht, die obigen Informationen irgendwie umzusetzen.
Leider klappt es nicht.
Ich habe das Plugin installiert, sehe Colorer Editor und auch innerhalb der Preference habe ich als Base Language "SAS" sichtbar.
Unter File_Types kann ich bei dem Eintrag SAS sogar als coloring style "SAS syntax colors" angeben.
Alles sieht gut aus.
Nur wenn ich ein SAS-Programm öffen, sehe ich keine Einfärbung der reservierten Worte.

Kann mir jemand einen Tipp geben?
Viele Grüße Jochen Bülow

Funktioniert jetzt

Ich habe so wie Jobst Heitzig ebenfalls das &-Zeichen ersetzt und
siehe da...es funktioniert nun auch bei mir.

Viele Grüße
Jochen Bülow

SAS-Editor "Multi-Edit for SAS" mit versch. Features

Dieser Editor kann SAS-Syntax hervorheben.
Zusätzlich bietet der Editor interaktive Hilfe bei verschiedenen
SAS-Befehlen an.

Außerdem kann der Editor im Hintergrund SAS starten und
anschließend das Log interpretieren (z.B. Show only Errors).

Link= http://www.ezrtools.com/productinfo.shtml

Viele Grüße
Jochen Bülow