nullable: convert lib, tools and tests
[nit.git] / src / parser / xss / lexer.xss
index f3b3247..fccb57c 100644 (file)
@@ -22,7 +22,7 @@ $ template make_lexer()
 # It is better user with the Parser
 class Lexer
        # Last peeked token
-       attr _token: Token
+       attr _token: nullable Token
 
        # Lexer current state
        attr _state: Int = 0
@@ -34,7 +34,7 @@ class Lexer
        attr _stream: IStream
 
        # Pushback buffer to store unread character
-       attr _stream_buf: String
+       attr _stream_buf: Buffer
 
        # Number of character stored in the pushback buffer
        attr _stream_pos: Int
@@ -52,7 +52,7 @@ class Lexer
        attr _eof: Bool = false
 
        # Current working text read from the input stream
-       attr _text: String
+       attr _text: Buffer
 
 $ foreach {lexer_data/state}
        # Constante state values
@@ -63,10 +63,10 @@ $ end foreach
        init(stream: IStream, fname: String)
        do
                _filename = fname
-               _text = new String
+               _text = new Buffer
                _stream = stream
                _stream_pos = -1
-               _stream_buf = new String
+               _stream_buf = new Buffer
                build_goto_table
                build_accept_table
        end
@@ -77,7 +77,7 @@ $ end foreach
                while _token == null do
                        _token = get_token
                end
-               return _token
+               return _token.as(not null)
        end
 
        # Give and consume the next token
@@ -88,11 +88,11 @@ $ end foreach
                        result = get_token
                end
                _token = null
-               return result
+               return result.as(not null)
        end
 
        # Get a token, or null if it is discarded
-       private meth get_token: Token
+       private meth get_token: nullable Token
        do
                var dfa_state = 0