编译原理求解,语义计算的翻译模式

img

img


真的是不会写啊,翻译模式和语义属性感觉是一个东西啊,为什么叫法又不一样,迷迷糊糊的

https://blog.csdn.net/weixin_43949535/article/details/118401648?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167212184316782429795172%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167212184316782429795172&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~pc_rank_34-2-118401648-null-null.142^v68^pc_new_rank,201^v4^add_ask,213^v2^t3_esquery_v3&utm_term=%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86%E6%B1%82%E8%A7%A3%EF%BC%8C%E8%AF%AD%E4%B9%89%E8%AE%A1%E7%AE%97%E7%9A%84%E7%BF%BB%E8%AF%91%E6%A8%A1%E5%BC%8F&spm=1018.2226.3001.4187

如果想要将第三问中的翻译模式改为字母类型:

翻译模式

S -> OrderList
OrderList -> Order OrderList | ε
Order -> NUMBER HYPHEN NUMBER HYPHEN NUMBER ItemList
ItemList -> Item ItemList | ε
Item -> NAME NUMBER UNIT | NAME UNIT
NAME -> "a" | "b"
NUMBER -> DIGIT | DIGIT DIGIT
DIGIT -> "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
UNIT -> "p"
HYPHEN -> "-"

这样就将品名苹果和香蕉分别改为了字母 "a" 和 "b",将单位 "份" 改为了字母 "p"。

上述修改并不会改变翻译模式的语义,因此需要自行确保这些替换是合法的。