コード例 #1
0
        public ConstDefinition(CodeRange start, Identifier id, LaxExpression value) : base(start, id)
        {
            if (value == null)
                throw new ArgumentNullException("value");

            this.Value = value;
        }
コード例 #2
0
        protected Definition(CodeRange pos, Identifier name)
        {
            if (pos == null)
                throw new ArgumentNullException("pos");
            if (name == null)
                throw new ArgumentNullException("name");

            CodeRange = pos.Expand2(name);
            Name = name;
        }
コード例 #3
0
ファイル: BlockExtensions.cs プロジェクト: hultqvist/lax
 public static Definition GetDefinition(this Block block, Identifier def)
 {
     {
         UnitDefinition unit;
         if (block.Units.TryGetValue(def, out unit))
             return unit;
     }
     {
         ConstDefinition constant;
         if (block.Constants.TryGetValue(def, out constant))
             return constant;
     }
     {
         VarDefinition variable;
         if (block.Variables.TryGetValue(def, out variable))
             return variable;
     }
     {
         FuncDefinition function;
         if (block.Functions.TryGetValue(def, out function))
             return function;
     }
     return null;
 }
コード例 #4
0
ファイル: CodeFormat.cs プロジェクト: hultqvist/lax
 public static string FormatIdentifier(Identifier i)
 {
     return i.Name;
 }
コード例 #5
0
 public static Identifier ToIdentifier(this Token token)
 {
     var it = (IdentifierToken)token;
     var exp = new Identifier(token.CodeRange, token.Name);
     return exp;
 }
コード例 #6
0
 public FuncDefinition(CodeRange pos, Identifier name) : base(pos, name)
 {
 }
コード例 #7
0
 public FuncDefinition(Identifier name) : base(CodeRange.Zero, name)
 {
 }
コード例 #8
0
 public VarDefinition(CodeRange start, Identifier id) : base(start, id)
 {
 }
コード例 #9
0
 public FunctionCall(CodeRange pos, Identifier functionName) : base(ExprType.FunctionCall)
 {
     CodeRange = pos;
     Name = functionName;
 }
コード例 #10
0
 public UnitDefinition(CodeRange start, Identifier name) : base(start, name)
 {
 }
コード例 #11
0
ファイル: BlockExtensions.cs プロジェクト: hultqvist/lax
 public static VarDefinition GetVariable(this Block block, Identifier id)
 {
     return block.Variables[id];
 }
コード例 #12
0
ファイル: Interpreter.cs プロジェクト: hultqvist/lax
        Literal EvaluateVariable(Identifier variable)
        {
            Literal lit;
            if (variables.TryGetValue(variable, out lit))
            {
                if (lit == null)
                    throw new SemanticError(variable, "Unassinged variable");
                return lit;
            }

            throw new SemanticError(variable, "Undefined variable: " + variable.Name);
        }
コード例 #13
0
ファイル: Unit.cs プロジェクト: hultqvist/lax
 public Unit(Identifier name)
 {
     AddExponent(name, 1);
 }
コード例 #14
0
ファイル: Unit.cs プロジェクト: hultqvist/lax
        void AddExponent(Identifier key, int value)
        {
            Debug.Assert(value != 0);
            if (value == 0)
                return;

            if (Exponent.ContainsKey(key))
            {
                var r = Exponent[key] += value;
                if (r == 0)
                    Exponent.Remove(key);
            }
            else
            {
                if (value != 0)
                    Exponent.Add(key, value);
            }
        }