问题标签 [irony]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R 是否存在现有的 ANTLR 或 IRONY 语法?
有谁知道 R 是否存在现有的 ANTLR 或 IRONY 语法?
非常感谢。
c# - 在 Irony 中定义常量和运算符
我是Irony和整个语言实现 shebang 的新手,所以我一直在玩Irony 源附带的ExpressionEvaluator示例,这似乎(几乎)适合我正在处理的项目的需求。
但是,我希望它也支持布尔值,因此我将比较运算符添加到二元运算符列表中,如下所示:
这是我要实现的目标的示例:
由于添加了二元运算符,它成功解析了上述内容。但是,在编译和运行代码时,它在最后两行失败。
- 该
bool = true
行失败并显示消息:错误:未定义变量 true。在 (5:8)。如何将true和false定义为常量? - 该
bool2 = (eval == eval2)
行失败并显示以下消息:错误:未为 System.Boolean 和 System.Boolean 类型定义运算符“==”。在(6:15)。
编辑:解决了这两个问题,请参阅下面的答案。
c# - 用 Irony 分析 C# 源代码
这就是我和我的团队选择为我们的学校项目做的事情。好吧,实际上我们还没有决定如何解析 C# 源文件。
我们的目标是,对 C# 源文件进行全面分析,并生成报告。报告将在其中包含代码中发生的内容。
报告只需包含:
- 字符串文字
- 方法名称
- 变量名
- 字段名称
- ETC
我负责调查这个 Irony 图书馆。老实说,我不知道将数据整理成清晰可读的报告的最佳方法。我正在使用压缩包中的 C# 语法类。
有没有可以正确识别每个节点子节点的步骤?(例如:使用指令、命名空间声明、类声明等、方法体)
任何帮助或建议将不胜感激。谢谢。
编辑:对不起,我忘了说我们也需要分析方法调用。
c# - Irony Language Toolkit - FreeTextLiteral 用法
我们对文本模板有一些特殊要求,这些要求无法通过任何常见的包(T4、NVelocity、StringTemplate..)来解决。所以我们决定尝试我们自己的,使用 Irony。
鉴于 <%%> 标记内的任何内容都是表达式的简单形式,否则只是文本文字:
我从这个开始:
问题是在解析上面的提取后检查根节点,有两个子节点,它们都是freetextliteral节点。
如何防止 Freetextliteral 消耗所有输入?
谢谢!
c# - 我可以进行包含特殊字符的全文搜索吗?
我在 c# 应用程序中使用讽刺进行全文搜索,效果很好。现在我的需要是我想搜索包含一些特殊字符的文本,例如 [, ], ;, ~, ', \, /, <, >, ,。当我使用上述特殊字符进行搜索时,它显示错误“语法错误,预期:- & () Phrase StringLiteral Term | ~ < and not or (parser state: S5)”。
有没有办法进行包括特殊字符在内的全文搜索?
这是我在此调用期间发生错误的代码:_compiler.Parse(_compilerContext, source);
c# - 遍历具有复杂条件表达式的 ast 以生成 linq 表达式
我正在使用 Irony.net 从源代码中生成解析树。本质上,我将 ExpressionEvaluatorGrammer 类似于 grammer 用于二进制表达式(算术、关系和逻辑/条件)。我想通过遍历将生成的解析树转换为 Linq 表达式。但是,这棵树似乎没有可以直接转换为 linq 条件表达式的格式。这种表达式的假设示例:
生成(为简洁起见,伪 xml 树):
在上面的树中,算术表达式 (4 - 1) 成为 && 逻辑运算的正确表达式,因为父节点在它之后关闭。在理想世界中,它应该是代表“== 3”的节点的左表达式。
您如何遍历这样的树以生成正确的和操作?或者,有没有办法以我想要的形式生成树?
编辑:这是语法(部分)定义。我取自 Irony.interpreter 附带的 ExpressionEvaluatorGrammer。
c# - Irony 不会使用 Irony 提供的 C# 语法来解析 C#
所以,我试图解析一些简单的 C# 代码来学习如何使用 Irony。我正在使用 Irony 示例中包含的 C# 语法,并使用从那里加载的示例程序集代码。如果有任何关于 Irony 的文档,似乎很少。这是我要解析的完整来源:
以及解析代码:
...其中 g 是 Irony 的 C# 语法。以前有没有人在使用 Irony 的语法解析 C# 时遇到过这些问题?很抱歉,我无法提供更多信息。没有任何例外
c# - Visual Studio MEF & Irony:没有语法高亮
我ITagger<IClassificationTag>
正在生成标签,但是,Visual Studio 没有显示语法着色。这是代码ITagger<IClassificationTag>
:
语法:
c# - 在 .Net 2.0 中使用 Irony 进行自定义语言设计
正如问题所说,我在公司中一直使用 .Net 2.0,并且没有升级的机会。有没有办法让 Irony 在 .NET 2.0 中工作。
我将简要尝试解释我想要实现的目标。我们公司有一个工资单系统,我们让客户在那里定义自己的工资单项目公式。这些公式必须使用我们通过正则表达式检查的一些关键字/函数(非常不可靠)。然后我们创建一个 Microsoft 脚本控件对象并使用它的 eval 函数来解析代码片段。这些片段依次调用类中定义的关键字/函数来获取输出。
但是说这个系统有缺点是很客气的。有时它只是溢出错误。
一个非常愚蠢的例子——
显然,这个公式经历了两个阶段。
首先是验证阶段,我们执行以下操作 -
通过正则表达式检查是否有使用的关键字在预定义的关键字数组列表中不存在
然后检查是否有任何变量(在这种情况下 - A、B、C 是变量)中不存在于变量的数组列表中。
如果所有验证都通过,那么我们将公式字符串传递给 ScriptControlClass 对象的 eval 函数,并添加一个包含其中定义的所有函数的静态类(在这种情况下考虑),如果变量是在此使用的有效变量,则
FVAL()
此函数返回布尔值true
上下文(如添加日期和数字将返回 false)
现在在评估这个表达式之后,结果是 - DivideByZeroException,为什么因为 eval 将所有布尔值类型转换true
为1
并对它执行正常的算术运算。
第二阶段几乎相似,但没有任何验证检查,就像不返回 true 一样,我们实际上从 a 返回变量的值,DataTable
其中包含每个变量的值。
这个系统已经过时了,它让我很紧张,我真的需要帮助。请建议。
abstract-syntax-tree - 具有讽刺意味的是:为什么有些东西会产生 AST 而有些却不会
SQL 示例只生成令牌树
但是大多数关于如何使用讽刺的样本都去“解析”然后“遍历生成的 ast”