コード例 #1
0
ファイル: CodeResolver.cs プロジェクト: hlorenzi/pocketl
 private void ResolveExprName(ref int segment, sema.Code.Lvalue destination, syn.Node.Identifier node)
 {
     this.code.AddInstruction(segment, new sema.Code.Instruction.CopyLvalue
     {
         span        = node.span,
         destination = destination,
         source      = this.ResolveLvalue(ref segment, node)
     });
 }
コード例 #2
0
ファイル: CodeResolver.cs プロジェクト: hlorenzi/pocketl
        private sema.Code.Lvalue ResolveLvalueName(ref int segment, syn.Node.Identifier node)
        {
            var registerIndex = this.FindRegisterByName(node.token.excerpt);

            if (registerIndex >= 0)
            {
                return new sema.Code.Lvalue.Register {
                           span = node.span, index = registerIndex
                }
            }
            ;

            else
            {
                this.reporter.Error("unknown `" + node.token.excerpt + "`", new diagn.Caret(node.span));

                return(new sema.Code.Lvalue.Error {
                    span = node.span
                });
            }
        }
コード例 #3
0
        private static void TryResolveIdentifier(Context ctx, diagn.Reporter reporter, mod.Unit unit, syn.Node.Identifier node)
        {
            if (node == null)
            {
                return;
            }

            if (unit.semanticMap.references.ContainsKey(node))
            {
                return;
            }

            var identifier     = node.token.excerpt;
            var hNamespaceNode = ctx.names.Find(identifier);

            if (hNamespaceNode != null)
            {
                unit.semanticMap.references[node] = hNamespaceNode;
            }
        }