如何访问字段?

时间:2013-07-20 22:10:53

标签: field ada

我有一个关于如何从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;

但它似乎不喜欢这一行的第二部分。我是否错过了如何访问其他文件中的字段?

2 个答案:

答案 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的一个或另一个含义是不可能的。