- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用C#解析JavaScript(ECMASCript)。
我找到了有关如何创建新项目的以下说明:
http://www.antlr.org/wiki/pages/viewpage.action?pageId=557075
因此,我下载了ANTLRWorks,ANTLR v3,解压缩后的ANTLR,创建了VS2010项目(.NET4),添加了引用,检查并生成了语法。
然后我收到很多编译错误:
The type or namespace name 'AstParserRuleReturnScope' could not be found (are you missing a using directive or an assembly reference?)
The type or namespace name 'GrammarRule' could not be found (are you missing a using directive or an assembly reference?)
The name 'HIDDEN' does not exist in the current context d:\Workspace.1\ScriptParser\ScriptParser\TestLexer.cs
using Antlr.Runtime;
namespace ScriptParser
{
class Program
{
static void Main(string[] args)
{
var stream = new ANTLRStringStream("1+2");
var lexer = new TestLexer(stream);
var tokenStream = new CommonTokenStream(lexer);
var parser = new TestParser(tokenStream);
// what exactly should be here???
}
}
}
我的目标是使用ANTLR解析JavaScript文件,但这似乎不像我想的那么简单...
public expr : mexpr (PLUS^ mexpr)* SEMI!
;
然后重新生成代码,再次将“HIDDEN”替换为“Hidden”,并按如下所示修改了代码:
var stream = new ANTLRStringStream("1+2");
var lexer = new TestLexer(stream);
var tokenStream = new CommonTokenStream(lexer);
var parser = new TestParser(tokenStream);
var result = parser.expr();
var tree = (CommonTree)result.Tree;
而且不是它崩溃了
root_0 = (object)adaptor.Nil();
在以下生成的代码中
try { DebugEnterRule(GrammarFileName, "expr");
DebugLocation(7, 0);
try
{
// d:\\Workspace.1\\ScriptParser\\ScriptParser\\Test.g:7:13: ( mexpr ( PLUS ^ mexpr )* SEMI !)
DebugEnterAlt(1);
// d:\\Workspace.1\\ScriptParser\\ScriptParser\\Test.g:7:15: mexpr ( PLUS ^ mexpr )* SEMI !
{
root_0 = (object)adaptor.Nil();
DebugLocation(7, 15);
PushFollow(Follow._mexpr_in_expr31);
NullReferenceException消息,因为适配器为null。
parser.TreeAdaptor = new CommonTreeAdaptor();
更新2:
var f = function () { };
并且解析失败,并从tree.ToStringTree()获得以下输出:
<error: var q = function () { };>
最佳答案
您的语法规则说,表达式的末尾应该有一个分号,但是在您的main函数中:
var stream = new ANTLRStringStream("1+2");
关于antlr3 - C#,ANTLR,ECMAScript语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198059/
我正在尝试为我的组件中声明的数组分配一个值。不幸的是,抛出了异常。 TypeError: Attempted to assign to readonly property 即使我删除了严格模式,仍然会
如果我将一个类导入到其他脚本中,我如何将参数传递给 ES6 语法中的类构造函数? 我想做这样的事情。我已经看到了各种建议,例如包装函数或使用工厂模式,但是否有更简洁、更简单的方法来做到这一点? //
我最近看了 ECMAScript 2015。 ECMAScript 2015 有类初始化器吗? 例如,我试着把类写得像一个解析器; class URLParser { parse(url) {
我目前正在尝试弄清楚为什么 JSDT 会发布类似“JavaScript error on valid regex”的错误'. 在我进行测试时,我意识到它适用于像这样的简单文件: var a = {
有一段时间我认为它们是同一回事,但我经常看到博客或此处的答案中的措辞似乎暗示两者之间存在差异。即使 SO 有两个不同的标签,但它们的描述并没有显示出任何明显的区别。 我四处搜索了一下,这只会增加困惑,
我最近使用了最新的 Laravel 5.3。在 gulp.js文件,有较新的 ES6 箭头函数语法: elixir(mix => { mix.sass('app.scss') .
在 block 作用域函数方面,ES6 相对于 ES5 有哪些优势?我的意思是,在这两种情况下,该 block 看起来非常相似,那么它有什么区别,性能方面哪种方法更好? ES6 block {
所以,我知道在 GWT 中我可以编写纯 javascript 代码的 JSNI 代码。但是,不幸的是,如果我在其中使用 ES6 代码,JSNI 代码将无法编译。 这意味着,例如,我不能做这样的事情:
所以,我知道在 GWT 中我可以编写纯 javascript 代码的 JSNI 代码。但是,不幸的是,如果我在其中使用 ES6 代码,JSNI 代码将无法编译。 这意味着,例如,我不能做这样的事情:
如何在 Visual Studio Code 中编写 ECMAScript 代码??我尝试编写 jsconfig.json 但不确定如何运行该文件。我什至尝试更改 tasks.json 但即使那样也无
尽管事实是const不能在 ECMAScript 2015 中赋值,如果对象没有被卡住,可以修改 Object.freeze . 自 const应该是不可变的,添加 Object.freeze 有意义
当我打开我的项目 .js 文件时,会出现以下警告: File watcher 'Babel' is available for this file. Description: 'Transpiles
我接受了 JavaScript 前端开发人员职位的面试。我失败了,因为我不知道一些高级问题。请帮助我至少理解这一点。 我的问题在于 ECMAScript 6 知识,而不是 ECMAScript 5 中
本文介绍ECMAScript 6即将带给我们新的数组操作方法,以及在怎样在现有浏览器应用这些新的数组特性。 Note: 我将使用交替使用构造器(constructor)和类(class)两个术语。
我指的是 https://tc39.es/ecma262/#sec-regexp-regular-expression-objects 中定义的 ECMAScript 正则表达式语法. 我通过几个在线
我有多个名为 PageX 的文件, PageY , PageZ等等 每一个都有一个 export default SETUP { path:'blah_X', component:X } . 在我的
也许这是一个基本问题,但是两者之间有什么区别: -在ES3支持下开发的一个Web项目, -在ES5支持下开发的Web项目? 换句话说,如果您支持ES5,则可以在项目中添加哪些增强功能? 最佳答案 在这
这个问题在这里已经有了答案: One-liner to take some properties from object in ES 6 (12 个答案) 关闭 6 年前。 是否有一个我正在空白的单
一段时间以来,我一直在使用 ES6 提供的模块。虽然我(本能地)知道最好使用它们,但我很难解释为什么。 带模块; 我可以做依赖声明(不是注入(inject))。我不必为我加载的每个 javascrip
从不可变映射中获取多个值的最佳方法是什么? const example = new Map({ id: 1, first: 'John', last: 'Smith',
我是一名优秀的程序员,十分优秀!