C# C语言中所有操作数的列表#

C# C语言中所有操作数的列表#,c#,intellisense,rich-text-editor,operands,C#,Intellisense,Rich Text Editor,Operands,非常简单的问题:如何获取C#中所有操作数的列表?示例: { "return", "break", "if", "case", "switch", ... }; 更难的问题:如何获得所有函数(类型、方法)的列表? { "string", "Math.Abs", "double.IsNaN", "int.ToString", ... }; 我想为CodeDom制作一些类似IntelliSense的东西(一个非常糟糕和肮脏的东西)。因此,用户可以通过将其代码作为文本添加到我的代码中来扩展软件的功能

非常简单的问题:如何获取C#中所有操作数的列表?示例:

{ "return", "break", "if", "case", "switch", ... };
更难的问题:如何获得所有函数(类型、方法)的列表?

{ "string", "Math.Abs", "double.IsNaN", "int.ToString", ... };
我想为CodeDom制作一些类似IntelliSense的东西(一个非常糟糕和肮脏的东西)。因此,用户可以通过将其代码作为文本添加到我的代码中来扩展软件的功能。我给他提供了一个带有某些参数的函数体,他可以使用,但他也应该能够使用任何标准函数,例如,
double.ToString()
Math.PI
。他将代码输入RichTextEditor。我想让他更容易看到语法(突出显示已知的操作数、开/关括号、函数参数)

我已经可以突出显示单词(参数),它看起来很不错,但是突出显示所有内容会很酷。我把它看作是获取操作数/functin/类型/方法的列表,我不知道该怎么做(我可以自己将所有操作数键入数组)

这个问题是否应该重新表述:如何让我自己的智能感知?:-)

附言:一个快速的潜伏甚至没有给我提供一个单一的结果,我实际上有一个问题来阐述我所寻找的

对于关键词,您可以访问规范或MSDN;例如,尽管IIRC存在一些模糊的遗漏。请注意,许多关键字是上下文相关的(意思是:它们可能并不总是关键字),并且关键字可以转义(
string@int=“evil”


对于“所有函数”。。。好的,这里有
assembly.GetTypes()
type.GetMethods()
,等等,还有“循环”。

有两件事你要问:

  • C#关键字-这些是像
    int
    return
    break
    ,和
    string
    -
  • .Net类-这些类包括
    Int32
    Math
    String
    -

  • 这很重,但你可以看看Roslyn项目

    见:

    供参考

    另一种可能的选择是:


    。至于您的“更难的问题”,您可以反映包含的文件,并查看其中包含哪些类型/函数(尽管我不知道您是否真的想这样做…)。至于你的最后一个问题,“如何生成我自己的智能”,这个问题太宽泛了。对于操作数,最简单的解决方案可能是硬编码(没有那么多)。对于函数定义,您可能需要编写一个解析器来读取包含的文件并在其中搜索函数,这是一项大量的工作。投票结束,因为这是你正在付出的巨大努力的翻版;)伊莫·罗斯林是你最好的选择:对不起,我到现在还不在。我第一次听说罗斯林(VSTA?)。您是否可以提供一个简单的示例,或者至少提供一个语法高亮显示的示例。除此之外,我不需要太多其他功能,Roslyn在我看来是一个过火的人。还有关于再分配的问题(应该包括什么,是免费的,等等)。我倾向于使用专门的解决方案,我喜欢在实际制作时使用它们。使用图书馆可以满足您的需要,但您仍然不知道它是如何实现的。我知道
    @
    ,而且比较容易检查。我已经提到的硬编码操作数。ಠ_ಠ 既然你现在到处闲逛,而不是像搜索引擎一样浪费时间。你可能是他唯一的希望。谢谢。因此,硬编码的操作数列表、生成的函数列表和一些检查(针对
    @
    和字符串)似乎是可行的方法。我不希望用户编写复杂或高级的代码。我只是想让一些东西看起来比纯文本更好。使用
    AppDomain.CurrentDomain.getAssemblys()
    …GetTypes()
    …GetMethods()
    循环获取列表似乎会有帮助,谢谢。然而,有一些垃圾类型和方法名称,但我应该弄清楚如何过滤它们。谢谢。创建一个网络框架类库的硬编码列表是可能的,但是太多了=D我宁愿用编程的方式来处理这个列表。谢谢,但是这两个都是多余的。它们是巨大的专业库,我只需要语法highlightning。