[問題] 關於compiler的語彙分析(lexical analy …

看板C_and_CPP (C/C++)作者 (寂寞在唱歌)時間16年前 (2010/03/12 09:58), 編輯推噓2(2017)
留言19則, 4人參與, 最新討論串1/1
compiler的 語彙分析(lexical analysis)、 語法分析(syntax analusis)、 語意分析(semantic analysis) 這三個階段以前學校老師說是平台獨立 不過最近在網路看到某投影片寫 "關於將語彙分析語語法分析分開的理由"有三點: Simplicity (簡單) Less complex approaches can be used for lexical analysis; separating them simplifies the parser Efficiency (效率) Separation allows optimization of the lexical analyzer Portability (可攜) Parts of the lexical analyzer is somewhat platform-dependent, but the syntax analyzer can be platform-independent (平台獨立) 在可攜性那像寫說lexical analyzer有時跟平台有關, 這樣compiler不就跟平台也有關了嗎? 有點困惑? 希望有人可以給我點意見, 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.27.36.153 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.27.36.153 ※ 編輯: huiming 來自: 114.27.36.153 (03/12 09:59)

03/12 12:23, , 1F
真的有和平台無關的compiler嗎?
03/12 12:23, 1F

03/12 12:23, , 2F
先不提這個lexical analyzer是怎麼跟平台相關
03/12 12:23, 2F

03/12 12:24, , 3F
有什麼能用的compiler是和平台無關的?就算Java也是相關
03/12 12:24, 3F

03/12 12:24, , 4F
於它的虛擬機器吧?
03/12 12:24, 4F

03/12 12:31, , 5F
C Sharpe Compiler與平台無關,最近在K C#的東西。
03/12 12:31, 5F

03/12 12:33, , 6F
如果相關於虛擬機器視為與平台相關的話,可能又另當別論?
03/12 12:33, 6F

03/12 19:38, , 7F
VM 本身就是個平台
03/12 19:38, 7F

03/13 00:38, , 8F
課本裡面說的Compiler概念不等於Turbo C++, Visual C++
03/13 00:38, 8F

03/13 00:43, , 9F
這種把很多步驟整合一起的系統,而單指把原始碼轉成中間碼
03/13 00:43, 9F

03/13 00:47, , 10F
例如像是bytecode,會覺得compiler和平台相關是因為現在套
03/13 00:47, 10F

03/13 00:48, , 11F
裝軟體把linker也都整合進去,和課本裡面很多pass分開時代
03/13 00:48, 11F

03/13 00:50, , 12F
不一樣,而lexical平台相關可能講的是像CR/LF這種編碼問題
03/13 00:50, 12F

03/13 01:05, , 13F
像GCC, Watcom這種Compiler都是跨平台的,因為支援多種
03/13 01:05, 13F

03/13 01:06, , 14F
平台的code generator
03/13 01:06, 14F

03/16 09:49, , 15F
Java和C#應該都是兩段式的編譯~~
03/16 09:49, 15F

03/16 09:49, , 16F
真要說跟平台相關的話,我是覺得JIT Compiler才與平台相關
03/16 09:49, 16F

03/16 09:49, , 17F
前一段的Java或C# compiler都是編成中介語言
03/16 09:49, 17F

03/16 09:50, , 18F
在哪個平台下都是一樣的處理態度
03/16 09:50, 18F

03/16 09:50, , 19F
而所謂的平台,應該是指end-user的電腦。
03/16 09:50, 19F
文章代碼(AID): #1BcP_Ju3 (C_and_CPP)
文章代碼(AID): #1BcP_Ju3 (C_and_CPP)