1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.millscript.millscript.expr;
23
24 import org.millscript.millscript.alert.Alerts;
25 import org.millscript.millscript.vm.CompilerState;
26
27 /**
28 * This class implements an import expression.
29 *
30 * @see org.millscript.millscript.syntax.ImportSyntax
31 */
32 public final class ImportExpr extends DirectiveExpr {
33
34 /**
35 * The nickanme for the package to be imported.
36 */
37 private final String nickname;
38
39 /**
40 * The fully qualified name for the package to be imported.
41 */
42 private final String fqn;
43
44 /**
45 * Creates a new import expression for the specified nickname and qualified
46 * name.
47 *
48 * @param a the nickame of the package to be imported
49 * @param b the qualified name of the package to be imported
50 */
51 public ImportExpr( final String a, final String b ) {
52 nickname = a;
53 fqn = b;
54 }
55
56 /**
57 * Returns the fully qualified name of the package to be imported.
58 *
59 * @return a String containing the fully qualified package name
60 */
61 public String getFullName() {
62 return fqn;
63 }
64
65 /**
66 * Returns the nickname of the package to be imported.
67 *
68 * @return a String containing the package nickname
69 */
70 public String getNickname() {
71 return nickname;
72 }
73
74 /**
75 * @see org.millscript.millscript.expr.Expr#resolve(org.millscript.millscript.vm.CompilerState)
76 */
77 @Override
78 public void resolve( final CompilerState state ) {
79
80
81 throw(
82 Alerts.compile(
83 "Import not at top-level",
84 "Imports may only be introduced at top-level"
85 ).culprit( "import name", fqn ).mishap()
86 );
87 }
88
89 }