解析 Roslyn 中的嵌入表达式

2024-04-26

我正在尝试为类似 QML 的标记语言编写一个解析器,并且我希望允许在标记中使用 C# 表达式。因此,一个示例可能如下所示:

ClassName {
    Property1: 10
    Property2: Math.Sqrt(123)
    Property3: string.Format("{0} {1}", "Hello", "World")
}

(这也有点像 ASP.NET 的 Razor 引擎,但 afaics Razor 不使用 Roslyn?)

我该怎么做?我只想解析一个表达式,无论是文字、方法调用、lambda 等。我尝试过使用CSharpSyntaxTree.ParseText但这需要一个完整的文件,并且我找不到任何似乎与此用例相关的文档。


你需要打电话CSharpSyntaxTree.ParseText(),并通过一个CSharpParseOptions with SourceCodeKind.Interactive,它允许顶级表达式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析 Roslyn 中的嵌入表达式 的相关文章

随机推荐

  • 更改 Mac 上的默认 python 版本 - 安装 Biopython

    我的 Mac 预装了 python 2 7 作为默认的 python 版本 但是 许多软件包和软件不再支持该版本 我搜索了几个在线论坛 了解如何更改 mac 上的默认 python 版本 但是 它们似乎都不起作用 我还安装了最新版本的 py
  • 如何使用 Validators 类在 Angular2 中显示不同的电子邮件验证消息?

    我在用表格组 表单生成器 and 验证者类来验证 Angular2 应用程序中的表单 这就是我定义电子邮件和密码验证所需的验证规则的方式 export class LoginComponent implements OnInit login
  • 在 mac OS X 上挂载批准回调

    我想在 Mac OS X 上授权 USB CD 现在我使用 DiskArbitration 框架在用户模式下获取 MountApprovalCallback 但这个回调的问题在于它没有保证 如果我会得到回调我正在使用CFUserNotifi
  • Twig 用实体替换非 ASCII 字符

    嗯 这真的很奇怪 Twig 我在 Symfony 3 中使用它 将非 ascii 字符 例如 替换为实体 例如 322 但是 仅在 Javascript 部分 我不知道为什么以及如何禁用它 编辑 是的 我在 Netbeans 和 HTML
  • node_modules/@types/googlemaps/index.d.ts 中出现错误 - 元组类型元素列表不能为空

    在尝试整合的同时角度谷歌地图 agm在我的 Angular 项目中 我收到此错误 某些配置有问题或者可能是我错过了一些东西我正在这个项目中使用材料 6 和角度 6 感谢您的帮助 在终端控制台中 ERROR in node modules t
  • Java 用户帐户管理解决方案

    我目前正在开发一个依赖权限机制来管理用户内容的 Java Web 应用程序 这当然意味着我们需要管理用户 我们当前的用户管理系统是一个内部系统 用于管理 RDBMS 中有关用户 组以及用户和权限的信息 该系统可以工作 但维护起来很麻烦 我想
  • HTML 时间输入类型 - 如何在单击任意位置而不仅仅是单击时钟图标时选择时间菜单视图

    I working on the time input type in HTML my problem is when I click on the small clock icon on the right side of the inp
  • AES-256 加密和 Apple iTunes 导出限制

    我有一个很大的问题 我开发了 3 个应用程序 2 个用于 IOS 1 个用于 mac osx 来加密文件RNCryptor https github com rnapier RNCryptor 女巫是一个CCCryptor AES 加密 包
  • CUDA Visual Studio 2010 Express 构建错误

    我正在尝试在 64 位 Windows 7 上使用 Visual Studio 2010 Express 在 Windows 上开始 CUDA 编程 我花了一段时间来设置环境 然后我刚刚编写了我的第一个程序 helloWorld cu 目前
  • EntityDataSource 在查询中将 * 替换为 % 通配符

    我有一个在很多地方使用 EntityDataSource 的应用程序 在 EDS 中 我根据 TextBox 中的用户输入手动构建Where 子句 我希望用户在查询数据时能够输入 星号 而不是 有没有像使用 Entity SQL 或 EDS
  • .crx 文件在 Chrome 中安装

    我刚刚创建了一个非常简单的 chrome 扩展 它运行良好 但是当我转换为 crx 文件并尝试用 chrome 打开它时 没有任何反应 我的chrome浏览器版本是19 0 1081 2 dev m 我的扩展使用jquery 1 4 2 m
  • NSFileHandle writeData:异常处理

    这可能是一个相当广泛的问题 但我找不到任何在线资源来解决或解释这个问题 问题是创建后NSFileHandle writer NSFileHandle fileHandleForWritingAtPath path 当你使用 writer w
  • Pandas.DataFrame interpolate() 方法='线性'和'最近'返回尾随 NaN 不一致的结果

    我在探索pandas DataFrame interpolate 用不同的方法 linear vs nearest 当尾部缺少数据时 我发现这两种方法的输出不同 例如 import pandas as pd version 0 16 2 o
  • Ruby on Rails 3:如何分别检索 POST 和 GET 参数?

    我知道你可以使用获取参数params 但问题是它合并了所有参数 无论它们是通过GET or POST 如果您通过以下方式发送请求GET 没问题 参数只能挤在URL里 但如果你发送一个POST具有类似 URL 的请求 blabla foo b
  • Puppeteer 无法在谷歌云功能中工作

    Puppeteer 无法在谷歌云中工作 镀铬错误如图所示 我已经在这里实施了该建议 Heroku 上的 Puppeteer 错误 找不到 Chromium https stackoverflow com questions 74385208
  • 致命信号11(和引擎项目)

    我正在创建由 andengine 框架提供支持的 android 游戏 box2d 扩展我收到 致命信号 11 这似乎是突然发生的 我想你可以随机称呼它 没有任何线索 至少 我不知道有任何线索可以帮助我解决这个问题 我的猜测是 1 我正在使
  • ASP.Net MVC 部分视图保持其模型状态?

    这可能又是一个新手问题 当我创建 ASP NET MVC2 应用程序时 会创建一个具有操作登录的帐户控制器 如下所示 HttpPost public ActionResult LogOn LogOnModel model string re
  • Laravel - 重定向到页面并滚动到页面底部

    我使用 Laravel 框架 在我的控制器中我有 return Redirect route home 这是重定向到主页 但我想实现页面在重定向时向下滚动以查看页脚 就像是href home footer 有办法吗 您可以生成路由的 URL
  • 如何在Python中一次读取一个字符串中的一个字母

    我需要将用户输入的字符串转换为莫尔斯电码 我们的教授希望我们这样做的方法是从 morseCode txt 文件中读取 将 morseCode 中的字母分成两个列表 然后将每个字母转换为莫尔斯电码 当有空格时插入新行 我有开始 它的作用是读取
  • 解析 Roslyn 中的嵌入表达式

    我正在尝试为类似 QML 的标记语言编写一个解析器 并且我希望允许在标记中使用 C 表达式 因此 一个示例可能如下所示 ClassName Property1 10 Property2 Math Sqrt 123 Property3 str