/// <summary> /// Create a new parsed define item according to its type /// </summary> private ParsedDefine NewParsedDefined(string name, ParseFlag flags, Token defineToken, Token endToken, ParsedAsLike asLike, string left, ParseDefineType type, string tempPrimitiveType, string viewAs, string bufferFor, int extent) { // set flags flags |= GetCurrentBlock <ParsedScopeBlock>() is ParsedFile ? ParseFlag.FileScope : ParseFlag.LocalScope; if (type == ParseDefineType.Parameter) { flags |= ParseFlag.Parameter; } if (tempPrimitiveType.Equals("buffer")) { flags |= ParseFlag.Buffer; return(new ParsedBuffer(name, defineToken, asLike, left, type, null, viewAs, bufferFor) { Flags = flags, EndPosition = endToken.EndPosition, PrimitiveType = ParsedPrimitiveType.Buffer }); } var newDefine = new ParsedDefine(name, defineToken, asLike, left, type, tempPrimitiveType, viewAs, extent) { Flags = flags, EndPosition = endToken.EndPosition }; return(newDefine); }
public void Visit(ParsedDefine pars) { AppendEverything(pars); }
/// <summary> /// Defined variables /// </summary> /// <param name="pars"></param> public void Visit(ParsedDefine pars) { pars.PrimitiveType = ConvertStringToParsedPrimitiveType(pars.TempPrimitiveType, pars.AsLike == ParsedAsLike.Like); var subString = pars.PrimitiveType == ParsedPrimitiveType.Unknow ? pars.Type.ToString() : pars.PrimitiveType.ToString(); CompletionType type; switch (pars.Type) { case ParseDefineType.Parameter: type = CompletionType.VariablePrimitive; // To code explorer, program parameters PushToCodeExplorerAsParameter(pars); break; case ParseDefineType.Variable: if (!string.IsNullOrEmpty(pars.ViewAs)) { type = CompletionType.Widget; } else if ((int)pars.PrimitiveType < 30) { type = CompletionType.VariablePrimitive; } else { type = CompletionType.VariableComplex; } break; case ParseDefineType.Button: case ParseDefineType.Frame: case ParseDefineType.Image: case ParseDefineType.SubMenu: case ParseDefineType.Menu: case ParseDefineType.Rectangle: type = CompletionType.Widget; break; case ParseDefineType.Browse: type = CompletionType.Widget; // To explorer code for browse PushToCodeExplorer( GetExplorerListNode("Browse definitions", CodeExplorerIconType.Browse), new BrowseCodeItem { DisplayText = pars.Name, Flags = pars.Flags, SubText = subString, DocumentOwner = pars.FilePath, GoToLine = pars.Line, GoToColumn = pars.Column }); break; default: type = CompletionType.VariableComplex; break; } // to completion data var curItem = CompletionItem.Factory.New(type); curItem.DisplayText = pars.Name; curItem.Flags = pars.Flags; curItem.SubText = subString; PushToAutoCompletion(curItem, pars); }