2016-01-22 59 views
0

我想解析ms sql,它允許將很多事情放在括號內。例如,您可以將列名,表名,臨時表和數據類型括起來。在MS中解析括號內容sql

這可以採取的形式類似如下:

select [#col1], [key], [case], [select], from [mytable] 
CREATE TABLE MyTable ([MyCol] [varchar](50) NULL) 

我遇到的是,如果我把一個「括號標識」進入我的詞法定義,那麼我的解析器將看到[MyCol令牌的問題]和[varchar]。 [varchar]不是我的解析器知道的數據類型,但是varchar是。我的語法無法處理處理一些括號內的令牌和一些未加標記的令牌的複雜性。另一方面,如果我將括號邏輯從我的詞法分析器中取出並放入我的分析器中,那麼我無法分析恰巧包含sql關鍵字的列名稱。例如:

select [key], [special case] from MyTable 

如果它很重要,我從這生成c#代碼,而不是java代碼。

我該如何處理?

回答

1

在解析器中這樣做是最好的方法。爲了正確處理關鍵字作爲標識符,您必須將所有允許的關鍵字添加到解析器標識符規則中,與我在MySQL grammar中所做的操作類似。