我寫法對其中操作在前綴符號進行了特定的語言:在lex中,如何區分' - '(減法)運算符和整數'-3'?
(+ a b) --> (a + b)
的整數定義如下:整數可以有一個負號( - ),但沒有正面標誌。它可以在符號和數字之間有或沒有空格。如果該值爲0,則只允許一個數字0。否則,它與常用整數定義相同(不包含前導0)。在lex表達
順序如下(第一場比賽規則):
- 正則表達式的整數:
[\-]?[ ]*((0)|([1-9][0-9]*))
- 正則表達式減法運算符:
"-"
有了這些定義,我想要解析字符串- 5 3
即。 (5-3)
電流輸出
Integer : - 5,
Integer : 3
希望的輸出:
Operator : '-'
Integer : 5
Integer : 3
您的語言是否允許'-'作爲一元運算符?你的語言Lisp就像表達式必須加上括號,或者你可以寫'+ 1 2 3'嗎? – rici
在該語言中,'-'不是一個一元運算符。這是一種現在簡單的語言,所以我不認爲我會遇到像表達式那樣的「+ 1 2 3」。 – ronakshah725
如果在運算符周圍需要括號並禁止在整數範圍內使用括號,則可以區分一元減號和作爲整數部分的減號,因爲「( - 5)」無效。在這種情況下,'('後面的'-'總是一個運算符,''後面的運算符或值必須是整數的一部分,如果這些假設不正確,那麼它將是一個有點棘手 – rici