1
我需要設置令牌,如「任何字符,除了新行開頭」。我試了只識別一個字符串的開始條件lex
[^^]
但這不起作用。首先,我需要檢測一些圖案化線:
%s arithm secOper
NUMBER [0-9]+
INTEGER (-?[0-9]+)
ASSIGN [=]
VARY [A-Za-z][?-i:a-z0-9]{0,15}
ARITHMSIGNS (\+[ ]*|\-[ ]*|\*[ ]*|\/[ ]*)
SPACE [ ]+
SPACES [ ]*
ANY [^^]
%%
^{NUMBER}{SPACES}{VARY}{SPACES}{ASSIGN}{SPACES}({VARY}|{INTEGER}) {BEGIN(arithm);}
<arithm>{ANY}{SPACES}{ARITHMSIGNS}/({VARY}|{INTEGER}) {BEGIN(secOper);}
<secOper>{VARY}|{INTEGER}$ {BEGIN(INITIAL);}
%%
所以串像
54 firstVar = 43 * newVar
是真的,但如果輸入的是:
54 firstVar = 43
* newVar
(2串在C類與\ n)流必須是錯誤的,但模式識別它。我需要識別一個輸入行的所有啓動條件。我如何做到這一點?
這是一項小任務,而不是語言,我必須不野牛。所以如果我創建令牌換行並使用它,情況不會改變。 – freakz