代码之家  ›  专栏  ›  技术社区  ›  Tool

句法错误

  •  0
  • Tool  · 技术社区  · 15 年前

    我正在为练习1-24 k&r2编写代码,它要求编写一个基本的语法调试器。

    我做了一个状态为normal、dquote、squote等的解析器。

    所以我想知道

    /" text "
    

    代码中是否允许?我应该将此报告为错误吗?(问题是我的解析器在 / 忽略了 " )

    3 回复  |  直到 15 年前
        1
  •  3
  •   sth Wojciech Parzych    15 年前

    自从一个 / 只是表示划分,不应将其解释为注释。没有为字符串定义除法运算符,因此 "abc"/"def" 没有多大意义,但不应该是语法错误。弄清楚这个划分是否可行不应该由解析器完成,而是留给编译的后期阶段在那里决定。

        2
  •  2
  •   unwind    15 年前

    它在语法上有效,但在语义上无效。它应该以除法运算符的形式进行分析,后跟一个字符串文本。你不能用字符串文字来划分东西,所以总的来说,它不是合法的代码。

    注释以两个字符的标记开头, /* 并结束 */ .

        3
  •  0
  •   Nicholaz    15 年前

    作为一个独立的语法元素,这应该作为一个错误报告。

    理论上(作为表达式的一部分)可以

    a= b /"text";   / a = b divided through address of string literal "text"
    

    这也是错误的(你不能通过指针进行除法)。

    但从表面上看似乎还可以,因为它将语法解码为:变量运算符变量运算符常量表达式(字符串地址)。

    真正的错误可能必须在更深层次的语法分析中被捕获(即,在检查给定类型是否适合于除法运算符时)。