【发布时间】:2016-07-14 17:30:01
【问题描述】:
环境
- Windows 8.1 64 位
- Microsoft Visual Studio
- C#
我想要做什么
用 C# 实现一种迷你语言
我在公司的工作是开发一种软件,可以自动评估公司产品的性能。评估包括打开阀门、流动化学品、从传感器获取信号、计算一些值等......
问题是当用户想要更改程序和参数时,例如反应时间多长,打开阀门的顺序,反应管道是否被冲洗掉,程序员必须更改源代码并构建另一个每次用户需要时使用的软件。
所以我正在尝试用 C# 实现一种迷你语言。用户可以用易于理解的语言组织测量过程。用户在一个txt文件中写一段代码,我的软件读取它,解析每一行代码,提取命令和参数,调用软件中对应的方法。
例如,用户编写了一行代码,如open_valve(3),我的软件读取代码并调用内部方法send_commands_to_ADconverter(VALVE, 3),该方法通过连接到计算机的 A/D 转换器向目标阀发送适当的命令。这是我的想法。
但是,由于我缺乏编程技能,我不知道从哪里开始。有哪些可用的技术?实现目标的关键词是什么?我怎样才能实现这个目标?任何帮助,将不胜感激。谢谢。
编辑 1
c# - Adding scripting functionality to .NET applications - Stack Overflow 并不是指通过 A/D 转换器访问传感器、阀门等外部设备,这对我的目的至关重要,因此不清楚这是与上述链接的重复问题。
【问题讨论】:
-
我认为您不需要为此在 C# 中实现迷你语言。我看到您需要一个系统,您可以在其中接受用户输入并在此基础上执行一组操作。如果用户还需要告诉“如何”执行操作,这也可以在不复杂的情况下执行。例如:您可以将委托作为方法中的参数,并且该委托可以从外部传递。
-
至于您的编辑,您向脚本公开什么样的界面并不重要——这完全取决于您。该脚本只是调用您的方法。
-
.Net 可以直接与 VBScript/JScript 集成,你可以在运行时将一个类传递给脚本的上下文,允许用户调用任何你喜欢的方法,Example。