網上可以賭錢的游戲   免費注冊 查看新帖 |

網上可以賭錢的游戲

  平臺 網上可以賭錢的游戲 博客 文庫
最近訪問板塊 發新帖
查看: 10968 | 回復: 5
打印 上一主題 下一主題

C-mini 程序設計語言的設計與實現 [復制鏈接]

本文地址:http://www.hznkw.tw/forum.php?mod=redirect&tid=4243195&goto=lastpost
文章摘要:C,論黃數黑理應大滅絕,足三里嫁人了敵營。

白手起家

網上游戲徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發表于 2016-04-13 20:06 |只看該作者 |倒序瀏覽
本帖最后由 626788149 于 2016-04-13 20:08 編輯


最近一直在學習編譯原理的內容,深知如果不自己動手實現一個編譯器,那么這就是在談一場不以結婚為目的的戀愛,這就是耍流氓。
所以從現在開始我要自己實現一個類似于c語言的編譯器,把設計的方案與細節總結在這里。

因為本人是邊學習邊實現,可能速度上會有一點點慢。

非常希望這里的大神們能給我提提寶貴的意見,讓我在以后的學習中更加順利

先放上源碼Github:github.com/Zhang626/C-Mini

我還有一個csdn的博客跟這里是同步的,但是鏈接發不出來 醉了

網上游戲徽章:
0
2 [報告]
發表于 2016-04-13 20:11 |只看該作者
本帖最后由 626788149 于 2016-04-13 20:36 編輯

介紹
  這個語言與c語言非常相似,也與現有的很多程序設計語言有很多共同點。但也有很多地方與c語言不同,比如c-mini包含了foreach循環語句,在函數體中變量的聲明順序也與c語言不同。不同元素的類型使用不同的字體來表示:




關鍵字: for,while,foreach
記號TOKEN: ID,NUMLITERAL,STRLITERAL
非終結符:Nonterminals

TOKEN 的定義
letter = a | . . . | z | A | . . . | Z
digit = 0 | . . . | 9
NUMLITERAL = [+ | -] digit+
ID = letter (letter | digit)∗
STRLITERAL= "任何除了" 以外的字符"
BOOLITERAL = true | false
Comments = /* ......anything but except * /......  */
Whitespace =制表符,空格,換行
Keywords  = for | while | foreach | int | bool | char | void | if | else | return | break | true | false | def | in

typedef enum {
                ENDFILE , ERROR,
                /*multicharacter symbols*/
                ID, NUM , STRING,
                /*reserved word*/
                FOREACH , WHILE , INT , BOOL , CHAR , VOID , IF ,
                ELSE , RETURN , BREAK , TRUE , FALSE, DEF,
                /*SPECIAL SYMBOLS*/
                SEMI,ASSIGN,EQ,LT,BT,LQ,BQ,PLUS,MINUS,TIMES,
                OVER,LEFTPAREN,RIGHTPAREN,COMMA,CURLYBRACESL,
                CURLYBRACESR,PLUSPLUS,MINUSMINUS,SQUAREBRACKL,SQUAREBRACKR,
                /*whitespace*/
                BLANK,TABLE,NEWLINE               
} TokenType;

目標
我打算先寫解釋器,解釋器完成以后再寫代碼生成器生成字節碼

網上游戲徽章:
0
3 [報告]
發表于 2016-04-13 20:20 |只看該作者
本帖最后由 626788149 于 2016-04-13 20:34 編輯

文法

此文法經過修改,使用遞歸下降解析只需要一個向前看符號就可以實現


1. programdeclarationList
2.  declarationListdeclarationList declaration | declaration
3. declarationvarDeclaration | funcDeclaration
4. varDeclarationtypeSpecifier varDeclList ;
6. varDeclListvarDeclList , varDeclInitialize | varDeclInitialize
7. varDeclInitializevarDeclId | varDeclId =simpleExpression
8. varDeclId → ID | ID [ NUMCONST ]
10. typeSpecifierint | bool | char| void
11. funcDeclarationdef  ID ( params ) typeSpecifier statement
12.  paramsparamList | ε
13. paramListparamList , paramTypeList | paramTypeList
14. paramTypeListtypeSpecifier paramId
16. paramId → ID | ID [ ]
17.  statement → expressionStmt | compoundStmt | ifStmt | whileStmt | foreachStmt | returnStmt | breakStmt
18. compoundStmt→ { localDeclarations statementList }

19. localDeclarations → localDeclarations VarDeclaration | ε
20. statementList → statementList statement | ε

