Keywords
This commit is contained in:
@@ -694,6 +694,7 @@ begin
|
||||
result := ExecuteAst(root, fibScope);
|
||||
sw.Stop;
|
||||
Memo1.Lines.Add(Format('Result: fib(25) %s (calculated in %d ms)', [result.ToString, sw.ElapsedMilliseconds]));
|
||||
|
||||
UpdateScript;
|
||||
end;
|
||||
|
||||
@@ -920,7 +921,7 @@ begin
|
||||
[
|
||||
TAst.VarDecl(
|
||||
TAst.Identifier('closeSeries'),
|
||||
TAst.MemberAccess(TAst.Identifier('ohlcv'), TAst.Identifier('Close'))
|
||||
TAst.MemberAccess(TAst.Identifier('ohlcv'), TAst.Keyword('Close'))
|
||||
),
|
||||
TAst.VarDecl(
|
||||
TAst.Identifier('currentClose'),
|
||||
|
||||
@@ -18,6 +18,7 @@ uses
|
||||
FMX.StdCtrls,
|
||||
Myc.Data.Scalar,
|
||||
Myc.Data.Value,
|
||||
Myc.Data.Keyword,
|
||||
Myc.Ast.Nodes,
|
||||
Myc.Ast.Visitor,
|
||||
Myc.Ast,
|
||||
@@ -478,7 +479,7 @@ type
|
||||
TAuraRecordLiteralNode = class(TAuraNode)
|
||||
private
|
||||
FNode: IRecordLiteralNode;
|
||||
FFieldNodes: TDictionary<string, TAuraNode>; // Map KeyName -> ValueNode
|
||||
FFieldNodes: TDictionary<IKeyword, TAuraNode>; // Map KeyName -> ValueNode
|
||||
protected
|
||||
procedure SetupNode; override;
|
||||
public
|
||||
@@ -525,9 +526,6 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Myc.Data.Keyword;
|
||||
|
||||
{ TAstVisualizer }
|
||||
|
||||
constructor TAstVisualizer.Create(AWorkspace: TAuraWorkspace; AParentControl: TControl; AExprDepth: Integer);
|
||||
@@ -2032,7 +2030,7 @@ end;
|
||||
function TAuraMemberAccessNode.CreateAst: IAstNode;
|
||||
begin
|
||||
// Re-create identifier from FNode
|
||||
Result := TAst.MemberAccess(FBaseNode.CreateAst, TAst.Identifier(FNode.Member.Name));
|
||||
Result := TAst.MemberAccess(FBaseNode.CreateAst, TAst.Keyword(FNode.Member.Value.Name));
|
||||
end;
|
||||
|
||||
procedure TAuraMemberAccessNode.SetupNode;
|
||||
@@ -2049,7 +2047,7 @@ begin
|
||||
AddLabel(Self, '.');
|
||||
|
||||
// Add member name as a label
|
||||
AddLabel(Self, FNode.Member.Name);
|
||||
AddLabel(Self, FNode.Member.Value.Name);
|
||||
finally
|
||||
EndUpdate;
|
||||
end;
|
||||
@@ -2061,7 +2059,7 @@ constructor TAuraRecordLiteralNode.Create(const AVisualizer: IAstVisualizer; con
|
||||
begin
|
||||
inherited Create(AVisualizer);
|
||||
FNode := ANode;
|
||||
FFieldNodes := TDictionary<string, TAuraNode>.Create;
|
||||
FFieldNodes := TDictionary<IKeyword, TAuraNode>.Create;
|
||||
end;
|
||||
|
||||
destructor TAuraRecordLiteralNode.Destroy;
|
||||
@@ -2075,7 +2073,7 @@ var
|
||||
fields: TArray<TRecordFieldLiteral>;
|
||||
i: Integer;
|
||||
valueNode: TAuraNode;
|
||||
pair: TPair<string, TAuraNode>;
|
||||
pair: TPair<IKeyword, TAuraNode>;
|
||||
begin
|
||||
SetLength(fields, FFieldNodes.Count);
|
||||
i := 0;
|
||||
@@ -2084,7 +2082,7 @@ begin
|
||||
for pair in FFieldNodes do
|
||||
begin
|
||||
valueNode := pair.Value;
|
||||
fields[i] := TRecordFieldLiteral.Create(pair.Key, valueNode.CreateAst);
|
||||
fields[i] := TRecordFieldLiteral.Create(TKeywordNode.Create(pair.Key), valueNode.CreateAst);
|
||||
inc(i);
|
||||
end;
|
||||
Result := TAst.RecordLiteral(fields);
|
||||
@@ -2115,7 +2113,7 @@ begin
|
||||
fieldContainer := AddContainer(Self, loHorizontal, laCenter);
|
||||
|
||||
// Key label
|
||||
keyLabel := AddLabel(fieldContainer, ':' + field.Name);
|
||||
keyLabel := AddLabel(fieldContainer, ':' + field.Key.Value.Name);
|
||||
keyLabel.Font.Style := keyLabel.Font.Style + [TFontStyle.fsBold];
|
||||
keyLabel.StyledSettings := keyLabel.StyledSettings - [TStyledSetting.FontColor];
|
||||
keyLabel.FontColor := TAlphaColors.Mediumvioletred;
|
||||
@@ -2124,7 +2122,7 @@ begin
|
||||
valueNode := FVisualizer.Clone(fieldContainer, FVisualizer.ExprDepth + 1).CallAccept(field.Value);
|
||||
|
||||
// Store for CreateAst
|
||||
FFieldNodes.Add(field.Name, valueNode);
|
||||
FFieldNodes.Add(field.Key.Value, valueNode);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
|
||||
@@ -209,7 +209,7 @@ var
|
||||
baseStr: string;
|
||||
begin
|
||||
baseStr := Node.Base.Accept(Self).AsText;
|
||||
Result := Format('%s.%s', [baseStr, Node.Member.Name]);
|
||||
Result := Format('%s.%s', [baseStr, Node.Member.Value.Name]);
|
||||
end;
|
||||
|
||||
function TAstToTextVisitor.VisitQuasiquote(const Node: IQuasiquoteNode): TDataValue;
|
||||
|
||||
Reference in New Issue
Block a user