'-- Model IED Simulator\n' Comment.Single '-- COL Gene Ressler, 1 December 2007\n' Comment.Single 'with' Keyword.Namespace ' ' Text 'Ada.Text_IO' Name ';' Punctuation '\n\n' Text 'with' Keyword.Namespace ' ' Text 'Ada.Characters.Latin_1' Name ';' Punctuation '\n' Text 'use' Keyword.Namespace ' ' Text 'Ada.Characters.Latin_1' Name ';' Punctuation '\n\n' Text 'with' Keyword.Namespace ' ' Text 'Ada.Strings.Fixed' Name ';' Punctuation '\n' Text 'use' Keyword.Namespace ' ' Text 'Ada.Strings.Fixed' Name ';' Punctuation '\n\n' Text 'with' Keyword.Namespace ' ' Text 'Ada.Strings' Name ';' Punctuation '\n' Text 'with' Keyword.Namespace ' ' Text 'Ada.Strings.Bounded' Name ';' Punctuation '\n\n' Text 'with' Keyword.Namespace ' ' Text 'Binary_Search' Name ';' Punctuation '\n\n' Text 'with' Keyword.Namespace ' ' Text 'Ada.Containers.Generic_Array_Sort' Name ';' Punctuation '\n\n' Text 'package' Keyword.Declaration ' ' Text 'body' Keyword.Declaration ' ' Text 'Scanner' Name.Class ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text '\n' Text ' ' Text 'Constant_123' Name.Constant ' ' Text ':' Punctuation ' ' Text 'constant' Keyword.Reserved ' ' Text 'Character' Keyword.Type ' ' Text ':=' Punctuation ' ' Text 'Character' Keyword.Type "'" Punctuation 'Val' Name.Attribute ' ' Text '(' Punctuation '16#00#' Literal.Number.Hex ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'MAX_KEYWORD_LENGTH_C' Name.Constant ' ' Text ':' Punctuation ' ' Text 'constant' Keyword.Reserved ' ' Text 'Natural' Keyword.Type ' ' Text ':=' Punctuation ' ' Text '24' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'New_Constant' Name.Constant ' ' Text ':' Punctuation ' ' Text 'constant' Keyword.Reserved ' ' Text 'New_Type' Name '\n' Text ' ' Text ':=' Punctuation ' ' Text '2' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'KEYWORDS_C' Name.Constant ' ' Text ':' Punctuation ' ' Text 'constant' Keyword.Reserved ' ' Text 'Keyword_Array_T' Name ' ' Text ':=' Punctuation '\n' Text ' ' Text '(' Punctuation 'To_BS' Name '(' Punctuation '"description"' Literal.String ')' Punctuation ',' Punctuation '\n' Text ' ' Text 'To_BS' Name '(' Punctuation '"with"' Literal.String ')' Punctuation ')' Punctuation ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'procedure' Keyword.Declaration ' ' Text 'Blah' Name.Function ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'procedure' Keyword.Declaration ' ' Text 'blah' Name.Function ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text 'begin' Keyword.Reserved '\n' Text ' ' Text '\n' Text ' ' Text 'Declaration' Name.Label ':' Punctuation '\n ' Text 'declare' Keyword.Reserved '\n' Text ' ' Text 'Joe' Name ' ' Text ':' Punctuation ' ' Text 'Type_Type' Name ' ' Text ':=' Punctuation ' ' Text 'Random' Name ';' Punctuation '\n' Text ' ' Text 'begin' Keyword.Reserved '\n' Text ' ' Text 'Do_Something' Name ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Declaration' Name.Function ';' Punctuation '\n' Text ' ' Text 'Loop_ID' Name.Label ':' Punctuation '\n ' Text 'loop' Keyword.Reserved '\n' Text ' ' Text 'Loop_Do' Name ';' Punctuation '\n' Text ' ' Text 'exit' Keyword.Reserved ' ' Text 'when' Keyword.Reserved ' ' Text '1' Literal.Number.Integer '=' Operator '2' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'loop' Keyword.Reserved ' ' Text 'Loop' Keyword.Reserved '_ID' Name.Function ';' Punctuation '\n' Text ' ' Text 'if' Keyword.Reserved ' ' Text 'True' Keyword.Constant ' ' Text 'or else' Operator.Word ' ' Text 'False' Keyword.Constant ' ' Text 'then' Keyword.Reserved '\n' Text ' ' Text 'Do_This' Name '(' Punctuation ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'elsif' Keyword.Reserved ' ' Text 'not' Operator.Word ' ' Text 'False' Keyword.Constant ' ' Text 'and then' Operator.Word ' ' Text 'True' Keyword.Constant ' ' Text 'then' Keyword.Reserved '\n' Text ' ' Text 'Do_That' Name ';' Punctuation '\n' Text ' ' Text 'else' Keyword.Reserved '\n' Text ' ' Text 'Panic' Name ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'if' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'blah' Name.Function ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'function' Keyword.Declaration ' ' Text '"*"' Name.Function ' ' Text '(' Punctuation 'Left' Name.Variable ',' Punctuation ' ' Text 'Right' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'Integer' Name.Variable ')' Punctuation ' ' Text 'return' Keyword.Reserved ' ' Text 'Integer' Keyword.Type ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text 'begin' Keyword.Reserved '\n' Text ' ' Text '<>' Name.Label '\n' Text ' ' Text 'goto' Keyword.Reserved ' ' Text 'Goto_Label' Name ';' Punctuation '\n' Text ' ' Text 'return' Keyword.Reserved ' ' Text 'Left' Name ' ' Text '+' Operator ' ' Text 'Right' Name ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text '"*"' Name.Function ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'function' Keyword.Declaration ' ' Text 'Function_Specification' Name.Function '\n' Text ' ' Text '(' Punctuation 'Param_1' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'Blah' Name.Variable ';' Punctuation ' ' Text '\n' Text ' ' Text 'Param2' Name.Variable ',' Punctuation ' ' Text 'param3' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'access' Name.Variable ' ' Text 'Blah_Type' Name.Variable ' ' Text ':=' Punctuation ' ' Text '0' Name.Variable ')' Punctuation '\n' Text ' ' Text 'return' Keyword.Reserved ' ' Text 'It_Type' Name ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'package' Keyword.Declaration ' ' Text 'Rename_Check' Name.Class ' ' Text 'renames' Keyword.Reserved ' ' Text 'Ada.Text_IO' Name.Class ';' Punctuation '\n\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'New_Float' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'delta' Keyword.Reserved ' ' Text '0.001' Literal.Number.Float ' ' Text 'digits' Keyword.Reserved ' ' Text '12' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'package' Keyword.Declaration ' ' Text 'Package_Inst' Name.Class ' ' Text 'is new' Keyword.Reserved ' ' Text 'Ada.Strings.Bounded.Generic_Bounded_Length' Name.Class '\n' Text ' ' Text '(' Punctuation 'Max' Name.Variable ' ' Text '=>' Punctuation ' ' Text 'M' Text 'A' Text 'X' Text '_' Text 'K' Text 'E' Text 'Y' Text 'W' Text 'O' Text 'R' Text 'D' Text '_' Text 'L' Text 'E' Text 'N' Text 'G' Text 'T' Text 'H' Text '_' Text 'C' Text ')' Punctuation ';' Punctuation '\n\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Array_Decl12' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'array' Keyword.Reserved ' ' Text '(' Punctuation 'Positive' Keyword.Type ' ' Text 'range' Keyword.Reserved ' ' Text '<>' Punctuation ')' Punctuation ' ' Text 'of' Keyword.Reserved ' ' Text 'SB' Name '.' Punctuation 'Bounded_String' Name ';' Punctuation '\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Array_Decl3' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'array' Keyword.Reserved ' ' Text '(' Punctuation 'New_Type' Keyword.Type ' ' Text 'range' Keyword.Reserved ' ' Text 'Thing_1' Name ' ' Text '.' Punctuation '.' Punctuation ' ' Text 'Thing_2' Name ')' Punctuation ' ' Text 'of' Keyword.Reserved ' ' Text 'SB' Name '.' Punctuation 'Bounded_String' Name ';' Punctuation '\n\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Boring_Type' Keyword.Type ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text '(' Punctuation 'Start' Name.Variable ',' Punctuation '\n' Text ' ' Text 'End_Error' Name.Variable ')' Punctuation ';' Punctuation '\n\n' Text ' ' Text 'subtype' Keyword.Declaration ' ' Text 'Sub_Type_check' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'Character' Keyword.Type ' ' Text 'range' Keyword.Reserved ' ' Text "'" Punctuation '0' Name.Attribute "'" Punctuation ' ' Text '.' Punctuation '.' Punctuation ' ' Text "'" Punctuation '9' Name.Attribute "'" Punctuation ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'Initialized_Array' Name.Constant ' ' Text ':' Punctuation ' ' Text 'constant' Keyword.Reserved ' ' Text 'Transistion_Array_T' Name ' ' Text ':=' Punctuation '\n' Text ' ' Text '(' Punctuation 'Start' Name ' ' Text '=>' Punctuation '\n' Text ' ' Text '(' Punctuation 'Letter_Lower' Name ' ' Text '|' Punctuation ' ' Text 'Letter_Upper' Name ' ' Text '=>' Punctuation ' ' Text 'Saw_Alpha' Name ',' Punctuation '\n' Text ' ' Text "' '" Literal.String.Character ' ' Text '|' Punctuation ' ' Text 'HT' Name ' ' Text '|' Punctuation ' ' Text 'CR' Name ' ' Text '|' Punctuation ' ' Text 'LF' Name ' ' Text '=>' Punctuation ' ' Text 'Start' Name ',' Punctuation '\n' Text ' ' Text 'others' Keyword.Reserved ' ' Text '=>' Punctuation ' ' Text 'Begin_Error' Name ')' Punctuation ',' Punctuation '\n\n' Text ' ' Text 'End_Error' Name ' ' Text '=>' Punctuation ' ' Text '(' Punctuation 'others' Keyword.Reserved ' ' Text '=>' Punctuation ' ' Text 'Start' Name ')' Punctuation '\n\n' Text ' ' Text ')' Punctuation ';' Punctuation '\n\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Recorder' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'record' Keyword.Reserved '\n' Text ' ' Text 'Advance' Name ' ' Text ':' Punctuation ' ' Text 'Boolean' Keyword.Type ';' Punctuation '\n' Text ' ' Text 'Return_Token' Name ' ' Text ':' Punctuation ' ' Text 'Token_T' Name ';' Punctuation '\n' Text ' ' Text 'end record' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'for' Keyword.Reserved ' ' Text 'Recorder' Name ' ' Text 'use' Keyword.Namespace ' ' Text '8' Name ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Null_Record' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'null record' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Discriminated_Record' Keyword.Type ' ' Text '(' Punctuation 'Size' Name.Variable ' ' Text ': ' Punctuation 'Natural' Name.Variable ')' Punctuation ' ' Text 'is' Keyword.Reserved ' ' Text '\n' Text ' ' Text 'record' Keyword.Reserved '\n' Text ' ' Text 'A' Name ' ' Text ':' Punctuation ' ' Text 'String' Keyword.Type ' ' Text '(' Punctuation '1' Literal.Number.Integer ' ' Text '.' Punctuation '.' Punctuation ' ' Text 'Size' Name ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'end record' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'pragma' Keyword.Reserved ' ' Text 'Unchecked_Union' Comment.Preproc ' ' Text '(' Punctuation 'Union' Name ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'pragma' Keyword.Reserved ' ' Text 'Convention' Comment.Preproc ' ' Text '(' Punctuation 'C' Name ',' Punctuation ' ' Text 'Union' Name ')' Punctuation ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Person' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'tagged' Keyword.Reserved ' ' Text '\n' Text ' ' Text 'record' Keyword.Reserved '\n' Text ' ' Text 'Name' Name ' ' Text ':' Punctuation ' ' Text 'String' Keyword.Type ' ' Text '(' Punctuation '1' Literal.Number.Integer ' ' Text '.' Punctuation '.' Punctuation ' ' Text '10' Literal.Number.Integer ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'Gender' Name ' ' Text ':' Punctuation ' ' Text 'Gender_Type' Name ';' Punctuation '\n' Text ' ' Text 'end record' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Programmer' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'new' Keyword.Reserved ' ' Text 'Person' Name ' ' Text 'with' Keyword.Reserved '\n' Text ' ' Text 'record' Keyword.Reserved '\n' Text ' ' Text 'Skilled_In' Name ' ' Text ':' Punctuation ' ' Text 'Language_List' Name ';' Punctuation '\n' Text ' ' Text 'Favorite_Langauge' Name ' ' Text ':' Punctuation ' ' Text 'Python_Type' Name ';' Punctuation '\n' Text ' ' Text 'end record' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'type' Keyword.Declaration ' ' Text 'Programmer' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'new' Keyword.Reserved ' ' Text 'Person' Name ' ' Text '\n' Text ' ' Text 'and' Keyword.Reserved ' ' Text 'Printable' Name ' ' Text '\n' Text ' ' Text 'with' Keyword.Reserved ' ' Text '\n' Text ' ' Text 'record' Keyword.Reserved '\n' Text ' ' Text 'Skilled_In' Name ' ' Text ':' Punctuation ' ' Text 'Language_List' Name ';' Punctuation '\n' Text ' ' Text 'Blah' Name ' ' Text ':' Punctuation ' ' Text 'aliased' Keyword.Reserved ' ' Text 'Integer' Keyword.Type ';' Punctuation '\n' Text ' ' Text 'end record' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text '---------------------\n' Comment.Single ' ' Text '-- Scan_Next_Token --\n' Comment.Single ' ' Text '---------------------\n' Comment.Single ' ' Text '\n' Text ' ' Text 'task' Keyword.Declaration ' ' Text 'Cyclic_Buffer_Task_Type' Name ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text 'entry' Keyword.Declaration ' ' Text 'Insert' Name.Function ' ' Text '(' Punctuation 'An_Item' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'Item' Name.Variable ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'entry' Keyword.Declaration ' ' Text 'Remove' Name.Function ' ' Text '(' Punctuation 'An_Item' Name.Variable ' ' Text ': ' Punctuation 'out' Name.Variable ' ' Text 'Item' Name.Variable ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Cyclic_Buffer_Task_Type' Name.Function ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'task' Keyword.Declaration ' ' Text 'body' Keyword.Reserved ' ' Text 'Cyclic_Buffer_Task_Type' Name ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text 'Q_Size' Name.Constant ' ' Text ':' Punctuation ' ' Text 'constant' Keyword.Reserved ' ' Text ':=' Punctuation ' ' Text '100' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'subtype' Keyword.Declaration ' ' Text 'Q_Range' Keyword.Type ' ' Text 'is' Keyword.Reserved ' ' Text 'Positive' Keyword.Type ' ' Text 'range' Keyword.Reserved ' ' Text '1' Literal.Number.Integer ' ' Text '.' Punctuation '.' Punctuation ' ' Text 'Q_Size' Name ';' Punctuation '\n' Text ' ' Text 'Length' Name ' ' Text ':' Punctuation ' ' Text 'Natural' Keyword.Type ' ' Text 'range' Keyword.Reserved ' ' Text '0' Literal.Number.Integer ' ' Text '.' Punctuation '.' Punctuation ' ' Text 'Q_Size' Name ' ' Text ':=' Punctuation ' ' Text '0' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'Head' Name ',' Punctuation ' ' Text 'Tail' Name ' ' Text ':' Punctuation ' ' Text 'Q_Range' Name ' ' Text ':=' Punctuation ' ' Text '1' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'Data' Name ' ' Text ':' Punctuation ' ' Text 'array' Keyword.Reserved ' ' Text '(' Punctuation 'Q_Range' Name ')' Punctuation ' ' Text 'of' Keyword.Reserved ' ' Text 'Item' Name ';' Punctuation '\n' Text ' ' Text 'begin' Keyword.Reserved '\n' Text ' ' Text 'loop' Keyword.Reserved '\n' Text ' ' Text 'select' Keyword.Reserved '\n' Text ' ' Text 'when' Keyword.Reserved ' ' Text 'Length' Name ' ' Text '<' Operator ' ' Text 'Q_Size' Name ' ' Text '=>' Punctuation '\n' Text ' ' Text 'accept' Keyword.Reserved ' ' Text 'Insert' Name ' ' Text '(' Punctuation 'An_Item' Name ' ' Text ':' Punctuation ' ' Text 'in' Operator.Word ' ' Text 'Item' Name ')' Punctuation ' ' Text 'do' Keyword.Reserved '\n' Text ' ' Text 'Data' Name '(' Punctuation 'Tail' Name ')' Punctuation ' ' Text ':=' Punctuation ' ' Text 'An_Item' Name ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Insert' Name.Function ';' Punctuation '\n' Text ' ' Text 'Tail' Name ' ' Text ':=' Punctuation ' ' Text 'Tail' Name ' ' Text 'mod' Operator.Word ' ' Text 'Q_Size' Name ' ' Text '+' Operator ' ' Text '1' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'Length' Name ' ' Text ':=' Punctuation ' ' Text 'Length' Name ' ' Text '+' Operator ' ' Text '1' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'or' Keyword.Reserved '\n' Text ' ' Text 'when' Keyword.Reserved ' ' Text 'Length' Name ' ' Text '>' Operator ' ' Text '0' Literal.Number.Integer ' ' Text '=>' Punctuation '\n' Text ' ' Text 'accept' Keyword.Reserved ' ' Text 'Remove' Name ' ' Text '(' Punctuation 'An_Item' Name ' ' Text ':' Punctuation ' ' Text 'out' Keyword.Reserved ' ' Text 'Item' Name ')' Punctuation ' ' Text 'do' Keyword.Reserved '\n' Text ' ' Text 'An_Item' Name ' ' Text ':=' Punctuation ' ' Text 'Data' Name '(' Punctuation 'Head' Name ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Remove' Name.Function ';' Punctuation '\n' Text ' ' Text 'Head' Name ' ' Text ':=' Punctuation ' ' Text 'Head' Name ' ' Text 'mod' Operator.Word ' ' Text 'Q_Size' Name ' ' Text '+' Operator ' ' Text '1' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'Length' Name ' ' Text ':=' Punctuation ' ' Text 'Length' Name ' ' Text '-' Operator ' ' Text '1' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'select' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'loop' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Cyclic_Buffer_Task_Type' Name.Function ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text '\n' Text ' ' Text '\n' Text ' ' Text 'procedure' Keyword.Declaration ' ' Text 'Scan_Next_Token' Name.Function '\n' Text ' ' Text '(' Punctuation 'S' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'String' Name.Variable ';' Punctuation '\n' Text ' ' Text 'Start_Index' Name.Variable ' ' Text ': ' Punctuation ' ' Text 'out' Name.Variable ' ' Text 'Positive' Name.Variable ';' Punctuation '\n' Text ' ' Text 'End_Index' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'out' Name.Variable ' ' Text 'Natural' Name.Variable ';' Punctuation ' ' Text '-- Tricky comment\n' Comment.Single ' ' Text 'Line_Number' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'out' Name.Variable ' ' Text 'Positive' Name.Variable ';' Punctuation '\n' Text ' ' Text 'Token' Name.Variable ' ' Text ': ' Punctuation ' ' Text 'out' Name.Variable ' ' Text 'Token_T' Name.Variable ')' Punctuation ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'procedure' Keyword.Declaration ' ' Text 'Scan_Next_Token' Name.Function '\n' Text ' ' Text '(' Punctuation 'S' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'String' Name.Variable ';' Punctuation '\n' Text ' ' Text 'Start_Index' Name.Variable ' ' Text ': ' Punctuation ' ' Text 'out' Name.Variable ' ' Text 'Positive' Name.Variable ';' Punctuation '\n' Text ' ' Text 'End_Index' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'out' Name.Variable ' ' Text 'Natural' Name.Variable ';' Punctuation ' ' Text '-- Another comment\n' Comment.Single ' ' Text 'Line_Number' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'out' Name.Variable ' ' Text 'Positive' Name.Variable ';' Punctuation '\n' Text ' ' Text 'Token' Name.Variable ' ' Text ': ' Punctuation ' ' Text 'out' Name.Variable ' ' Text 'Token_T' Name.Variable ')' Punctuation '\n' Text ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text 'begin' Keyword.Reserved '\n' Text ' ' Text 'Scanner_Loop' Name.Label ':' Punctuation '\n ' Text 'loop' Keyword.Reserved '\n' Text ' ' Text 'if' Keyword.Reserved ' ' Text 'New_State' Name ' ' Text '=' Operator ' ' Text 'End_Error' Name ' ' Text 'then' Keyword.Reserved '\n' Text ' ' Text 'exit' Keyword.Reserved ' ' Text 'Scanner_Loop' Name ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'if' Keyword.Reserved ';' Punctuation '\n\n' Text ' ' Text 'if' Keyword.Reserved ' ' Text 'State' Name ' ' Text '=' Operator ' ' Text 'Start' Name ' ' Text 'and' Operator.Word ' ' Text 'New_State' Name ' ' Text '/' Operator '=' Operator ' ' Text 'Start' Name ' ' Text 'then' Keyword.Reserved '\n' Text ' ' Text 'Start_Index' Name ' ' Text ':=' Punctuation ' ' Text 'Peek_Index' Name ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'if' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'loop' Keyword.Reserved ' ' Text 'Scanner_Loop' Name.Function ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Scan_Next_Token' Name.Function ';' Punctuation '\n' Text ' ' Text '\n' Text ' ' Text 'procedure' Keyword.Declaration ' ' Text 'Advance' Name.Function ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text 'begin' Keyword.Reserved '\n' Text ' ' Text 'Peek_Index' Name ' ' Text ':=' Punctuation ' ' Text 'Peek_Index' Name ' ' Text '+' Operator ' ' Text '1' Literal.Number.Integer ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Advance' Name.Function ';' Punctuation '\n' Text ' ' Text '\n\n' Text ' ' Text '-- Eliminate the leading space that Ada puts in front of positive\n' Comment.Single ' ' Text '-- integer images.\n' Comment.Single ' ' Text 'function' Keyword.Declaration ' ' Text 'Image' Name.Function '(' Punctuation 'N' Name.Variable ' ' Text ': ' Punctuation 'in' Name.Variable ' ' Text 'Integer' Name.Variable ')' Punctuation ' ' Text 'return' Keyword.Reserved ' ' Text 'String' Keyword.Type ' ' Text 'is' Keyword.Reserved '\n' Text ' ' Text 'S' Name ' ' Text ':' Punctuation ' ' Text 'String' Keyword.Type ' ' Text ':=' Punctuation ' ' Text 'Integer' Keyword.Type "'" Punctuation 'Image' Name.Attribute '(' Punctuation 'N' Name ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'begin' Keyword.Reserved '\n' Text ' ' Text 'if' Keyword.Reserved ' ' Text 'S' Name '(' Punctuation '1' Literal.Number.Integer ')' Punctuation ' ' Text '=' Operator ' ' Text "' '" Literal.String.Character ' ' Text 'then' Keyword.Reserved '\n' Text ' ' Text 'return' Keyword.Reserved ' ' Text 'S' Name '(' Punctuation '2' Literal.Number.Integer ' ' Text '.' Punctuation '.' Punctuation ' ' Text 'S' Name "'" Punctuation 'Last' Name.Attribute ')' Punctuation ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'if' Keyword.Reserved ';' Punctuation '\n' Text ' ' Text 'return' Keyword.Reserved ' ' Text 'S' Name ';' Punctuation '\n' Text ' ' Text 'end' Keyword.Reserved ' ' Text 'Image' Name.Function ';' Punctuation '\n\n' Text 'end' Keyword.Reserved ' ' Text 'Scanner' Name.Function ';' Punctuation '\n' Text