示例#1
0
 private static string Location(TokenItem current)
 {
     if (current == null)
     {
         return("");
     }
     return($" at line {current.Line} column {current.Column} index {current.Index}");
 }
示例#2
0
        TokenItem CreateToken(string name, string value, int?index = null)
        {
            var token = new TokenItem()
            {
                Index  = index ?? Index - value.Length,
                Column = Column - value.Length,
                Line   = Line,
                Value  = value,
                Token  = new Token()
                {
                    Name = name
                }
            };

            return(token);
        }
示例#3
0
 public PascalProgramNode(TokenItem name, BlockNode block)
 {
     ProgramName = name?.Value;
     Block       = block;
     TokenItem   = name;
 }
示例#4
0
 public HaltException(ErrorCode error, TokenItem token, string message, Exception ex = null) : base(error, token, message, ex)
 {
 }
示例#5
0
 public SemanticException(ErrorCode error, TokenItem token, string message) : base(error, token, message)
 {
 }
示例#6
0
 public ParserException(ErrorCode error, TokenItem token, string message) : base(error, token, message)
 {
 }
示例#7
0
 public PascalException(ErrorCode error, TokenItem token, string message, Exception ex) : base(message + Location(token), ex)
 {
     Error = error;
     Token = token;
 }
示例#8
0
 public PascalException(ErrorCode error, TokenItem token, string message) : this(error, token, message, null)
 {
 }
示例#9
0
 public AssignmentNode(VariableOrFunctionCall left, TokenItem item, Node right)
 {
     Left      = left;
     Right     = right;
     TokenItem = item;
 }
示例#10
0
 public BinaryOperator(Node left, Node right, TokenItem @operator)
 {
     Left      = left;
     Right     = right;
     TokenItem = @operator;
 }