21. expressionStmtexpression ; | ;
22. ifStmtif ( simpleExpression ) statement [ else statement ]
23. whileStmtwhile ( simpleExpression ) statement  
24. foreachStmtforeach ( mutable in simpleExpression ) statement
24. returnStmtreturn ; | return expression ;
25. breakStmtbreak ;
26. expression → mutable = expression | mutable += expression | mutable −= expression| mutable ∗= expression | mutable /= expression | mutable ++ | mutable −− | simpleExpression
27. simpleExpression → simpleExpression | andExpression | andExpression
28. andExpression → andExpression & unaryRelExpression | unaryRelExpression

29. unaryRelExpression ! unaryRelExpression | relExpression
30. relExpression → sumExpression relop sumExpression | sumExpression
31. relop → <= | < | > | >= | == | ! =
32. sumExpression → sumExpression sumop term | term
33. sumop + | −
34. term → term mulop unaryExpression | unaryExpression
35. mulop → ∗ | / | %
36. unaryExpression → unaryop unaryExpression | factor
37. unaryop → −
38. factor → immutable | mutable
39. mutable → ID | ID [ expression ]
40. immutable → ( expression ) | call | constant
41. call → ID ( args )
42. args → argList | ε
43. argList → argList , expression | expression
44. constant → NUMCONST | CHARCONST | STRINGCONST | true | false

網上游戲徽章:
9
程序設計版塊每日發帖之星
日期:2016-02-13 06:20:00數據庫技術版塊每日發帖之星
日期:2016-06-15 06:20:00數據庫技術版塊每日發帖之星
日期:2016-06-16 06:20:00數據庫技術版塊每日發帖之星
日期:2016-06-18 06:20:00程序設計版塊每日發帖之星
日期:2016-06-27 06:20:00程序設計版塊每日發帖之星
日期:2016-07-09 06:20:00IT運維版塊每日發帖之星
日期:2016-07-15 06:20:00IT運維版塊每日發帖之星
日期:2016-07-27 06:20:00程序設計版塊每日發帖之星
日期:2016-08-18 06:20:00
4 [報告]
發表于 2016-04-20 09:09 |只看該作者
頂一個,樓主繼續

網上游戲徽章:
12
射手座
日期:2014-10-02 11:31:29程序設計版塊每日發帖之星
日期:2016-05-28 06:20:00每日網上游戲發貼之星
日期:2016-05-27 06:20:00程序設計版塊每日發帖之星
日期:2016-05-27 06:20:00程序設計版塊每日發帖之星
日期:2016-05-25 06:20:00每日網上游戲發貼之星
日期:2016-05-24 06:20:00程序設計版塊每日發帖之星
日期:2016-05-24 06:20:0015-16賽季CBA聯賽之深圳
日期:2016-05-23 15:33:59程序設計版塊每日發帖之星
日期:2016-05-20 06:20:00程序設計版塊每日發帖之星
日期:2016-04-26 06:20:00神斗士
日期:2015-12-03 09:27:3215-16賽季CBA聯賽之八一
日期:2016-12-29 09:56:05
5 [報告]
發表于 2016-05-25 21:16 |只看該作者
我沒有實際做過。
頂一個,網上可以賭錢的游戲:樓主繼續

網上游戲徽章:
0
6 [報告]
發表于 2017-03-15 19:24 |只看該作者
頂,繼續更新啊 樓主
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

李建國
基于案例的 SQL 優化實戰訓練營

講師:中電福富特級專家梁敬彬,參與本次課程培訓,你將收獲:
1. 能編寫出較為高效的 SQL;
2. 能解決70%以上的數據庫常見優化問題;
3. 能得到老師提供的高效的相關工具和解決方案;
4. 能舉一反三,收獲不僅僅是 SQL 優化。
現在購票享受8.8折優惠!
----------------------------------------
優惠時間:2019年3月20日前

大會官網>>
<鏈輪> 安卓版四人麻将 开得快4676 重庆福彩欢乐生肖开奖结果 重庆时时现场开奖直播 香港特马资料网760999 北京pk走势图怎么看 九龙心水王中王中论坛 云南时时开奖结果40 北京赛结果 重庆幸运农场开奖app 重庆时时彩开奖app
  

北京盛拓優訊信息技術有限公司. 版權所有 16024965號-6 北京市公安局海淀分局網監中心備案編號:11010802020122
中國互聯網協會會員  聯系我們[email protected]
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP
   <鏈輪>开得快4676 重庆福彩欢乐生肖开奖结果 重庆时时现场开奖直播 香港特马资料网760999 北京pk走势图怎么看 九龙心水王中王中论坛 云南时时开奖结果40 北京赛结果 重庆幸运农场开奖app 重庆时时彩开奖app