问题标签 [lexical]

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.

0 投票
0 回答
119 浏览

analyzer - 写一个解释器

我打算用 Python 为 Java 编写一个词法分析器。这还有可能吗?任何想法或建议将不胜感激

0 投票
2 回答
2003 浏览

compiler-construction - 编写编译器,词法分析?

我对编写编译器完全陌生。所以我目前正在启动项目(用Java编码),在编码之前,我想更多地了解词法分析部分。我在网上进行了研究,发现其中大多数都使用标记器。

该项目要求我不使用它们(标记器),而是使用有限状态自动机。我很困惑,我需要使用链表来实现它吗?或者一个简单的嵌套开关案例就可以了。我对实现有限自动机并不是很熟悉,有什么好处?

0 投票
2 回答
258 浏览

perl - 需要结束可以正常终止的词法作用域动作

我需要能够将动作添加到动作可能会消失的词汇块的末尾。而且我需要正常抛出异常并能够正常捕获。

不幸的是,在 DESTROY 期间 Perl 的特殊情况异常通过在消息中添加“(in cleanup)”并使它们无法捕获。例如:

我希望它通过。目前,异常完全被 eval 吞没了。

这是为 Test::Builder2 准备的,所以我只能使用纯 Perl。

根本问题是我有这样的代码:

即使 $user_code 死了,也必须进行清理,否则 $self 会进入奇怪的状态。所以我这样做了:

之所以如此复杂,是因为清理会运行任意用户代码,而这是一个代码将死掉的用例。我希望该异常是可捕获的并且不会被警卫改变。

由于改变堆栈的方式,我避免将所有内容包装在 eval 块中。

0 投票
2 回答
15754 浏览

haskell - Haskell:字符“i”处的字符串/字符文字中的词法错误

我对 Haskell 编程相当陌生,我无法理解为什么在我的代码中收到此错误。

我的问题如下:任何正整数 i 都可以表示为 i = 2^n*k,其中 k 是奇数,也就是奇数的 2 次幂。我们称 n 为 2 在 i 中的指数。例如,2 在 40 中的指数是 3(因为 40 = 2^3*5),而 2 在 42 中的指数是 1。如果 i 本身是奇数,则 n 为零。另一方面,如果 i 是偶数,这意味着它可以被 2 整除。编写一个函数 exponentOfTwo 以在其参数中找到 2 的指数。

我理解伪代码,它似乎相当简单:递归地将 i 除以 2 直到结果为奇数,除法发生的次数为 n

这是我的代码(第 31-32 行):

我在第 32 行第 62 列收到错误“字符‘i’处的字符串/字符文字中的词法错误”。

我已经尝试到处寻找解决此错误的方法,但到目前为止我还没有运气。

0 投票
1 回答
2516 浏览

compiler-construction - 使用 NDK 编译(flex/bison)解析器


更新我现在知道 parser.h 应该由 make 系统从 parser.y 生成。Android.mk 文件甚至有这样的条目:

edify_src_files := \ lexer.l \ parser.y \ expr.c

但我似乎仍然无法从中获取可执行文件。(是的,可执行的,不是共享库)


