首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“程序语言X字母表”真的指的是字还是字?

问“程序语言X字母表”真的指的是字还是字?
EN

Stack Overflow用户
提问于 2011-01-24 01:15:41
回答 2查看 1.8K关注 0票数 2

在这本书的练习3.3.1中,学生应该

请参阅语言参考手册,以确定(i)构成输入字母表的字符集(不包括可能只出现在字符串或注释中的字符)。下列每一种语文:

对我来说,描述语言的所有字符(如a、b、/ )都是毫无意义的,即使这是编译器的练习。编程语言的字母表不是一组可能的单词吗,比如{id, int, float, string, if, for, ... }

如果你真的认为这个词的基本意思是“字符”,那么??/在C中是一个字符还是三个字符(或者两者都是)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-24 01:39:43

语言的字母表是一组字符,而不是单词。

编程语言的字母表不是一组可能的单词吗,如{id,int,float,string,if,for,. }?

不,字母表是用来形成单词的一组字符。指定语言时,必须给出字母表,否则无法区分有效令牌和无效令牌。

更新

你把“单词”和“记号”混淆了。单词不是语言或程序的一部分。单词是字母表中有限的字符串。它与"int“或"while”这样的语言结构无关。例如,每个C程序都是一个单词,因为它是字母表中的有限字符串。所有这些程序(单词)的集合构成C编程语言。像"void“或"int”这样的标记是完全不同的。

回顾一下,首先定义要使用的一些字符集。这叫做字母表。这些字符的有限字符串构成单词。语言是所有可能单词的子集。要定义一种语言,您可以定义哪些词属于该语言。例如,使用正则表达式或上下文无关语法。

维基百科在正式语言方面有一个很好的页面。

语言

票数 5
EN

Stack Overflow用户

发布于 2011-01-24 14:51:52

混乱来自于理论,将字母表定义为一种语言中字符串形成的符号集合。注意,编程语言的语法使用标记,而不是字符作为终端符号。

传统上,从语言理论的角度来看,编程语言涉及两种语言定义: 1)以字符为字母表,以符号为有效字符串的语言定义;2)以符号作为字母表,程序作为有效字符串的字符串。这就是为什么编程语言通常由两个部分指定,一个词法分析器和一个句法分析器。

严格来说,没有必要有这两个定义来解析一种编程语言。可以使用单个语法来指定使用字符作为输入字母表的编程语言。只是字符到标记部分使用正则表达式更容易指定,而标记到程序部分则更容易使用语法指定。

像反这样的现代编译器使用语法规范语言,这些语言结合了正则表达式的表达方便,所以字符到程序的定义可以用一个语法来完成。然而,将词法与句法分离仍然是解析编程语言的最方便的方法,即使使用此类工具也是如此。

最后一分钟的例子:想象一下,如果-然后-否则-结束的语法生成必须在字符级别处理:

  • 白色空间。
  • 编程语言字符串中的关键字:“然后,结束。”
  • 包含关键字的变量名称:'tiff',
  • ..。

这是可以做到的,但这将是极其复杂的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4777747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档