2008-10-05 76 views
11

我正在尋找一個像樣的詞法掃描生成器的C#/。NET - 東西,支持Unicode字符類別,並生成有點可讀&有效的代碼。任何人都知道嗎?C#/。NET Lexer生成器


編輯:我需要的Unicode類別,不只是Unicode字符支持。目前在Lu(Letter,Uppercase)類別中僅有1421個字符,我需要非常明確地匹配許多不同的類別,而不是手寫必要的字符集。

而且,實際的代碼是一個必須 - 這排除了的東西產生(即GOLD)的二進制文件,然後與司機使用


編輯:ANTLR不支持Unicode類別呢。儘管如此,它有一個open issue,所以有一天它可能適合我的需求。

回答

8

GPLEX似乎支持您的要求。

1

想到的兩個解決方案是ANTLRGold。 ANTLR有一個基於GUI的語法設計器,並且在C#can be found here中是一個很好的示例項目。

+0

黃金不產生/代碼/對詞法分析器 - 它建立了一個特殊的二進制文件,它的驅動程序,在運行時讀取。至於Antlr,我找不到甚至意味着它支持Unicode/classes /的東西(它似乎允許指定的Unicode字符,但不允許全部類) – 2008-10-05 16:43:33

+0

ANTLR不支持Unicode字符類 – artur02 2008-10-05 18:06:15

1

我同意@David Robbins,ANTLR可能是你最好的選擇。但是,生成的ANTLR代碼確實需要單獨的運行時庫才能使用生成的代碼,因爲生成的代碼依賴於某些字符串解析和其他庫共同點。 ANTLR生成一個詞法分析器和一個分析器。

附註: ANTLR很棒...我寫了一個400多行的語法來生成超過10k或C#代碼來有效地解析語言。這包括內置的錯誤檢查功能,用於解析語言時可能出錯的所有可能的事情。試着用手去做,而且你永遠不會跟上這些錯誤。