我正在尝试自己编译 Android Wifi Tether ( http://code.google.com/p/android-wifi-tether/ ),在尝试编译与项目的 JNI 部分相关的一些 C 代码时,有一些lex/yacc 的奇怪使用。

我以前从未处理过解析器,所以我真的很紧张。在使用最新的 ndk-build 脚本 (ndk-r5b) 和对其他一些问题进行排序后,我发现自己正在寻找 parser.h 头文件。我尝试在不包含它的情况下进行编译,并且具有未定义引用的函数调用是:

  • yy_scan_string
  • yy_scan_bytes
  • yyparse

因此,我显然需要找到应该声明这些函数的 parser.h 文件的路径。问题是,通过发出定位命令,我在系统中获得了大量同名文件,但似乎没有一个是我正在寻找的文件。

有人可以在这里给我一盏灯吗?也许我需要安装一个开发者包?

谢谢!

尼尔森

0 投票
2 回答
3119 浏览

xcode - iPhone xcode构建失败 - 文件未找到

我正在将 iPhone 的 wikihow 开源代码下载到本地 xcode 以运行和查看。

https://github.com/keishi/wikihow-iphone-app

下载后,当我构建并运行它时,它失败了。

错误为:

1-没有这样的文件或目录,WHNetworkAlertView.h

但是,该文件存在于

此文件从 wikiHowAppDelegate.m 调用为 #import 'WHNetworkAlertView.h'

2- 词法或预处理器问题 'WHNetworkAlertView.h' 文件未找到

3- '*' undecleared (第一次在这个函数中使用) WHNetworkAlertView undeclared

当我通过 xcode 导航到文件进行查看时,xcode 无法打开它...

知道如何解决吗?


第二个问题:

我听说我们可以要求 Apple 在实际发布到应用商店之前进行上线测试。但

使用 xcode 构建 iphone 应用程序后,我可以将文件 USB 到真正的 iphone 以进行测试吗?而不是仅仅使用模拟器(有时实际环境可能会有一些不同的问题)

0 投票
2 回答
254 浏览

embedded - 是否可以在词法范围内进行硬实时?

我正在阅读这篇关于 funarg 问题的论文,这实际上是维护词法闭包环境的问题。这是一篇旧论文,我不确定作者的结论是否仍然成立,但他强烈暗示,为了拥有词法而不是动态范围,您必须放弃传统的 C 样式堆栈,而是使用树结构环境,从堆中分配。

这是否使得在任何硬实时系统中都不可能有词法范围的闭包?在实时嵌入式系统中,延迟以微秒为单位测量,堆分配通常是被禁止的,因为它引入了不确定的延迟。

这一直是我的好奇心,因为我主要以固件开发人员的身份制作面包,其中 C 是事实上的语言,有一段时间以来,我似乎一直在使用我的脑力来弄清楚如何迫使 C让我用更复杂的语言做一些免费的事情。因此,我开始怀疑您是否可以专门为基于硬实时嵌入式微控制器的系统实现 micro-lisp 编译器。

作为旁注:我最近对诸如闭包和对象如何等效等深层主题有了深刻的见解,这让我对 Stallman 和 Rich Hickey 以及 Paul Graham 等人更加敬畏。从头开始实施 Lisp 对我来说似乎是一项艰巨的任务。很难知道从哪里开始。(也许与 PG 对 McCarthy 的原始 eval 函数 IDK 的实现有关)。无论如何,我离题了。

0 投票
1 回答
23900 浏览

python - 词法错误:遇到:“”(0),之后:“”

我需要开始处理外来字符,这样做,我想我彻底搞砸了文件的编码。

我得到的错误是:

文件的第一行是:

另请注意:当我将上面的行粘贴到 textarea 中以询问此问题并提交时,每个字符之间出现了一个未知字符(e 我无法通过添加显式编码定义来解决此问题:

我也无法将文件(使用 Hg)恢复到以前的版本,也无法将代码复制/粘贴到新文件中,或者用复制/粘贴的代码替换损坏的文件。

请帮忙!

0 投票
1 回答
986 浏览

compiler-construction - 标记化、词法分析、BNF、上下文无关语法

我只想问Tokenization是否与词法分析相同,Backus Naur Form是否与上下文无关语法相同?我需要定义和解释所有四个并举例说明,但似乎有些网站将其中一些视为一个。

谢谢你。

0 投票
1 回答
3065 浏览

algorithm - 语法高亮/词法分析算法

语法荧光笔使用的一般算法是什么?我在正则表达式中使用交替实现了一种简单的方法:

STRING_PATTERN|COMMENT_PATTERN|KEYWORD_PATTERNS

因为检测某个东西是字符串还是模式取决于哪个先出现:

但是使用关键字会变得更加复杂。这种方法在我当前的实现中有效,但我不相信它是最佳的。

另一个问题是您突出显示的顺序。如果您在标识符/关键字之前突出显示数字,那么您可能会不小心突出显示关键字中的数字......

编辑:

我的插件现在在这里:http ://wordpress.org/extend/plugins/crayon-syntax-highlighter/