腳本語言編譯原理
1. 游戲開發中常用哪種腳本語言
游戲開發?那必然是Lua~效率高~但是手機游戲上有用其他語言的~Lua比較多而已~
有個別公司用java當腳本~
2. 編譯原理 語言和句子 的意思
你表達的問題有點不清楚。。。按你的提問,我可以這樣解釋:「大學生」是一個名詞,簡單的句子的構成是主語+謂語+賓語。
3. 編譯原理究竟有沒有用對編程的人
我跟你說,編譯原理太有用了。
我是做手機游戲的,現在做一個游戲引擎。既然是引擎,就需要提供抽象的東西給上層使用。這里,我引入了腳本系統。
這個腳本系統包括一堆我根據實際需求自行設計的指令集,包括基本的輸入輸出,四則運算,系統功能調用,函數聲明,調用等等(其實你要是用過lua或者其他游戲腳本你就知道了。)整個結構包括指令集、編譯器、虛擬機等部分。這樣,引擎提供一些基礎服務,比如繪圖,計算位置等,腳本就可以非常簡單控制游戲。甚至快速構建新游戲。你應該知道QUAKE引擎吧?
這里提供給你一個計算器的小程序,應用了EBNF理論,支持表達式,比如(2+3*6)*4+4,你自己體驗一下它的簡潔和強大。
/*
simple integer arithmetic calculator according to the EBNF
<exp> -> <term>{<addop><term>}
<addop>->+|-
<term>-><factor>{<mulop><factor>}
<mulop> -> *
<factor> -> ( <exp> )| Number
Input a line of text from stdin
Outputs "Error" or the result.
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char token;/*global token variable*/
/*function prototypes for recursive calls*/
int exp(void);
int term(void);
int factor(void);
void error(void)
{
fprintf(stderr,"Error\n");
exit(1);
}
void match(char expectedToken)
{
if(token==expectedToken)token=getchar();
else error();
}
main()
{
int result;
token = getchar();/*load token with first character for lookahead*/
result = exp();
if(token=='\n')/*check for end of line */
printf("Result = %d\n",result);
else error();/*extraneous cahrs on line*/
return 0;
}
int exp(void)
{
int temp = term();
while((token=='+')||(token=='-'))
switch(token)
{
case '+':
match('+');
temp+=term();
break;
case '-':
match('-');
temp-=term();
break;
}
return temp;
}
int term(void)
{
int temp = factor();
while (token=='*')
{
match('*');
temp*=factor();
}
return temp;
}
int factor(void)
{
int temp;
if(token=='('){
match('(');
temp = exp();
match(')');
}
else if(isdigit(token)){
ungetc(token,stdin);
scanf("%d",&temp);
token = getchar();
}
else error();
return temp;
}
其實編程學到一定程度總是沒有方向了,總是在問學C/C++下一步怎麼學啊,覺得掌握了該語言了雲雲,實際上,你缺少的就是這些軟的東西,缺少的是理論。
編譯原理不是單一的理論,它涵蓋了一個niche,裡面可以學到很多其他知識,比如正則表達式、BNF、EBNF、分析樹、語法樹還有很多運行時環境等知識
這些給你帶來的是非常豐厚的回報。不說多了,學完運行時,你就會加深對C++語言本身的理解。
你要想有好的發展,還是學吧。
4. 如果不發明一種新語言,那學編譯原理有什麼用
編譯原理是計算機科學與技術中一個非常成熟的分支,非常完美地將原理與技術結合了起來,對於理解計算機的本質非常有幫助
編譯原理的很多設計思想可以在你設計的程序中運用
比如你想寫個程序對於某個文本作詞法分析和語法分析的處理,那麼編譯原理的知識完全可以幫助你來完成它
又或者你也可能寫個能自動生成菜單或者界面的程序,你需要自定義一個非常簡單的腳本語言並解析它,編譯原理也可以幫助你做到這一點
總之,編譯原理應用的領域十分廣泛,不要以為學編譯原理就僅僅是用來做編譯器的
另外,編譯原理包含了很多巧妙的設計構思,作為一名CS的學生,當然是很有必要來學習它的
5. 學編譯原理有什麼好書
我當年入門編譯原理的時候,是看了一本《游戲腳本高級編程》的書。這本書雖然寫得拖泥帶水,內容也特別淺,但正是這本書讓我知道了如何從頭到尾實際地寫一個parser + 虛擬機,讓我入了門。後來我在 @vczh 的指點下看了Parsing Techniques,自己寫了一個正則表達式匹配和LR(K) Parser (類似於yacc)。但重要的是這本書讓我理解了如何手寫Parser(這是從不會到會的飛躍)。後來我自己寫了一個功能更加全面的類似於javascript的函數式動態腳本語言順帶支持了面向對象,進一步加深了理解。再後來,我看了《Engineering a Compiler》,通過這本書全面的學習了後端優化知識。再再後來,我閱讀了LLVM的代碼,陸陸續續寫了四五個compiler,目前自認為算是基本了解了這個領域。總的感覺是,雖然看書重要,但是如果不親自實現一遍很難真的學會。
6. 《兩周自製腳本語言》pdf下載在線閱讀,求百度網盤雲資源
《兩周自製腳本語言》([日]千葉 滋)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:
書名:兩周自製腳本語言
作者:[日]千葉 滋
譯者:陳筱煙
豆瓣評分:8.0
出版社:人民郵電出版社
出版年份:2014-6
頁數:300
內容簡介:
《兩周自製腳本語言》是一本優秀的編譯原理入門讀物。全書穿插了大量輕松風趣的對話,讀者可以隨書中的人物一起從最簡單的語言解釋器開始,逐步添加新功能,最終完成一個支持函數、數組、對象等高級功能的語言編譯器。本書與眾不同的實現方式不僅大幅簡化了語言處理器的復雜度,還有助於拓展讀者的視野。
《兩周自製腳本語言》適合對編譯原理及語言處理器設計有興趣的讀者以及正在學習相關課程的大中專院校學生。同時,已經學習過相關知識、有一定經驗的開發者,也一定能從本書新穎的實現方式中受益良多。
作者簡介:
作者簡介:
千葉滋
東京工業大學研究生院信息技術理工系研究科教授,兼任東京大學研究生院信息技術理工系研究科教授。著有《面向切面入門——從Java語言・面向對象步入AspectJ語言程序設計》《簡明Java程序設計——Great Ideas for Java Programming》《GUI庫機制——軟體設計案例研習》等。
譯者簡介:
陳筱煙
畢業於復旦大學計算機科學與技術系,主要研究方向為跨設備人機交互理論。從大學時期開始接觸Java、JavaScript程序開發,目前對Web應用及智能手機應用開發有濃厚興趣,並參與Android開發文檔翻譯項目。業余開發的移動應用在Google Play商店中已有數十萬次下載。譯作有《JavaScript編程全解》《App,這樣設計才好賣》等。
7. 編譯程序是根據什麼規則開發的
LZ好,腳本
解釋一
腳本script是使用一種特定的描述性語言,依據一定的格式編寫的可執行文件,又稱作宏或批處理文件。腳本通常可以由應用程序臨時調用並執行。各類腳本目前被廣泛地應用於網頁設計中,因為腳本不僅可以減小網頁的規模和提高網頁瀏覽速度,而且可以豐富網頁的表現,如動畫、聲音等。舉個最常見的例子,當我們點擊網頁上的E-mail地址時能自動調用Outlook Express或Foxmail這類郵件軟體,就是通過腳本功能來實現的。也正因為腳本的這些特點,往往被一些別有用心的人所利用。例如在腳本中加入一些破壞計算機系統的命令,這樣當用戶瀏覽網頁時,一旦調用這類腳本,便會使用戶的系統受到攻擊。所以用戶應根據對所訪問網頁的信任程度選擇安全等級,特別是對於那些本身內容就非法的網頁,更不要輕易允許使用腳本。通過「安全設置」對話框,選擇「腳本」選項下的各種設置就可以輕松實現對腳本的禁用和啟用。
解釋二
動態程序一般有兩種實現方式,一是二進制方式,一是腳本方式。
二進制方式是先將我們編寫的程序進行編譯,變成機器可識別的指令代碼(如.exe文件),然後再執行。這種編譯好的程序我們只能執行、使用,卻看不到他的程序內容。
腳本簡單地說就是一條條的文字命令,這些文字命令是我們可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。
按目前的服務規則,虛擬主機網站只能採用腳本語言來實現
什麼是腳本?
腳本是批處理文件的延伸,是一種純文本保存的程序,一般來說的計算機腳本程序是確定的一系列控制計算機進行運算操作動作的組合,在其中可以實現一定的邏輯分支等。
腳本程序相對一般程序開發來說比較接近自然語言,可以不經編譯而是解釋執行,利於快速開發或一些輕量的控制。
現在的腳本語言是比較多的,一般的腳本語言的執行只同具體的解釋執行器有關,所以只要系統上有相應語言的解釋程序就可以做到跨平台。
腳本(Script),就是含有bind和alias等命令的集合,你可以把這個集合存為一個獨立的文件然後在需要的時候執行,這樣就可以方便你在CS中的使用。
腳本可以存為後綴名為.cfg的文件放在cstrike文件夾下,執行時在控制台輸入:exec(腳本文件名).cfg即可。比如將一個腳本存為buys.cfg文件,則在控制台中輸入:execbuys.cfg則可以實現我們所需要的功能。要實現一個命令只要把這一過程定義(alias)好,並且分配一個鍵位給這個命令,以後只要按分配好的鍵位,就可以實現這一過程。所有的腳本都是通過這一方法實現的 4131希望對你有幫助!
8. 如何用 ANTLR 4 實現自己的腳本語言
ANTLR 是一個 Java 實現的詞法/語法分析生成程序,目前最新版本為 4.5.2,支持 Java,C#,JavaScript 等語言,這里我們用 ANTLR 4.5.2 來實現一個自己的腳本語言。
因為某些未知原因,ANTLR 官方的文檔似乎有些地方和 4.5.2 版的實際情況不太吻合,所以,有些部分,我們必須多方查找和自己實踐得到,所幸 ANTLR 的文檔比較豐富,其在 Github 上例子程序也很多,足夠我們探索的了。
如果你沒有編譯原理的基礎,只要寫過正則表達式,應該也能很快理解其規則,進而編寫自己的規則文件,事實上,因為結構更清晰, ANTLR 的規則文件,比正則表達式要簡單得多。
9. 寫游戲腳本需要學哪種編程
數據結構,編譯原理。
腳本語言又被稱為擴建的語言, 或者動態語言, 是一種編程語言, 用來控制軟體應用程序, 腳本通常是以文本 (ASCⅡ) 保存, 只是在被調用時進行解釋或者編譯。
當執行腳本時,計算機會執行一連串的操作。這些操作可能只涉及 Illustrator,也可能涉及其他應用程序,如文字處理、電子表格和數據管理程序。
Illustrator 可支持多種腳本環境(例如,Microsoft Visual Basic、AppleScript和 JavaScript 等),且內含標準的腳本組合。用戶也可使用自己的腳本,並將這些腳本加入「腳本」子菜單中。