2013-09-25 21 views
0

短版:解析器令牌像其他語言中的PHP那樣?

是否有其他的解釋型語言(Python和Ruby等)和編譯語言(C家,Java等)類似PHP parser tokens的東西嗎?

長的版本:

the CPP Rocks websitean article showing a visual comparison of language complexity通過,打破了語言的各個組成部分進行分類圖的手段。對於CoffeeScript中的圖形看起來是這樣的:

enter image description here

我想用the parser tokens爲出發點,以使對PHP這樣的圖(以確保我不會錯過任何東西,因爲我懶)。我想知道在其他解釋語言(Python,Ruby等)和編譯語言(C族,Java等)中是否存在類似這些令牌的東西。

發現迄今:

回答

1

所有解析器都將輸入轉換爲令牌。語言可能會或可能不會顯示這些標記,當然,標記的實際含義和名稱會有所不同,當然,由於不同的語言具有不同的語法,一組保留字和其他構造,每種語言都會稍微不同的令牌集。

這裏的令牌只是「語言規範中實際符號的命名錶示」。因此,例如,解析器將看到單詞break作爲輸入,並將其放入令牌T_BREAK

對於您正在查看的圖表類型,您需要知道不同的語言結構是什麼,然後對其進行分類,然後以圖形方式顯示 - 我不確定查看令牌列表是實現該目標的最佳方法。

+0

我正在考慮使用類似於令牌列表的東西(對於我不太熟悉的語言)來找出存在多少種語言結構的方法。我也不確定這是否是這樣做的最佳方式,但除了對我想繪製的每種語言進行廣泛研究之外,我真的可以想到另一種方式。 - 當然,令牌列表只是一個起點,我仍然需要手動對它進行分類。 – Potherca

-1

有沒有這樣的東西作爲一種語言的標記列表。令牌是解析器的屬性(更確切地說,它們是詞法分析器和解析器之間的接口的屬性),而不是語言。解析相同語言的不同解析器可能會使用完全不同的一組令牌。許多現代語法分析器都是無詞法的,這意味着它們根本不具有令牌,所有。例如,在Ruby中,Rubinius使用的解析器使用與RedParse/RubyLexer(由各種項目使用)完全不同的一組令牌,這些令牌再次使用了與ANTLR相比非常不同的一組令牌, XRuby和Sapphire在Steel中使用了基於瀏覽器的解析器。

+0

也許我的術語是錯誤的,我會盡力解決這個問題。 (歡迎提出建議)。對於解釋型語言,我試圖找到的是解釋器知道/查找的東西以及編譯器尋找的編譯語言的列表。在PHP中,它們被記錄爲令牌。我不知道他們是怎麼樣/他們是什麼或者在其他語言中被調用,因此我的問題。 – Potherca