Overview
Comment: | s_expressions-interpreter_loop: new generic procedure providing the main loop of a S-expression interpreter |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
654fe8f62b33db03f7ca6626c036b341 |
User & Date: | nat on 2014-05-20 20:03:54 |
Other Links: | manifest | tags |
Context
2014-05-21
| ||
20:07 | static_hash_maps-s_expressions: add generated child packages for interpreter check-in: 83a3e25ae4 user: nat tags: trunk | |
2014-05-20
| ||
20:03 | s_expressions-interpreter_loop: new generic procedure providing the main loop of a S-expression interpreter check-in: 654fe8f62b user: nat tags: trunk | |
2014-05-19
| ||
18:37 | static_hash_maps-s_expressions: new package to run static hash map generator using a S-expression description check-in: ad65c67a84 user: nat tags: trunk | |
Changes
Added src/natools-s_expressions-interpreter_loop.adb version [3902fbdc5b].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | ------------------------------------------------------------------------------ -- Copyright (c) 2014, Natacha Porté -- -- -- -- Permission to use, copy, modify, and distribute this software for any -- -- purpose with or without fee is hereby granted, provided that the above -- -- copyright notice and this permission notice appear in all copies. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -- -- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -- -- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -- -- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -- -- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -- -- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -- -- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- ------------------------------------------------------------------------------ procedure Natools.S_Expressions.Interpreter_Loop (Expression : in out Natools.S_Expressions.Lockable.Descriptor'Class; State : in out Shared_State; Context : in Shared_Context) is Event : Events.Event := Expression.Current_Event; Lock : Lockable.Lock_State; begin loop case Event is when Events.Add_Atom => Dispatch_Without_Argument (State, Context, Expression.Current_Atom); when Events.Open_List => Expression.Lock (Lock); begin Expression.Next (Event); if Event = Events.Add_Atom then declare Name : constant Atom := Expression.Current_Atom; begin Expression.Next; Dispatch_With_Arguments (State, Context, Name, Expression); end; end if; exception when others => Expression.Unlock (Lock, False); raise; end; Expression.Unlock (Lock); Event := Expression.Current_Event; exit when Event = Events.Error or Event = Events.End_Of_Input; when Events.Close_List | Events.End_Of_Input | Events.Error => exit; end case; Expression.Next (Event); end loop; end Natools.S_Expressions.Interpreter_Loop; |
Added src/natools-s_expressions-interpreter_loop.ads version [440b154b0c].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | ------------------------------------------------------------------------------ -- Copyright (c) 2014, Natacha Porté -- -- -- -- Permission to use, copy, modify, and distribute this software for any -- -- purpose with or without fee is hereby granted, provided that the above -- -- copyright notice and this permission notice appear in all copies. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -- -- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -- -- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -- -- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -- -- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -- -- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -- -- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- Natools.S_Expressions.Interpreter_Loop is a generic procedure that -- -- implements the inner loop of S-expression interpreters, leaving command -- -- dispatching to the formal procedures. -- ------------------------------------------------------------------------------ with Natools.S_Expressions.Lockable; generic type Shared_State (<>) is limited private; type Shared_Context (<>) is limited private; with procedure Dispatch_With_Arguments (State : in out Shared_State; Context : in Shared_Context; Name : in Atom; Arguments : in out Natools.S_Expressions.Lockable.Descriptor'Class) is null; with procedure Dispatch_Without_Argument (State : in out Shared_State; Context : in Shared_Context; Name : in Atom) is null; procedure Natools.S_Expressions.Interpreter_Loop (Expression : in out Natools.S_Expressions.Lockable.Descriptor'Class; State : in out Shared_State; Context : in Shared_Context); pragma Pure (Natools.S_Expressions.Interpreter_Loop); |