mirror of
				https://github.com/We-Dont-Byte/Mind_Reader.git
				synced 2025-02-04 10:38:42 +00:00 
			
		
		
		
	Oops: Upload all files changed on VM in the last 5 days. Commit info lost.
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
				
			|||||||
import * as vscode from 'vscode';
 | 
					import * as vscode from 'vscode';
 | 
				
			||||||
import * as path from 'path';
 | 
					import * as path from 'path';
 | 
				
			||||||
import HubManager from '../hubManager';
 | 
					import HubManager from '../hubManager';
 | 
				
			||||||
import EV3Manager from '../ev3Manager';
 | 
					//import EV3Manager from '../ev3Manager';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { CommandEntry } from './commandEntry';
 | 
					import { CommandEntry } from './commandEntry';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,22 +34,23 @@ export const hubCommands: CommandEntry[] = [
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    name: 'mind-reader.deleteProgram',
 | 
					    name: 'mind-reader.deleteProgram',
 | 
				
			||||||
    callback: deleteProgram
 | 
					    callback: deleteProgram
 | 
				
			||||||
  },
 | 
					  }/*,
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    name: 'mind-reader.ev3.test',
 | 
					    name: 'mind-reader.ev3.test',
 | 
				
			||||||
    callback: ev3test
 | 
					    callback: ev3test
 | 
				
			||||||
  }
 | 
					  }*/
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Current connected hub
 | 
					// Current connected hub
 | 
				
			||||||
let hub: HubManager | null = null;
 | 
					let hub: HubManager | null = null;
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
let ev3: EV3Manager | null = null;
 | 
					let ev3: EV3Manager | null = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function ev3test(): Promise<void> {
 | 
					async function ev3test(): Promise<void> {
 | 
				
			||||||
  ev3 = await EV3Manager.activate();
 | 
					  ev3 = await EV3Manager.activate();
 | 
				
			||||||
  ev3.test();
 | 
					  ev3.test();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
async function connectHub(): Promise<void> {
 | 
					async function connectHub(): Promise<void> {
 | 
				
			||||||
  if (hub && hub.isOpen()) {
 | 
					  if (hub && hub.isOpen()) {
 | 
				
			||||||
    vscode.window.showWarningMessage('LEGO Hub is already connected, reconnecting...');
 | 
					    vscode.window.showWarningMessage('LEGO Hub is already connected, reconnecting...');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,23 +167,29 @@ function createContextString(context: pl.LexNode[], line: number): string {
 | 
				
			|||||||
    let contextString: string = `Line ${line + 1}`; // 1 based
 | 
					    let contextString: string = `Line ${line + 1}`; // 1 based
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (context[0].token && context[0].token.attr) {
 | 
					    if (context[0].token && context[0].token.attr) {
 | 
				
			||||||
        contextString += ': ' + context[0].token.type.toString() + ' ' + context[0].token.attr.toString();
 | 
					        let tokenTypeString: string = ` ${context[0].token.type.toString()}`;
 | 
				
			||||||
 | 
					        contextString += `:${tokenTypeString !== 'INDENT'?tokenTypeString:" "
 | 
				
			||||||
 | 
					        } ${context[0].token.attr.toString()}`;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let i: number = 1; i < context.length; i++) {
 | 
					    for (let i: number = 1; i < context.length; i++) {
 | 
				
			||||||
        const node: pl.LexNode = context[i];
 | 
					        const node: pl.LexNode = context[i];
 | 
				
			||||||
 | 
					        const inside: string = "in";
 | 
				
			||||||
        if (node.label === 'root') {
 | 
					        if (node.label === 'root') {
 | 
				
			||||||
            // root
 | 
					            // root
 | 
				
			||||||
            contextString += ' in the Document Root';
 | 
					            if (vscode.window.activeTextEditor?.document.uri) {
 | 
				
			||||||
 | 
					                contextString += ` ${inside} ${vscode.workspace.asRelativePath(vscode.window.activeTextEditor?.document.uri)}`;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                contextString += ` ${inside} the Document`;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            continue;
 | 
					            continue;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (node.token && node.token.type !== pl.PylexSymbol.EMPTY &&
 | 
					        if (node.token && node.token.type !== pl.PylexSymbol.EMPTY &&
 | 
				
			||||||
            node.token.type !== pl.PylexSymbol.INDENT) {
 | 
					            node.token.type !== pl.PylexSymbol.INDENT) {
 | 
				
			||||||
            contextString += ' inside ' + node.token.type.toString();
 | 
					            contextString += ` ${inside} ${node.token.type.toString()}`;
 | 
				
			||||||
            if (node.token.attr) {
 | 
					            if (node.token.attr) {
 | 
				
			||||||
                contextString += ' ' + node.token.attr.toString();
 | 
					                contextString += ` ${node.token.attr.toString()}`;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,14 @@ const rules: Rule[] = [
 | 
				
			|||||||
        pattern: /^\s*with\s+(?<attr>[^:]+):\s*$/,
 | 
					        pattern: /^\s*with\s+(?<attr>[^:]+):\s*$/,
 | 
				
			||||||
        type: Symbol.WITH
 | 
					        type: Symbol.WITH
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        pattern: /^\s*(#.*)?$/,
 | 
				
			||||||
 | 
					        type: Symbol.EMPTY
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        pattern: /\s*(?<attr>[^#]+)?$/,
 | 
				
			||||||
 | 
					        type: Symbol.INDENT
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -143,17 +151,7 @@ export default class Lexer {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // No rules matched
 | 
					            // No rules matched
 | 
				
			||||||
 | 
					            token = new LineToken(Symbol.EMPTY, this.pos, 999999);
 | 
				
			||||||
            // TODO: move to rules
 | 
					 | 
				
			||||||
            if (/^\s*(#.*)?$/.test(line)) {
 | 
					 | 
				
			||||||
                // "empty" line
 | 
					 | 
				
			||||||
                token = new LineToken(Symbol.EMPTY, this.pos, 999999);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            else {
 | 
					 | 
				
			||||||
                // This is an INDENT token
 | 
					 | 
				
			||||||
                token = new LineToken(Symbol.INDENT, this.pos, indent);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            this._currToken = token;
 | 
					            this._currToken = token;
 | 
				
			||||||
            this.pos++;
 | 
					            this.pos++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user