Example #1
0
        internal override void Parse(ObjWastTranspiler transpiler)
        {
            // ex. (func private $test (param i32) (result i32) (local i32) ... )

            if (identifier == null && !parseBody)
            {
                string name = transpiler.ParseName();
                access = OwMemberAccess.Private;

                if (!string.IsNullOrWhiteSpace(name))
                {
                    var tempAccess = transpiler.ParseAccess(name);

                    if (tempAccess == null)
                    {
                        throw new Exception();
                    }

                    access = tempAccess.Value;
                }

                identifier = transpiler.ParseIdentifier();
                return;
            }

            parseBody = true;
        }
Example #2
0
        internal override void Parse(ObjWastTranspiler transpiler)
        {
            string         identifier = null;
            OwMemberAccess access     = OwMemberAccess.Private;
            OwType         type;

            string name = transpiler.ParseName();

            if (string.IsNullOrWhiteSpace(name))
            {
                // ex. (field $test i32)

                identifier = transpiler.ParseIdentifier();

                if (identifier == null)
                {
                    throw new Exception();
                }

                type = transpiler.ParseType(@struct.Module);
            }
            else
            {
                // ex. (field i32)
                // ex. (field private i32)
                // ex. (field private $test i32)

                OwMemberAccess?tempAccess = transpiler.ParseAccess(name);

                if (tempAccess == null)
                {
                    // ex. (field i32)
                    type = transpiler.ParseType(@struct.Module, name);
                }
                else
                {
                    // ex. (field private i32)
                    // ex. (field private $test i32)

                    access     = tempAccess.Value;
                    identifier = transpiler.ParseIdentifier();
                    type       = transpiler.ParseType(@struct.Module);
                }
            }

            @struct.DefineField(access, identifier, type);
        }