2012-07-17 80 views
3

是否有可能獲得兩個標記之間的文本塊? 我正在嘗試編寫我的LOLCODE版本,並且我想讓if語句 - 然後我遇到了這個問題。如何檢測文本塊

基本的事情是,我想這樣做:

IS #DIR = 5 
    YUP 
-if statement suceeded, execute code here- 
    NOPE 
-if statement returned false, execute code here 
BYE 

說明:此代碼應檢查是否變量#DIR是等於五,如果是,那麼在YUP塊執行代碼,如果不是 - 執行代碼在NOPE塊中。

我的問題是:如何從文本文件中讀取並使用java執行適當的代碼塊?

+2

使用解析器顯然是最好的途徑。 – 2012-07-17 20:23:42

+1

@MarkoTopolnik真棒,謝謝,但你有什麼想法,我應該使用什麼解析器 - 或者我應該做一個? – TheMorfeus 2012-07-17 20:25:13

+1

做一個,但不是從頭開始。有些圖書館可以讓你從一個BNF開始,他們負責處理剩下的事情。 'antlr'就是這樣一個圖書館,非常受歡迎。 – 2012-07-17 20:29:15

回答

3

嘗試使用正則表達式是這樣的:

searchText.matches("^\\s*IS\\s+(#\\w+)\\s*=\\s*(\\w+)\\s*") 

這種表達只進行第一線「#DIR = 5」,但你可以完成它僅僅是想法做;)

編輯:也許這個鏈接可以幫助你,如果內部代碼塊是Java:Dynamic code execution

+0

這是我知道的東西。只有我不能弄清楚的是如何運行適當的代碼塊。 – TheMorfeus 2012-07-17 20:28:20

+0

我編輯了包含動態代碼執行鏈接的答案 – PaNaVTEC 2012-07-17 20:32:41

+0

正則表達式無法解析嵌套結構。 – 2012-07-17 20:42:48