AL/grammar/alsyntax.tmlanguage

247 строки
8.0 KiB
Plaintext

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<!--Naming conventions here: https://manual.macromates.com/en/language_grammars#naming_conventions-->
<dict>
<key>fileTypes</key>
<array>
<string>al</string>
<string>dal</string>
</array>
<key>name</key>
<string>al</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(?i:(ARRAY|ASSERTERROR|BEGIN|BREAK|CASE|DO|DOWNTO|ELSE|END|EVENT|EXIT|FOR|FOREACH|FUNCTION|IF|IMPLEMENTS|IN|INDATASET|INTERFACE|INTERNAL|LOCAL|OF|PROCEDURE|PROGRAM|PROTECTED|REPEAT|RUNONCLIENT|SECURITYFILTERING|SUPPRESSDISPOSE|TEMPORARY|THEN|TO|TRIGGER|UNTIL|VAR|WHILE|WITH|WITHEVENTS))\b</string>
<key>name</key>
<string>keyword.control.al</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(AND|DIV|MOD|NOT|OR|XOR))\b</string>
<key>name</key>
<string>keyword.operators.al</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(AVERAGE|CONST|COUNT|EXIST|FIELD|FILTER|LOOKUP|MAX|MIN|ORDER|SORTING|SUM|TABLEDATA|UPPERLIMIT|WHERE|ASCENDING|DESCENDING))\b</string>
<key>name</key>
<string>keyword.other.property.al</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(CODEUNIT|PAGE|PAGEEXTENSION|PAGECUSTOMIZATION|DOTNET|ENUM|ENUMEXTENSION|VALUE|QUERY|REPORT|TABLE|TABLEEXTENSION|XMLPORT|PROFILE|CONTROLADDIN|REPORTEXTENSION|INTERFACE|PERMISSIONSET|PERMISSIONSETEXTENSION|ENTITLEMENT))\b</string>
<key>name</key>
<string>keyword.other.applicationobject.al</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(Action|ActionRef|Array|Automation|BigInteger|BigText|SecretText|Blob|Boolean|Byte|Char|ClientType|Code|Codeunit|CompletionTriggerErrorLevel|ConnectionType|CustomAction|Database|DataClassification|DataScope|DataTransfer|Date|DateFormula|DateTime|Decimal|DefaultLayout|Dialog|Dictionary|DotNet|DotNetAssembly|DotNetTypeDeclaration|Duration|Enum|ErrorInfo|ErrorType|ExecutionContext|ExecutionMode|FieldClass|FieldRef|FieldType|File|FilterPageBuilder|Guid|InStream|Integer|IsolationLevel|Joker|KeyRef|List|Media|MediaSet|ModuleDependencyInfo|ModuleInfo|None|Notification|NotificationScope|ObjectType|Option|OutStream|Page|PageResult|Query|Record|RecordId|RecordRef|Report|ReportFormat|SecurityFilter|SecurityFiltering|SystemAction|Table|TableConnectionType|TableFilter|TestAction|TestField|TestFilterField|TestPage|TestPermissions|TestRequestPage|Text|TextBuilder|TextConst|TextEncoding|Time|TransactionModel|TransactionType|Variant|Verbosity|Version|XmlPort|HttpContent|HttpHeaders|HttpClient|HttpRequestMessage|HttpResponseMessage|JsonToken|JsonValue|JsonArray|JsonObject|View|Views|XmlAttribute|XmlAttributeCollection|XmlComment|XmlCData|XmlDeclaration|XmlDocument|XmlDocumentType|XmlElement|XmlNamespaceManager|XmlNameTable|XmlNode|XmlNodeList|XmlProcessingInstruction|XmlReadOptions|XmlText|XmlWriteOptions|WebServiceActionContext|WebServiceActionResultCode|SessionSettings|PageBackgroundTaskErrorLevel))\b</string>
<key>name</key>
<string>keyword.other.builtintypes.al</string>
</dict>
<dict>
<key>match</key>
<string>\b([&lt;&gt;]=|&lt;&gt;|&lt;|&gt;)\b</string>
<key>name</key>
<string>keyword.operators.comparison.al</string>
</dict>
<dict>
<key>match</key>
<string>\b(\-|\+|\/|\*)\b</string>
<key>name</key>
<string>keyword.operators.math.al</string>
</dict>
<dict>
<key>match</key>
<string>\s*(\:=|\+=|-=|\/=|\*=)\s*</string>
<key>name</key>
<string>keyword.operators.assigment.al</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(ADD|ADDFIRST|ADDLAST|ADDAFTER|ADDBEFORE|ACTION|ACTIONS|AREA|ASSEMBLY|CHARTPART|CUEGROUP|CUSTOMIZES|COLUMN|DATAITEM|DATASET|ELEMENTS|EXTENDS|FIELD|FIELDGROUP|FIELDATTRIBUTE|FIELDELEMENT|FIELDGROUPS|FIELDS|FILTER|FIXED|GRID|GROUP|MOVEAFTER|MOVEBEFORE|KEY|KEYS|LABEL|LABELS|LAYOUT|MODIFY|MOVEFIRST|MOVELAST|MOVEBEFORE|MOVEAFTER|NAMESPACE|PART|RENDERING|REPEATER|USERCONTROL|REQUESTPAGE|SCHEMA|SEPARATOR|SYSTEMPART|TABLEELEMENT|TEXTATTRIBUTE|TEXTELEMENT|TYPE|USING))\b</string>
<key>name</key>
<string>keyword.other.metadata.al</string>
</dict>
<dict>
<key>match</key>
<string>\s*[(\.\.)&amp;\|]\s*</string>
<key>name</key>
<string>keyword.operators.property.al</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.applicationobject.al</string>
</dict>
</dict>
<key>match</key>
<string>\b(?i:(CODEUNIT|PAGE|QUERY|REPORT|TABLE|XMLPORT))\b</string>
<key>name</key>
<string>meta.applicationobject.al</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.al</string>
</dict>
</dict>
<key>match</key>
<string>\b(?i:(trigger|procedure))\b\s+(\w+(\.\w+)?)(\(.*?\))?;\s*</string>
<key>name</key>
<string>meta.function.al</string>
</dict>
<dict>
<key>match</key>
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string>
<key>name</key>
<string>constant.numeric.al</string>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=//)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.al</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>//</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.al</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.double-slash.al.two</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.directive.leading.al</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.directive.al</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.al.two</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.al</string>
</dict>
</dict>
<key>end</key>
<string>\*/\n?</string>
<key>name</key>
<string>comment.block.al.one</string>
</dict>
<dict>
<key>applyEndPatternLast</key>
<integer>1</integer>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.al</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.al</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.al</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>''</string>
<key>name</key>
<string>constant.character.escape.apostrophe.al</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>[;:,]</string>
<key>name</key>
<string>punctuation.al</string>
</dict>
<dict>
<key>applyEndPatternLast</key>
<integer>1</integer>
<key>begin</key>
<string>"</string>
<key>end</key>
<string>"</string>
</dict>
</array>
<key>scopeName</key>
<string>source.al</string>
<key>uuid</key>
<string>E52FB544-6C1C-11D9-A527-000D94689BF6</string>
</dict>
</plist>