aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-tokens.ads
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-05-04 21:59:35 +0200
committerTristan Gingold <tgingold@free.fr>2019-05-04 21:59:35 +0200
commit7ca14ac72c36c363d8f874c266c2730f209a0edd (patch)
treebbb7bd17960299bc03da84c1b37e0e4dafdf31c4 /src/vhdl/vhdl-tokens.ads
parentfc028b5d21727da66dc8e146b3dbcfc870c64f90 (diff)
downloadghdl-7ca14ac72c36c363d8f874c266c2730f209a0edd.tar.gz
ghdl-7ca14ac72c36c363d8f874c266c2730f209a0edd.tar.bz2
ghdl-7ca14ac72c36c363d8f874c266c2730f209a0edd.zip
vhdl: move tokens as vhdl child package.
Diffstat (limited to 'src/vhdl/vhdl-tokens.ads')
-rw-r--r--src/vhdl/vhdl-tokens.ads303
1 files changed, 303 insertions, 0 deletions
diff --git a/src/vhdl/vhdl-tokens.ads b/src/vhdl/vhdl-tokens.ads
new file mode 100644
index 000000000..b18735859
--- /dev/null
+++ b/src/vhdl/vhdl-tokens.ads
@@ -0,0 +1,303 @@
+-- Scanner token definitions.
+-- Copyright (C) 2002-2019 Tristan Gingold
+--
+-- GHDL is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 2, or (at your option) any later
+-- version.
+--
+-- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with GHDL; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+
+package Vhdl.Tokens is
+ pragma Pure (Vhdl.Tokens);
+
+ type Token_Type is
+ (
+ Tok_Invalid, -- current_token is not valid.
+
+ Tok_Left_Paren, -- (
+ Tok_Right_Paren, -- )
+ Tok_Left_Bracket, -- [
+ Tok_Right_Bracket, -- ]
+ Tok_Colon, -- :
+ Tok_Semi_Colon, -- ;
+ Tok_Comma, -- ,
+ Tok_Double_Arrow, -- =>
+ Tok_Tick, -- '
+ Tok_Double_Star, -- **
+ Tok_Assign, -- :=
+ Tok_Bar, -- |
+ Tok_Box, -- <>
+ Tok_Dot, -- .
+
+ Tok_Equal_Equal, -- == (AMS Vhdl)
+
+ Tok_Eof, -- End of file.
+ Tok_Newline,
+ Tok_Comment,
+ Tok_Character,
+ Tok_Identifier,
+ Tok_Integer,
+ Tok_Real,
+ Tok_String,
+
+ -- This token corresponds to a base specifier followed by bit_value.
+ -- The base specifier is stored in Name_Buffer/Name_Length like an
+ -- identifier (in lowercase), the String8_Id contains the expanded bit
+ -- value.
+ Tok_Bit_String,
+
+ -- An integer immediately followed by a letter. This is used by to
+ -- scan vhdl 2008 (and later) bit string with a length.
+ Tok_Integer_Letter,
+
+ -- relational_operator
+ Tok_Equal, -- =
+ Tok_Not_Equal, -- /=
+ Tok_Less, -- <
+ Tok_Less_Equal, -- <=
+ Tok_Greater, -- >
+ Tok_Greater_Equal, -- >=
+
+ Tok_Match_Equal, -- ?=
+ Tok_Match_Not_Equal, -- ?/=
+ Tok_Match_Less, -- ?<
+ Tok_Match_Less_Equal, -- ?<=
+ Tok_Match_Greater, -- ?>
+ Tok_Match_Greater_Equal, -- ?>=
+
+ -- sign token
+ Tok_Plus, -- +
+ Tok_Minus, -- -
+ -- and adding_operator
+ Tok_Ampersand, -- &
+
+ -- VHDL 2008
+ Tok_Condition, -- ??
+ Tok_Double_Less, -- <<
+ Tok_Double_Greater, -- >>
+ Tok_Caret, -- ^
+
+ -- PSL
+ Tok_And_And, -- &&
+ Tok_Bar_Bar, -- ||
+ Tok_Left_Curly, -- {
+ Tok_Right_Curly, -- }
+ Tok_Exclam_Mark, -- !
+ Tok_Brack_Star, -- [*
+ Tok_Brack_Plus_Brack, -- [+]
+ Tok_Brack_Arrow, -- [->
+ Tok_Brack_Equal, -- [=
+ Tok_Bar_Arrow, -- |->
+ Tok_Bar_Double_Arrow, -- |=>
+ Tok_Minus_Greater, -- ->
+ Tok_Arobase, -- @
+
+ -- multiplying operator
+ Tok_Star, -- *
+ Tok_Slash, -- /
+ Tok_Mod, -- mod
+ Tok_Rem, -- rem
+
+ -- miscellaneous operator
+ Tok_Abs,
+ Tok_Not,
+
+ -- Key words
+ Tok_Access,
+ Tok_After,
+ Tok_Alias,
+ Tok_All,
+ Tok_Architecture,
+ Tok_Array,
+ Tok_Assert,
+ Tok_Attribute,
+
+ Tok_Begin,
+ Tok_Block,
+ Tok_Body,
+ Tok_Buffer,
+ Tok_Bus,
+
+ Tok_Case,
+ Tok_Component,
+ Tok_Configuration,
+ Tok_Constant,
+
+ Tok_Disconnect,
+ Tok_Downto,
+
+ Tok_Else,
+ Tok_Elsif,
+ Tok_End,
+ Tok_Entity,
+ Tok_Exit,
+
+ Tok_File,
+ Tok_For,
+ Tok_Function,
+
+ Tok_Generate,
+ Tok_Generic,
+ Tok_Guarded,
+
+ Tok_If,
+ Tok_In,
+ Tok_Inout,
+ Tok_Is,
+
+ Tok_Label,
+ Tok_Library,
+ Tok_Linkage,
+ Tok_Loop,
+
+ Tok_Map,
+
+ Tok_New,
+ Tok_Next,
+ Tok_Null,
+
+ Tok_Of,
+ Tok_On,
+ Tok_Open,
+ Tok_Others,
+ Tok_Out,
+
+ Tok_Package,
+ Tok_Port,
+ Tok_Procedure,
+ Tok_Process,
+
+ Tok_Range,
+ Tok_Record,
+ Tok_Register,
+ Tok_Report,
+ Tok_Return,
+
+ Tok_Select,
+ Tok_Severity,
+ Tok_Signal,
+ Tok_Subtype,
+
+ Tok_Then,
+ Tok_To,
+ Tok_Transport,
+ Tok_Type,
+
+ Tok_Units,
+ Tok_Until,
+ Tok_Use,
+
+ Tok_Variable,
+
+ Tok_Wait,
+ Tok_When,
+ Tok_While,
+ Tok_With,
+
+ -- logical token:
+ Tok_And,
+ Tok_Or,
+ Tok_Xor,
+ Tok_Nand,
+ Tok_Nor,
+
+ -- Tokens below this line are key words in vhdl93 but not in vhdl87
+ -- Note: xnor is the first one, as it is a logical token.
+ Tok_Xnor,
+
+ Tok_Group,
+ Tok_Impure,
+ Tok_Inertial,
+ Tok_Literal,
+ Tok_Postponed,
+ Tok_Pure,
+ Tok_Reject,
+ Tok_Shared,
+ Tok_Unaffected,
+
+ -- shift_operator
+ Tok_Sll,
+ Tok_Sla,
+ Tok_Sra,
+ Tok_Srl,
+ Tok_Rol,
+ Tok_Ror,
+
+ -- Added by Vhdl 2000:
+ Tok_Protected,
+
+ -- Added by vhdl 2008:
+ Tok_Context,
+ Tok_Parameter,
+
+ -- AMS reserved words
+ Tok_Across,
+ Tok_Break,
+ Tok_Limit,
+ Tok_Nature,
+ Tok_Noise,
+ Tok_Procedural,
+ Tok_Quantity,
+ Tok_Reference,
+ Tok_Spectrum,
+ Tok_Subnature,
+ Tok_Terminal,
+ Tok_Through,
+ Tok_Tolerance,
+
+ -- PSL words
+ Tok_Psl_Default,
+ Tok_Psl_Clock,
+ Tok_Psl_Property,
+ Tok_Psl_Sequence,
+ Tok_Psl_Endpoint,
+ Tok_Psl_Cover,
+
+ Tok_Psl_Const,
+ Tok_Psl_Boolean,
+ Tok_Inf,
+
+ Tok_Within,
+ Tok_Abort,
+ Tok_Before,
+ Tok_Always,
+ Tok_Never,
+ Tok_Eventually,
+ Tok_Next_A,
+ Tok_Next_E,
+ Tok_Next_Event,
+ Tok_Next_Event_A,
+ Tok_Next_Event_E
+ );
+
+ -- To ease interfacing
+ pragma Convention (C, Token_Type);
+
+ subtype Token_Logical_Type is Token_Type range
+ Tok_And .. Tok_Xnor;
+
+ subtype Token_Relational_Operator_Type is Token_Type range
+ Tok_Equal .. Tok_Match_Greater_Equal;
+ subtype Token_Shift_Operator_Type is Token_Type range
+ Tok_Sll .. Tok_Ror;
+ subtype Token_Sign_Type is Token_Type range
+ Tok_Plus .. Tok_Minus;
+ subtype Token_Adding_Operator_Type is Token_Type range
+ Tok_Plus .. Tok_Ampersand;
+ subtype Token_Multiplying_Operator_Type is Token_Type range
+ Tok_Star .. Tok_Rem;
+
+ Tok_First_Keyword : constant Tokens.Token_Type := Tokens.Tok_Mod;
+
+ -- Return the name of the token.
+ function Image (Token: Token_Type) return String;
+end Vhdl.Tokens;