三國最牛叉的小人物 被人遺忘的忠勇大將高順

時間 2021-05-05 18:23:53

1樓:

乙個例子,之前作業實現的乙個 C family toy language 的 EBNF,長這樣。

除了 boolean 外大致是 C 的子集。

這個版本沒處理 left-recursion,因為是作業的一部分。

program -> ( func-decl | var-decl )*

// declarations

func-decl -> type identifier para-list compound-stmt

var-decl -> type init-declarator-list ";"

init-declarator-list-> init-declarator ( "," init-declarator )*

init-declarator -> declarator ( "=" initialiser )?

declarator -> identifier

| identifier "[" INTLITERAL? "]"

initialiser -> expr

| ""

// primitive types

type -> void | boolean | int | float

// identifiers

identifier -> ID

// statements

compound-stmt -> ""

stmt -> compound-stmt

| if-stmt

| for-stmt

| while-stmt

| break-stmt

| continue-stmt

| return-stmt

| expr-stmt

if-stmt -> if "(" expr ")" stmt ( else stmt )?

for-stmt -> for "(" expr? ";" expr? ";" expr? ")" stmt

while-stmt -> while "(" expr ")" stmt

break-stmt -> break ";"

continue-stmt -> continue ";"

return-stmt -> return expr? ";"

expr-stmt -> expr? ";"

// expressions

expr -> assignment-expr

assignment-expr -> ( cond-or-expr "=" )* cond-or-expr

cond-or-expr -> cond-and-expr

| cond-or-expr "||" cond-and-expr

cond-and-expr -> equality-expr

| cond-and-expr "&&" equality-expr

equality-expr -> rel-expr

| equality-expr "==" rel-expr

| equality-expr "!=" rel-expr

rel-expr -> additive-expr

| rel-expr "<" additive-expr

| rel-expr "<=" additive-expr

| rel-expr ">" additive-expr

| rel-expr ">=" additive-expr

additive-expr -> multiplicative-expr

| additive-expr "+" multiplicative-expr

| additive-expr "-" multiplicative-expr

multiplicative-expr -> unary-expr

| multiplicative-expr "*" unary-expr

| multiplicative-expr "/" unary-expr

unary-expr -> "+" unary-expr

| "-" unary-expr

| "!" unary-expr

| primary-expr

primary-expr -> identifier arg-list?

| identifier "[" expr "]"

| "(" expr ")"

| INTLITERAL

| FLOATLITERAL

| BOOLLITERAL

| STRINGLITERAL

// parameters

para-list -> "(" proper-para-list? ")"

proper-para-list -> para-decl ( "," para-decl )*

para-decl -> type declarator

arg-list -> "(" proper-arg-list? ")"

proper-arg-list -> arg ( "," arg )*

arg -> expr

2樓:Belleve

語法定義一般是用(擴充套件過的)BNF。當然 python、haskell 這種的話就會有更多的描述,把縮排之類非 CF 的部分給「CF 化」。

語義定義多是 SDD 加上不太嚴格的指稱語義,畢竟嚴格的語義寫起來太蛋疼了……比如這是讀取變數的 CEK 式語義:

READ-VARIABLE v, e, s, k, t -> Just s(e(b)), e, s, k, t

三國演義裡哪些小人物改變了歷史軌跡?

張居正 推薦桃園三結義開篇那個買肉的。要不是他硬要來買肉,買不到肉還大聲嚷嚷,就不會引得乙個賣綠豆的前來出頭,那賣綠豆的也不會力舉磨盤引得乙個賣草蓆的關注,也不會引來張屠戶打架,不會不打不相識,不會有桃園三結義,接下來大家都知道了 所以不要隨便買肉,現在豬肉那麼貴 深哥頭馬 洛陽城看門口的乙個偷懶的...

三國裡面最牛逼的人是誰

燈塔 孫權,當之無愧。把平衡運用的爐火純青。劉備打曹操,孫權打劉備。諸葛亮打曹丕,孫權打諸葛亮。三角形,是最穩定的。孫權,比數學家都明白這個道理。絕對,不能缺少任何乙個。最愚蠢的是 張士誠。朱元璋打陳友諒,張士誠連動都不動。等朱元璋把陳友諒收拾了,回頭就把張士誠也收拾了。 馮虛御風 私以為還是曹老闆...

三國哪個人物的名字和身份最違和?

宣漢 我覺得是邢道榮,他這名字一出現在我眼前,便被他震懾。第一感覺,這是個大將,檀道濟那樣的,劉備要得個猛人了。第二感覺,這是個有術法的異人,鄭倫 包道乙 喬道清那樣的。然後我滿懷期待地往下瞄。結果很多人都知道了。 曹操 眭固原本是蒙特內哥羅賊,後來成為了呂布唯一的鐵哥們,張楊的部下。當初呂布遭到曹...