|
Enhanced C#
Language of your choice: library documentation
|
A list of symbols that are very specific to C# or Enhanced C#. Note: many symbols Loyc.Syntax.CodeSymbols should be in this class instead, but this class was created very belatedly. More...
A list of symbols that are very specific to C# or Enhanced C#. Note: many symbols Loyc.Syntax.CodeSymbols should be in this class instead, but this class was created very belatedly.
Public static fields | |
| static new readonly Symbol | PtrArrow = GSymbol.Get("'->") |
| "'->": a->b <=> ‘’->`(a, b) | |
| static new readonly Symbol | Async = GSymbol.Get("#async") |
| [#async] Task Foo(); <=> async Task Foo(); | |
| static new readonly Symbol | Await = GSymbol.Get("await") |
| await(x); <=> await x; (TENTATIVE: should this be changed to #await?) | |
| static new readonly Symbol | DictionaryInitAssign = GSymbol.Get("'[]=") |
| ‘’[]=‘(0, 1, x) <=> [0,1]=x (only supported in 'new’ initializer blocks) | |
| static readonly Symbol | ForwardPipeArrow = GSymbol.Get("'|>") |
| ‘’|>`(a, b) <=> a |> b | |
| static readonly Symbol | NullForwardPipeArrow = GSymbol.Get("'?|>") |
| ‘’?|>`(a, b) <=> a ?|> b | |
| static new readonly Symbol | TriviaCsRawText = GSymbol.Get("%C#RawText") |
"%C#RawText" - C#RawText("stuff") - Raw text that is only printed by the C# printer (not printers for other languages) | |
| static new readonly Symbol | TriviaCsPPRawText = GSymbol.Get("%C#PPRawText") |
"%C#PPRawText" - C#PPRawText("#stuff") - Raw text that is guaranteed to be preceded by a newline and is only printed by the C# printer | |
| static new readonly Symbol | CsRawText = GSymbol.Get("#C#RawText") |
| static new readonly Symbol | CsPPRawText = GSymbol.Get("#C#PPRawText") |
| "#C#PPRawText" - Preprocessor raw text: always printed on separate line | |
| static readonly Symbol | PPNullable = GSymbol.Get("##nullable") |
| static readonly Symbol | CsiReference = GSymbol.Get("##reference") |
| static readonly Symbol | CsiLoad = GSymbol.Get("##load") |
| static readonly Symbol | CsiCls = GSymbol.Get("##cls") |
| static readonly Symbol | CsiClear = GSymbol.Get("##clear") |
| static readonly Symbol | CsiHelp = GSymbol.Get("##help") |
| static readonly Symbol | CsiReset = GSymbol.Get("##reset") |
Public static fields inherited from Loyc.Syntax.CodeSymbols | |
| static readonly Symbol | Mul = GSymbol.Get("'*") |
| "*" Multiplication (or dereference) | |
| static readonly Symbol | Div = GSymbol.Get("'/") |
| "/" Division | |
| static readonly Symbol | Add = GSymbol.Get("'+") |
| "+" Addition or unary + | |
| static readonly Symbol | Sub = GSymbol.Get("'-") |
| "-" Subtraction or unary - | |
| static readonly Symbol | _Dereference = GSymbol.Get("'*") |
| Alias for Mul. | |
| static readonly Symbol | _Pointer = GSymbol.Get("'*") |
| Alias for Mul. | |
| static readonly Symbol | _UnaryPlus = GSymbol.Get("'+") |
| Alias for Add. | |
| static readonly Symbol | _Negate = GSymbol.Get("'-") |
| Alias for Sub. Infix and prefix operators use same symbol. | |
| static readonly Symbol | PreInc = GSymbol.Get("'++") |
| "++" Unary prefix increment | |
| static readonly Symbol | PreDec = GSymbol.Get("'--") |
| "--" Unary prefix decrement | |
| static readonly Symbol | PostInc = GSymbol.Get("'suf++") |
| "suf++" Unary suffix increment | |
| static readonly Symbol | PostDec = GSymbol.Get("'suf--") |
| "suf--" Unary suffix decrement | |
| static readonly Symbol | Mod = GSymbol.Get("'%") |
| "%" Remainder operator | |
| static readonly Symbol | And = GSymbol.Get("'&&") |
| "&&" Logical short-circuit 'and' operator | |
| static readonly Symbol | Or = GSymbol.Get("'||") |
| "||" Logical short-circuit 'or' operator | |
| static readonly Symbol | Xor = GSymbol.Get("'^^") |
| "^^" Logical 'xor' operator (tentative–this operator is redundant, "!=" is equivalent) | |
| static readonly Symbol | Eq = GSymbol.Get("'==") |
| "==" Equality test operator | |
| static readonly Symbol | NotEq = GSymbol.Get("'!=") |
| "!=" Inequality test operator | |
| static readonly Symbol | Neq = GSymbol.Get("'!=") |
| "!=" Inequality test operator | |
| static readonly Symbol | GT = GSymbol.Get("'>") |
| ">" Greater-than operator | |
| static readonly Symbol | GE = GSymbol.Get("'>=") |
| ">=" Greater-than-or-equal-to operator | |
| static readonly Symbol | LT = GSymbol.Get("'<") |
| "<" Less-than operator | |
| static readonly Symbol | LE = GSymbol.Get("'<=") |
| "<=" Less-than-or-equal-to operator | |
| static readonly Symbol | Matches = GSymbol.Get("'=~") |
| "=~" Pattern match test operator | |
| static readonly Symbol | Compare = GSymbol.Get("'<=>") |
| "<=>" Three-way comparison a.k.a. shaceship operator | |
| static readonly Symbol | Shr = GSymbol.Get("'>>") |
| ">>" Right-shift operator | |
| static readonly Symbol | Shl = GSymbol.Get("'<<") |
| "<<" Left-shift operator | |
| static readonly Symbol | Not = GSymbol.Get("'!") |
| "!" Logical 'not' operator | |
| static readonly Symbol | Assign = GSymbol.Get("'=") |
| "=" Assignment operator | |
| static readonly Symbol | ForwardAssign = GSymbol.Get("'|=>") |
Assignment operator with reversed argument order (designed to resemble the pipe operator |>) | |
| static readonly Symbol | ForwardNullCoalesceAssign = GSymbol.Get("'?|=>") |
| Null-coalescing assignment with reversed argument order. | |
| static readonly Symbol | OrBits = GSymbol.Get("'|") |
| "|" Bitwise or operator | |
| static readonly Symbol | AndBits = GSymbol.Get("'&") |
| "&" Bitwise and operator. Also, address-of (unary &) | |
| static readonly Symbol | _AddressOf = GSymbol.Get("'&") |
| Alias for AndBits. | |
| static readonly Symbol | NotBits = GSymbol.Get("'~") |
| Unary bitwise inversion operator. | |
| static readonly Symbol | _Concat = GSymbol.Get("'~") |
| Alias for NotBits. Concat operator in D. | |
| static readonly Symbol | _Destruct = GSymbol.Get("'~") |
| Alias for NotBits. | |
| static readonly Symbol | XorBits = GSymbol.Get("'^") |
| "^" Bitwise exclusive-or operator | |
| static readonly Symbol | Braces = GSymbol.Get("'{}") |
| "{}" Creates a scope. | |
| static readonly Symbol | IndexBracks = GSymbol.Get("'suf[]") |
| static readonly Symbol | Array = GSymbol.Get("'[]") |
| Used for list/array literals. Not used for attributes. | |
| static readonly Symbol | _Bracks = Array |
| Synonym for Array (‘’[]`) | |
| static readonly Symbol | TwoDimensionalArray = GSymbol.Get("'[,]") |
| int[,] <=> @'of(‘’[,]`, int) | |
| static readonly Symbol | Async = GSymbol.Get("#async") |
| [#async] Task Foo(); <=> async Task Foo(); | |
| static readonly Symbol | Await = GSymbol.Get("await") |
| await(x); <=> await x; (TENTATIVE: should this be changed to #await?) | |
| static readonly Symbol | NullIndexBracks = GSymbol.Get("'?[]") |
| <tt>?[](foo, #(1, A)) <=> foo?[1, A] (TENTATIVE, may be changed later) More... | |
| static readonly Symbol | InitializerAssignment = GSymbol.Get("'[]=") |
| ‘’[]=`(0, 1, x) <=> [0,1]=x | |
| static readonly Symbol | AltList = GSymbol.Get("#") |
# is used for lists of things in definition constructs, e.g. #class(Derived, #(Base, IEnumerable), {...}). For a time, 'tuple was used for this purpose; the problem is that a find-and-replace operation intended to find run-time tuples could accidentally match one of these lists. So I decided to dedicate # for use inside special constructs; its meaning depends on context. More... | |
| static readonly Symbol | _HashMark = GSymbol.Get("#") |
| static readonly Symbol | QuestionMark = GSymbol.Get("'?") |
"'?" Conditional operator. (a?b:c) <=> ‘’?(a,b,c) and int? <=> @'of(@'?`, int) | |
| static readonly Symbol | Of = GSymbol.Get("'of") |
| "'of" for giving generic arguments. @'of(List,int) <=> List<int> | |
| static readonly Symbol | Dot = GSymbol.Get("'.") |
| "'." binary dot operator, e.g. string.Join | |
| static readonly Symbol | NamedArg = GSymbol.Get("'::=") |
| "'::=" Named argument e.g. ‘’::=`(x, 0) <=> x: 0 | |
| static readonly Symbol | New = GSymbol.Get("'new") |
| "'new": new Foo(x) { a } <=> <tt>'new(Foo(x), a); new[] { ... } <=> <tt>'new(<tt>[](), ...) | |
| static readonly Symbol | NewAttribute = GSymbol.Get("#new") |
| "#new": public new void Foo() {} <=> [#public, #new] #fn(#void, Foo, #(), {}) | |
| static readonly Symbol | Out = GSymbol.Get("#out") |
| "#out": out x <=> [#out] x | |
| static readonly Symbol | Ref = GSymbol.Get("#ref") |
| "#ref": ref int x <=> [#ref] #var(#int, x) | |
| static readonly Symbol | Sizeof = GSymbol.Get("'sizeof") |
| "'sizeof" sizeof(int) <=> @'sizeof(int) | |
| static readonly Symbol | Typeof = GSymbol.Get("'typeof") |
| static readonly Symbol | As = GSymbol.Get("'as") |
| "'as": @'as(x,string) <=> x as string <=> x(as string) | |
| static readonly Symbol | Is = GSymbol.Get("'is") |
| "'is": @'is(x,string) <=> x is string, @'is(x,#var(Foo,v),#(y,z)) <=> x is Foo v(y, z) | |
| static readonly Symbol | Cast = GSymbol.Get("'cast") |
| "'cast": @'cast(x,int) <=> (int)x <=> x(-> int) | |
| static readonly Symbol | NullCoalesce = GSymbol.Get("'??") |
| "'??": a ?? b <=> ‘’??`(a, b) | |
| static readonly Symbol | PtrArrow = GSymbol.Get("'->") |
| static readonly Symbol | ColonColon = GSymbol.Get("'::") |
| "'::" Scope resolution operator in many languages | |
| static readonly Symbol | Lambda = GSymbol.Get("'=>") |
| "'=>" used to define an anonymous function | |
| static readonly Symbol | Default = GSymbol.Get("'default") |
| "'default" for the default(T) pseudofunction in C# | |
| static readonly Symbol | IS = GSymbol.Get("'IS") |
Backquoted suffixes in LES3 use this: xbytes <=> 'IS(x, bytes) | |
| static readonly Symbol | NullCoalesceAssign = GSymbol.Get("'??=") |
"'??=": a ??= b means a = a ?? b | |
| static readonly Symbol | MulAssign = GSymbol.Get("'*=") |
| "'*=" multiply-and-set operator | |
| static readonly Symbol | DivAssign = GSymbol.Get("'/=") |
| "'/=" divide-and-set operator | |
| static readonly Symbol | ModAssign = GSymbol.Get("'%=") |
| "'%=" set-to-remainder operator | |
| static readonly Symbol | SubAssign = GSymbol.Get("'-=") |
| "'-=" subtract-and-set operator | |
| static readonly Symbol | AddAssign = GSymbol.Get("'+=") |
| "'+=" add-and-set operator | |
| static readonly Symbol | ConcatAssign = GSymbol.Get("'~=") |
| "'~=" concatenate-and-set operator | |
| static readonly Symbol | ShrAssign = GSymbol.Get("'>>=") |
| "'>>=" shift-right-by operator | |
| static readonly Symbol | ShlAssign = GSymbol.Get("'<<=") |
| "'<<=" shift-left-by operator | |
| static readonly Symbol | ExpAssign = GSymbol.Get("'**=") |
| "'**=" raise-to-exponent-and-set operator | |
| static readonly Symbol | XorBitsAssign = GSymbol.Get("'^=") |
| "'^=" bitwise-xor-by operator | |
| static readonly Symbol | AndBitsAssign = GSymbol.Get("'&=") |
| "'&=" bitwise-and-with operator | |
| static readonly Symbol | OrBitsAssign = GSymbol.Get("'|=") |
| "'|=" set-bits operator | |
| static readonly Symbol | If = GSymbol.Get("#if") |
| e.g. #if(c,x,y) and #if(c,x); I wanted it to be the conditional operator too, but the semantics are a bit different | |
| static readonly Symbol | DoWhile = GSymbol.Get("#doWhile") |
| e.g. #doWhile(x++, condition); <=> do x++; while(condition); | |
| static readonly Symbol | While = GSymbol.Get("#while") |
| e.g. #while(condition,{...}); <=> while(condition) {...} | |
| static readonly Symbol | UsingStmt = GSymbol.Get("#using") |
| e.g. #using(expr, {...}); <=> using(expr) {...} (note: use #import or CodeSymbols.Import for a using directive) | |
| static readonly Symbol | For = GSymbol.Get("#for") |
| e.g. #for(int i = 0, i < Count, i++, {...}); <=> for(int i = 0; i < Count; i++) {...} | |
| static readonly Symbol | ForEach = GSymbol.Get("#foreach") |
| e.g. #foreach(#var(@``, n), list, {...}); <=> foreach(var n in list) {...} | |
| static readonly Symbol | Label = GSymbol.Get("#label") |
| e.g. #label(success) <=> success: | |
| static readonly Symbol | Case = GSymbol.Get("#case") |
| e.g. #case(10, 20) <=> case 10, 20: | |
| static readonly Symbol | Return = GSymbol.Get("#return") |
| e.g. #return(x); <=> return x; [#yield] #return(x) <=> yield return x; | |
| static readonly Symbol | Continue = GSymbol.Get("#continue") |
| e.g. #continue(); <=> continue; | |
| static readonly Symbol | Break = GSymbol.Get("#break") |
| e.g. #break(); <=> break; | |
| static readonly Symbol | Goto = GSymbol.Get("#goto") |
| e.g. #goto(label) <=> goto label; | |
| static readonly Symbol | GotoCase = GSymbol.Get("#gotoCase") |
| e.g. #gotoCase(expr) <=> goto case expr; | |
| static readonly Symbol | Throw = GSymbol.Get("#throw") |
| e.g. #throw(expr); <=> throw expr; | |
| static readonly Symbol | Checked = GSymbol.Get("#checked") |
| e.g. #checked({ stmt; }); <=> checked { stmt; } | |
| static readonly Symbol | Unchecked = GSymbol.Get("#unchecked") |
| e.g. #unchecked({ stmt; }); <=> unchecked { stmt; } | |
| static readonly Symbol | Fixed = GSymbol.Get("#fixed") |
| e.g. #fixed(#var(@'of(‘’*`, #int32), x = &y), stmt); <=> fixed(int* x = &y) stmt; | |
| static readonly Symbol | Lock = GSymbol.Get("#lock") |
| e.g. #lock(obj, stmt); <=> lock(obj) stmt; | |
| static readonly Symbol | Switch = GSymbol.Get("#switch") |
| static readonly Symbol | SwitchStmt = GSymbol.Get("#switch") |
| e.g. #switch(n, { ... }); <=> switch(n) { ... } | |
| static readonly Symbol | SwitchExpr = GSymbol.Get("'switch") |
| e.g. @'switch(x, { ... }); <=> x switch { ... } | |
| static readonly Symbol | Try = GSymbol.Get("#try") |
| e.g. #try({...}, #catch(<tt>, @, {...})); <=> try {...} catch {...} | |
| static readonly Symbol | Catch = GSymbol.Get("#catch") |
| "#catch" catch clause of #try statement: #catch(#var(Exception,e), whenExpr, {...}) | |
| static readonly Symbol | Finally = GSymbol.Get("#finally") |
| "#finally" finally clause of #try statement: #finally({...}) | |
| static readonly Symbol | Class = GSymbol.Get("#class") |
| e.g. #class(Foo, #(IFoo), { }); <=> class Foo : IFoo { } | |
| static readonly Symbol | Struct = GSymbol.Get("#struct") |
| e.g. #struct(Foo, #(IFoo), { }); <=> struct Foo : IFoo { } | |
| static readonly Symbol | Trait = GSymbol.Get("#trait") |
| e.g. #trait(Foo, #(IFoo), { }); <=> trait Foo : IFoo { } | |
| static readonly Symbol | Enum = GSymbol.Get("#enum") |
| e.g. #enum(Foo, #(byte), { }); <=> enum Foo : byte { } | |
| static readonly Symbol | Alias = GSymbol.Get("#alias") |
| static readonly Symbol | Interface = GSymbol.Get("#interface") |
| e.g. #interface(IB, #(IA), { }); <=> interface IB : IA { } | |
| static readonly Symbol | Namespace = GSymbol.Get("#namespace") |
| e.g. #namespace(NS, @``, { }); <=> namespace NS { } | |
| static readonly Symbol | Var = GSymbol.Get("#var") |
| e.g. #var(#int32, x = 0, y = 1, z); #var(@``, x = 0) <=> var x = 0; | |
| static readonly Symbol | Event = GSymbol.Get("#event") |
| e.g. #event(EventHandler, Click, { }) <=> event EventHandler Click { } | |
| static readonly Symbol | Delegate = GSymbol.Get("#delegate") |
| e.g. #delegate(#int32, Foo, @'tuple()); <=> delegate int Foo(); | |
| static readonly Symbol | Property = GSymbol.Get("#property") |
| e.g. #property(#int32, Foo, @``, { get; }) <=> int Foo { get; } | |
| static readonly Symbol | Where = GSymbol.Get("#where") |
| "#where" e.g. class Foo<T> where T:class, Foo {} <=> #class(@'of(Foo, [#where(#class, Foo)] T), #(), {}); | |
| static readonly Symbol | This = GSymbol.Get("#this") |
| "#this" e.g. this.X <=> #this.X; this(arg) <=> #this(arg). | |
| static readonly Symbol | Base = GSymbol.Get("#base") |
| "#base" e.g. base.X <=> #base.X; base(arg) <=> #base(arg). | |
| static readonly Symbol | Operator = GSymbol.Get("#operator") |
| e.g. #fn(#bool, [#operator] ‘’==`, #(Foo a, Foo b)) | |
| static readonly Symbol | Implicit = GSymbol.Get("#implicit") |
| e.g. [#implicit] #fn(#int32, [#operator] #cast, (Foo a,)) | |
| static readonly Symbol | Explicit = GSymbol.Get("#explicit") |
| e.g. [#explicit] #fn(#int32, [#operator] #cast, (Foo a,)) | |
| static readonly Symbol | Missing = GSymbol.Empty |
| Indicates that a syntax element was omitted, e.g. Foo(, y) => Foo(@``, y) | |
| static readonly Symbol | Splice = GSymbol.Get("#splice") |
| When a macro returns #splice(a, b, c), the argument list (a, b, c) is spliced into the surrounding code. | |
| static readonly Symbol | Assembly = GSymbol.Get("#assembly") |
| e.g. [assembly: Foo] <=> #assembly(Foo); | |
| static readonly Symbol | Module = GSymbol.Get("#module") |
| e.g. [module: Foo] <=> [Foo] #module; | |
| static readonly Symbol | Import = GSymbol.Get("#import") |
| #import is used instead of #using because the using(...) {...} statement already uses #using More... | |
| static readonly Symbol | Partial = GSymbol.Get("#partial") |
| static readonly Symbol | Yield = GSymbol.Get("#yield") |
| e.g. #return(x); <=> return x; [#yield] #return(x) <=> yield return x; | |
| static readonly Symbol | ArrayInit = GSymbol.Get("#arrayInit") |
| C# e.g. int[] x = {1,2} <=> int[] x = #arrayInit(1, 2) | |
| static readonly Symbol | StackAlloc = GSymbol.Get("#stackalloc") |
| #stackalloc for C# stackalloc (TODO) | |
1.8.17