Execute HQ9+/Ada: Difference between revisions

From Rosetta Code
Content added Content deleted
(Implemented Accumulator)
m (Fixed syntax highlighting.)
 
Line 1: Line 1:
{{implementation|HQ9+}}{{collection|RCHQ9+}}
{{implementation|HQ9+}}{{collection|RCHQ9+}}


<lang Ada>with Ada.Text_IO;
<syntaxhighlight lang="ada">with Ada.Text_IO;
procedure HQ9Plus is
procedure HQ9Plus is
-- took example from bottle-task
-- took example from bottle-task
Line 37: Line 37:
begin
begin
Interpret_HQ9Plus (Test_Code);
Interpret_HQ9Plus (Test_Code);
end HQ9Plus;</lang>
end HQ9Plus;</syntaxhighlight>

Latest revision as of 10:04, 1 September 2022

Execute HQ9+/Ada is an implementation of HQ9+. Other implementations of HQ9+.
Execute HQ9+/Ada is part of RCHQ9+. You may find other members of RCHQ9+ at Category:RCHQ9+.
with Ada.Text_IO;
procedure HQ9Plus is
   -- took example from bottle-task
   procedure Bottles is
   begin
      for X in reverse 1..99 loop
         Ada.Text_IO.Put_Line(Integer'Image(X) & " bottles of beer on the wall");
         Ada.Text_IO.Put_Line(Integer'Image(X) & " bottles of beer");
         Ada.Text_IO.Put_Line("Take one down, pass it around");
         Ada.Text_IO.Put_Line(Integer'Image(X - 1) & " bottles of beer on the wall");
         Ada.Text_IO.New_Line;
      end loop;
   end Bottles;

   procedure Interpret_HQ9Plus (Input : in String) is
      Accumulator : Natural := 0;
   begin
      for I in Input'Range loop
         case Input (I) is
            when 'H'|'h' =>
               Ada.Text_IO.Put_Line ("Hello, World!");
            when 'Q'|'q' =>
               Ada.Text_IO.Put_Line (Input);
            when '9'     =>
               Bottles;
            when '+'     =>
               Accumulator := Accumulator + 1;
            when others  =>
               null;
         end case;
      end loop;
   end Interpret_HQ9Plus;

   Test_Code : String := "hq9+HqQ+Qq";
begin
   Interpret_HQ9Plus (Test_Code);
end HQ9Plus;