我有一个关于如何从ada中的另一个文件访问字段的问题。
我有这样一种类型:
type Token_Type is (INT_LIT_TOK, IDENT_TOK, ASSIGN_OP_TOK, ADD_OP_TOK,
SUB_OP_TOK, MULT_OP_TOK, DIV_OP_TOK, LE_TOK, LT_TOK,
GE_TOK, EQ_TOK, NE_TOK, GT_TOK, EOS_TOK, IF_TOK,
PRINT_TOK, DO_TOK, WHILE_TOK, THEN_TOK, ELSE_TOK,
LOOP_TOK, LEFT_PAREN_TOK, RIGHT_PAREN_TOK, MAIN_TOK,
SUB_TOK, END_TOK);
现在我有另一个文件,我想做一个比较,看看我有什么是这些类型之一,所以我做了
tok = Token_Type.INT_LIT;
但它似乎不喜欢这一行的第二部分。我是否错过了如何访问其他文件中的字段?
答案 0 :(得分:2)
如果您在Token_Type
中声明了Some_Package
类型的声明,并且假设tok
的类型为Some_Package.Token_Type
,则应键入
tok = Some_Package.INT_LIT
答案 1 :(得分:0)
一些其他注释:如果有一个USE子句提到将应用于您的语句的包,则不需要使用包名称:
procedure Something is
use Some_Package;
begin
if tok = INT_LIT then ...
end Something;
或者,在Ada 2012中:
procedure Something is
use all type Some_Package.Token_Type;
begin
if tok = INT_LIT then ...
end Something;
如果你真的想要包含类型名称,为了让读者清楚你正在做什么,你也可以说
if tok = Some_Package.Token_Type'(Some_Package.INT_LIT) then ...
您可以根据适用的USE条款消除Some_Package.
前缀。有时您可能 以这种方式编写代码,如果名称INT_LIT不明确且编译器没有足够的上下文来确定INT_LIT的一个或另一个含义是不可能的。