Changeset 2670
- Timestamp:
- 11/11/08 22:40:13 (2 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/tendra/src/producers/ada/asis/asis-gela-scanners.adb
r2669 r2670 33 33 Position : Source_Buffers.Cursor := Object.To; 34 34 Accepted : Scanner_Tables.Token; 35 Sur_Count : Natural := 0; 35 36 begin 36 37 Object.From := Position; … … 51 52 Accepted := Scanner_Tables.Accepted (Current_State); 52 53 54 Sur_Count := Sur_Count + Boolean'Pos (Class = Surrogate); 55 53 56 if Accepted /= Scanner_Tables.Error then 54 57 Result := Accepted; 55 58 Character_Class_Buffers.Mark (Object.Classes); 56 59 Object.To := Position; 60 Object.Surrogates := Sur_Count; 57 61 end if; 58 62 end if; … … 63 67 Token := Result; 64 68 end Next_Token; 69 70 ------------------ 71 -- Token_Length -- 72 ------------------ 73 74 function Token_Length (Object : Scanner) return Positive is 75 use type Source_Buffers.Cursor; 76 begin 77 return Object.To - Object.From - Object.Surrogates; 78 end Token_Length; 65 79 66 80 ---------------- trunk/tendra/src/producers/ada/asis/asis-gela-scanners.ads
r2669 r2670 33 33 pragma Inline (Token_Span); 34 34 35 function Token_Length (Object : Scanner) return Positive; 36 pragma Inline (Token_Length); 37 35 38 procedure Initialize 36 39 (Object : out Scanner; … … 47 50 (Classificator : access Classificators.Classificator'Class) is 48 51 record 49 Classes : Character_Class_Buffers.Character_Class_Buffer; 50 Start : Scanner_Tables.State := Scanner_Tables.Default; 51 Input : Source_Buffers.Cursor; 52 From : Source_Buffers.Cursor; 53 To : Source_Buffers.Cursor; 52 Classes : Character_Class_Buffers.Character_Class_Buffer; 53 Start : Scanner_Tables.State := Scanner_Tables.Default; 54 Input : Source_Buffers.Cursor; 55 From : Source_Buffers.Cursor; 56 To : Source_Buffers.Cursor; 57 Surrogates : Natural := 0; 54 58 end record; 55 59 trunk/tendra/src/producers/ada/xml/ayacc/asis-gela-parser.adt
r2669 r2670 113 113 --text_io.put_Line (Token'Img & To_String (Get_Token_Value)); 114 114 Scanners.Token_Span (Scanner, From, To); 115 Get_Current_Column := Get_Current_Column + (To - From); 115 Get_Current_Column := 116 Get_Current_Column + Scanners.Token_Length (Scanner); 116 117 117 118 while Token = New_Line_Token or … … 141 142 --text_io.put_Line (Token'Img & To_String (Get_Token_Value)); 142 143 Scanners.Token_Span (Scanner, From, To); 143 Get_Current_Column := Get_Current_Column + (To - From); 144 Get_Current_Column := 145 Get_Current_Column + Scanners.Token_Length (Scanner); 144 146 end loop; 145 147