public void ParseCommentNewLine() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"// mod ext;")); Assert.AreEqual(0, importMods.Count); }
public void ParsesServoLayoutLib() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream(Utils.LoadResource(@"External\servo\components\layout\lib.rs"))); Assert.AreEqual(26, importMods.Count); Assert.True(importMods[new PathSegment("layout_debug")].Count == 0); Assert.True(importMods[new PathSegment("construct")].Count == 0); Assert.True(importMods[new PathSegment("context")].Count == 0); Assert.True(importMods[new PathSegment("floats")].Count == 0); Assert.True(importMods[new PathSegment("flow")].Count == 0); Assert.True(importMods[new PathSegment("flow_list")].Count == 0); Assert.True(importMods[new PathSegment("flow_ref")].Count == 0); Assert.True(importMods[new PathSegment("fragment")].Count == 0); Assert.True(importMods[new PathSegment("layout_task")].Count == 0); Assert.True(importMods[new PathSegment("inline")].Count == 0); Assert.True(importMods[new PathSegment("model")].Count == 0); Assert.True(importMods[new PathSegment("parallel")].Count == 0); Assert.True(importMods[new PathSegment("table_wrapper")].Count == 0); Assert.True(importMods[new PathSegment("table")].Count == 0); Assert.True(importMods[new PathSegment("table_caption")].Count == 0); Assert.True(importMods[new PathSegment("table_colgroup")].Count == 0); Assert.True(importMods[new PathSegment("table_rowgroup")].Count == 0); Assert.True(importMods[new PathSegment("table_row")].Count == 0); Assert.True(importMods[new PathSegment("table_cell")].Count == 0); Assert.True(importMods[new PathSegment("text")].Count == 0); Assert.True(importMods[new PathSegment("util")].Count == 0); Assert.True(importMods[new PathSegment("incremental")].Count == 0); Assert.True(importMods[new PathSegment("wrapper")].Count == 0); Assert.True(importMods[new PathSegment("extra")].Count == 0); Assert.True(importMods[new PathSegment("css")].Count == 3); Assert.True(importMods[new PathSegment("css")][new PathSegment("node_util")].Count == 0); Assert.True(importMods[new PathSegment("css")][new PathSegment("matching")].Count == 0); Assert.True(importMods[new PathSegment("css")][new PathSegment("node_style")].Count == 0); }
public void EmptyModBlock() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"mod asd { foo(); }")); Assert.AreEqual(0, importMods.Count); }
public void MergeAuthorative() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( "mod foo { mod bar; } #[path=\"foo\"] mod foo { mod baz; }")); Assert.AreEqual(1, importMods.Count); }
public void ParseCommentBlock() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"/* mod ext; */")); Assert.AreEqual(0, importMods.Count); }
public void ModuleParserSiteTest() { SyntaxTree tree = new SyntaxTree(); //Create lexer to tokenize stream WaebricLexer lexer = new WaebricLexer(new StringReader("module test\n\nsite\n site/index.html : home() ; site/index2.html : home()\nend")); lexer.LexicalizeStream(); //Parse tokenized stream ModuleParser parser = new ModuleParser(lexer.GetTokenIterator()); tree.SetRoot(parser.ParseModule()); //Check module Module module = tree.GetRoot(); Assert.IsTrue(module.GetModuleId().ToString() == "test"); Assert.AreEqual(0, module.GetImports().Count); //No imports Assert.AreEqual(0, module.GetFunctionDefinitions().Count); //No function definitions Assert.AreEqual(1, module.GetSites().Count); //One site //Check site Site site = (Site)module.GetSites().Get(0); Assert.AreEqual(2, site.GetMappings().Count); }
public void ParsePubModifier() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( "pub mod foo { pub mod bar; } #[path=\"foo\"] pub mod ex { mod baz; }")); Assert.AreEqual(1, importMods.Count); }
private static Sections RunSection(string hex) { using (var reader = BinaryTools.HexToReader(hex)) { return(ModuleParser.ToSections(reader)); } }
public void MergeModules() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"mod asd { mod foo; } mod asd { mod bar; }")); Assert.AreEqual(1, importMods.Count); Assert.AreEqual(2, importMods[new PathSegment("asd")].Count); }
public void ParseModBlock() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"fn foo { } mod asd { mod ext; }")); Assert.AreEqual(1, importMods.Count); Assert.AreEqual(1, importMods[new PathSegment("asd")].Count); Assert.AreEqual(0, importMods[new PathSegment("asd")][new PathSegment("ext")].Count); }
public void ParseLargeInnerModBlock() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"mod asd { mod bar { } mod baz { mod inner; } mod ext1; mod ext2; mod ext3; }")); Assert.AreEqual(1, importMods.Count); Assert.AreEqual(4, importMods[new PathSegment("asd")].Count); Assert.AreEqual(1, importMods[new PathSegment("asd")][new PathSegment("baz")].Count); }
public void ParseInnerModBlock() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"mod foo { mod inner; }")); Assert.AreEqual(1, importMods.Count); Assert.AreEqual(1, importMods[new PathSegment("foo")].Count); Assert.AreEqual(0, importMods[new PathSegment("foo")][new PathSegment("inner")].Count); }
public void AttributePaths() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream(Utils.LoadResource(@"Internal\mod_paths.rs"))); Assert.AreEqual(1, importMods.Count); Assert.AreEqual(1, importMods[new PathSegment("task_files", true)].Count); Assert.False(importMods.ContainsKey(new PathSegment("task_files", false))); Assert.AreEqual(0, importMods[new PathSegment("task_files", true)][new PathSegment("tls.rs", true)].Count); Assert.False(importMods[new PathSegment("task_files", true)].ContainsKey(new PathSegment("tls.rs", false))); }
public void MergeModBlocks() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream( @"fn foo { } mod asd { mod ext; } mod asd { mod bar { mod ext1; } } mod asd { mod bar { mod ext2; } }")); Assert.AreEqual(1, importMods.Count); Assert.AreEqual(2, importMods[new PathSegment("asd")].Count); Assert.AreEqual(0, importMods[new PathSegment("asd")][new PathSegment("ext")].Count); Assert.AreEqual(2, importMods[new PathSegment("asd")][new PathSegment("bar")].Count); Assert.AreEqual(0, importMods[new PathSegment("asd")][new PathSegment("bar")][new PathSegment("ext1")].Count); Assert.AreEqual(0, importMods[new PathSegment("asd")][new PathSegment("bar")][new PathSegment("ext2")].Count); }
/// <summary> /// Performs parsing of whole module (file) /// </summary> /// <param name="tokens">Tokens to parse</param> /// <returns>Parsed AST</returns> public static CoreNode Parse(Token[] tokens) { State state = new State(tokens, ""); var result = ModuleParser.Parse(state); if (state.IsErrorOccured()) { ReportError(state); } return(result); }
//Need to be careful about params here, will possibly //need to parse or be creative with GUI public void SetAxiom(string s) { axiomRep = s; axiom = ModuleParser.StringToModuleList(s, this); //axiom = new List<Module>(); //foreach(Module m in axiom) //{ // axiomRep += m; //} //foreach (char c in s) //{ // axiom.Add(new Module(c)); //} }
public void ParsesPistonImageLib() { ModuleImport importMods = ModuleParser.ParseImports(new AntlrInputStream(Utils.LoadResource(@"External\image\src\lib.rs"))); Assert.AreEqual(9, importMods.Count); Assert.True(importMods[new PathSegment("imageops")].Count == 0); Assert.True(importMods[new PathSegment("webp")].Count == 0); Assert.True(importMods[new PathSegment("ppm")].Count == 0); Assert.True(importMods[new PathSegment("png")].Count == 0); Assert.True(importMods[new PathSegment("jpeg")].Count == 0); Assert.True(importMods[new PathSegment("gif")].Count == 0); Assert.True(importMods[new PathSegment("image")].Count == 0); Assert.True(importMods[new PathSegment("dynimage")].Count == 0); Assert.True(importMods[new PathSegment("color")].Count == 0); }
private DrawingAction[] CreateDrawingActions(ModuleParser <double> parser) { var result = new List <DrawingAction>(); foreach (var module in _modules) { var info = module.Value; var name = TranslateModuleName(info.ModuleName); var action = info.GetAction(); result.Add(new DrawingAction(parser.GetModuleId(name), action)); } return(result.ToArray()); }
public static bool Parse(SyntaxContext context, int position) { var list = context.list; var offset = 0; var index = position; var count = 0; var isMissed = false; if (!ParserHelper.IsKeyword(list[index], "do")) { return(false); } else { // ignored } offset += 1; index = position + offset; while (ModuleParser.Parse(context, index)) { ; } if (list[index].type != Expression.Type.Module) { return(false); } else { // ignored } offset += 1; index = position + offset; if (!ParserHelper.IsKeyword(list[index], "end")) { return(false); } else { // ignored } offset += 1; index = position + offset; context.Insert(position, ExpressionCreator.CreateDo(list, position, offset)); context.Remove(position + 1, offset); return(true); }
public void RuleParser_SeparateModuleRepresentations_ValidInputTest(string input, string[] expectedOutputContent) { //Prepare output to format used in method return value var expectedOutput = new List <Tuple <string, string> >(); for (int i = 0; i < expectedOutputContent.Length; i += 2) { expectedOutput.Add(new Tuple <string, string>(expectedOutputContent[i], expectedOutputContent[i + 1])); } if (expectedOutputContent.Length % 2 == 1) { expectedOutput.Add(new Tuple <string, string>(expectedOutputContent[expectedOutputContent.Length - 1], null)); } var parser = new ModuleParser <int>(new IntExpressionParserFactory()); var output = parser.SeparateModulesRepresentations(input); Assert.That(output, Is.EqualTo(expectedOutput)); }
public void ToModuleWrongVersion() { Assert.That(() => ModuleParser.ToModule(BinaryTools.HexToBytes("0061736D02000000")), Throws.Exception); }
public static (SynchronousParseCoordinator parser, IRewritingManager rewritingManager) CreateWithRewriteManager(IVBE vbe, RubberduckParserState state, IProjectsRepository projectRepository, string serializedComProjectsPath = null, IDictionary <string, IEnumerable <string> > documentModuleSupertypeNames = null) { var vbeVersion = double.Parse(vbe.Version, CultureInfo.InvariantCulture); var compilationArgumentsProvider = MockCompilationArgumentsProvider(vbeVersion); var compilationsArgumentsCache = new CompilationArgumentsCache(compilationArgumentsProvider); var userComProjectsRepository = MockUserComProjectRepository(); var documentSuperTypesProvider = MockDocumentSuperTypeNamesProvider(documentModuleSupertypeNames); var ignoredProjectsSettingsProvider = MockIgnoredProjectsSettingsProviderMock(); var projectsToBeLoadedFromComSelector = new ProjectsToResolveFromComProjectsSelector(projectRepository, ignoredProjectsSettingsProvider); var path = serializedComProjectsPath ?? Path.Combine(Path.GetDirectoryName(Assembly.GetAssembly(typeof(MockParser)).Location), "Testfiles", "Resolver"); var preprocessorErrorListenerFactory = new PreprocessingParseErrorListenerFactory(); var preprocessorParser = new VBAPreprocessorParser(preprocessorErrorListenerFactory, preprocessorErrorListenerFactory); var preprocessor = new VBAPreprocessor(preprocessorParser, compilationsArgumentsCache); var mainParseErrorListenerFactory = new MainParseErrorListenerFactory(); var mainTokenStreamParser = new VBATokenStreamParser(mainParseErrorListenerFactory, mainParseErrorListenerFactory); var tokenStreamProvider = new SimpleVBAModuleTokenStreamProvider(); var stringParser = new TokenStreamParserStringParserAdapterWithPreprocessing(tokenStreamProvider, mainTokenStreamParser, preprocessor); var vbaParserAnnotationFactory = new VBAParserAnnotationFactory(WellKnownAnnotations()); var projectManager = new RepositoryProjectManager(projectRepository); var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager(); var supertypeClearer = new SynchronousSupertypeClearer(state); var parserStateManager = new SynchronousParserStateManager(state); var referenceRemover = new SynchronousReferenceRemover(state, moduleToModuleReferenceManager); var baseComDeserializer = new XmlComProjectSerializer(new MockFileSystem(), path); var comDeserializer = new StaticCachingComDeserializerDecorator(baseComDeserializer); var declarationsFromComProjectLoader = new DeclarationsFromComProjectLoader(); var referencedDeclarationsCollector = new SerializedReferencedDeclarationsCollector(declarationsFromComProjectLoader, comDeserializer); var userComProjectSynchronizer = new UserComProjectSynchronizer(state, declarationsFromComProjectLoader, userComProjectsRepository, projectsToBeLoadedFromComSelector); var comSynchronizer = new SynchronousCOMReferenceSynchronizer( state, parserStateManager, projectRepository, referencedDeclarationsCollector); var builtInDeclarationLoader = new BuiltInDeclarationLoader( state, new List <ICustomDeclarationLoader> { new DebugDeclarations(state), new SpecialFormDeclarations(state), new FormEventDeclarations(state), new AliasDeclarations(state), }); var codePaneComponentSourceCodeHandler = new CodeModuleComponentSourceCodeHandler(); var codePaneSourceCodeHandler = new ComponentSourceCodeHandlerSourceCodeHandlerAdapter(codePaneComponentSourceCodeHandler, projectRepository); //We use the same handler because to achieve consistency between the return values. var attributesSourceCodeHandler = codePaneSourceCodeHandler; var moduleParser = new ModuleParser( codePaneSourceCodeHandler, attributesSourceCodeHandler, stringParser, vbaParserAnnotationFactory); var parseRunner = new SynchronousParseRunner( state, parserStateManager, moduleParser); var declarationResolveRunner = new SynchronousDeclarationResolveRunner( state, parserStateManager, comSynchronizer); var referenceResolveRunner = new SynchronousReferenceResolveRunner( state, parserStateManager, moduleToModuleReferenceManager, referenceRemover, documentSuperTypesProvider); var parsingStageService = new ParsingStageService( comSynchronizer, builtInDeclarationLoader, parseRunner, declarationResolveRunner, referenceResolveRunner, userComProjectSynchronizer ); var parsingCacheService = new ParsingCacheService( state, moduleToModuleReferenceManager, referenceRemover, supertypeClearer, compilationsArgumentsCache, userComProjectsRepository, projectsToBeLoadedFromComSelector ); var tokenStreamCache = new StateTokenStreamCache(state); var moduleRewriterFactory = new ModuleRewriterFactory( codePaneSourceCodeHandler, attributesSourceCodeHandler); var rewriterProvider = new RewriterProvider(tokenStreamCache, moduleRewriterFactory); var selectionService = new SelectionService(vbe, projectRepository); var selectionRecoverer = new SelectionRecoverer(selectionService, state); var rewriteSessionFactory = new RewriteSessionFactory(state, rewriterProvider, selectionRecoverer); var stubMembersAttributeRecoverer = new Mock <IMemberAttributeRecovererWithSettableRewritingManager>().Object; var rewritingManager = new RewritingManager(rewriteSessionFactory, stubMembersAttributeRecoverer); var parser = new SynchronousParseCoordinator( state, parsingStageService, parsingCacheService, projectManager, parserStateManager, rewritingManager); return(parser, rewritingManager); }
public static (SynchronousParseCoordinator parser, IRewritingManager rewritingManager) CreateWithRewriteManager(IVBE vbe, RubberduckParserState state, IProjectsRepository projectRepository, string serializedComProjectsPath = null) { var vbeVersion = double.Parse(vbe.Version, CultureInfo.InvariantCulture); var compilationArgumentsProvider = MockCompilationArgumentsProvider(vbeVersion); var compilationsArgumentsCache = new CompilationArgumentsCache(compilationArgumentsProvider); var path = serializedComProjectsPath ?? Path.Combine(Path.GetDirectoryName(Assembly.GetAssembly(typeof(MockParser)).Location), "Testfiles", "Resolver"); var preprocessorErrorListenerFactory = new PreprocessingParseErrorListenerFactory(); var preprocessorParser = new VBAPreprocessorParser(preprocessorErrorListenerFactory, preprocessorErrorListenerFactory); var preprocessor = new VBAPreprocessor(preprocessorParser, compilationsArgumentsCache); var mainParseErrorListenerFactory = new MainParseErrorListenerFactory(); var mainTokenStreamParser = new VBATokenStreamParser(mainParseErrorListenerFactory, mainParseErrorListenerFactory); var tokenStreamProvider = new SimpleVBAModuleTokenStreamProvider(); var stringParser = new TokenStreamParserStringParserAdapterWithPreprocessing(tokenStreamProvider, mainTokenStreamParser, preprocessor); var projectManager = new RepositoryProjectManager(projectRepository); var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager(); var supertypeClearer = new SynchronousSupertypeClearer(state); var parserStateManager = new SynchronousParserStateManager(state); var referenceRemover = new SynchronousReferenceRemover(state, moduleToModuleReferenceManager); var baseComDeserializer = new XmlComProjectSerializer(path); var comDeserializer = new StaticCachingComDeserializerDecorator(baseComDeserializer); var referencedDeclarationsCollector = new SerializedReferencedDeclarationsCollector(comDeserializer); var comSynchronizer = new SynchronousCOMReferenceSynchronizer( state, parserStateManager, projectRepository, referencedDeclarationsCollector); var builtInDeclarationLoader = new BuiltInDeclarationLoader( state, new List <ICustomDeclarationLoader> { new DebugDeclarations(state), new SpecialFormDeclarations(state), new FormEventDeclarations(state), new AliasDeclarations(state), }); var codePaneSourceCodeHandler = new CodePaneSourceCodeHandler(projectRepository); //We use the same handler because to achieve consistency between the return values. var attributesSourceCodeHandler = codePaneSourceCodeHandler; var moduleParser = new ModuleParser( codePaneSourceCodeHandler, attributesSourceCodeHandler, stringParser); var parseRunner = new SynchronousParseRunner( state, parserStateManager, moduleParser); var declarationResolveRunner = new SynchronousDeclarationResolveRunner( state, parserStateManager, comSynchronizer); var referenceResolveRunner = new SynchronousReferenceResolveRunner( state, parserStateManager, moduleToModuleReferenceManager, referenceRemover); var parsingStageService = new ParsingStageService( comSynchronizer, builtInDeclarationLoader, parseRunner, declarationResolveRunner, referenceResolveRunner ); var parsingCacheService = new ParsingCacheService( state, moduleToModuleReferenceManager, referenceRemover, supertypeClearer, compilationsArgumentsCache ); var tokenStreamCache = new StateTokenStreamCache(state); var moduleRewriterFactory = new ModuleRewriterFactory( codePaneSourceCodeHandler, attributesSourceCodeHandler); var rewriterProvider = new RewriterProvider(tokenStreamCache, moduleRewriterFactory); var rewriteSessionFactory = new RewriteSessionFactory(state, rewriterProvider); var rewritingManager = new RewritingManager(rewriteSessionFactory); var parser = new SynchronousParseCoordinator( state, parsingStageService, parsingCacheService, projectManager, parserStateManager, rewritingManager); return(parser, rewritingManager); }
public static Module Decode(byte[] module) { return(ModuleParser.ToModule(module)); }
public static bool Parse(SyntaxContext context, int position) { var list = context.list; var offset = 0; var index = position; var count = 0; var isMissed = false; if (!ParserHelper.IsKeyword(list[index], "for")) { return(false); } else { // ignored } offset += 1; index = position + offset; if (list[index].type != Expression.Type.Word) { return(false); } else { // ignored } offset += 1; index = position + offset; if (!ParserHelper.IsOperator(list[index], "=")) { return(false); } else { // ignored } offset += 1; index = position + offset; while (FunctionAParser.Parse(context, index)) { ; } while (ParenParser.Parse(context, index)) { ; } while (TableIParser.Parse(context, index)) { ; } while (TableSParser.Parse(context, index)) { ; } while (ListParser.Parse(context, index)) { ; } while (PropertyParser.Parse(context, index)) { ; } while (IndexParser.Parse(context, index)) { ; } while (CallParser.Parse(context, index)) { ; } while (NotParser.Parse(context, index)) { ; } while (LengthParser.Parse(context, index)) { ; } while (NegateParser.Parse(context, index)) { ; } while (PowerParser.Parse(context, index)) { ; } while (MultiplyParser.Parse(context, index)) { ; } while (DivisionParser.Parse(context, index)) { ; } while (ModParser.Parse(context, index)) { ; } while (AddParser.Parse(context, index)) { ; } while (SubtractParser.Parse(context, index)) { ; } while (ConcatParser.Parse(context, index)) { ; } while (LessParser.Parse(context, index)) { ; } while (GreaterParser.Parse(context, index)) { ; } while (LessEqualParser.Parse(context, index)) { ; } while (GreaterEqualParser.Parse(context, index)) { ; } while (EqualParser.Parse(context, index)) { ; } while (NotEqualParser.Parse(context, index)) { ; } while (AndParser.Parse(context, index)) { ; } while (OrParser.Parse(context, index)) { ; } if (!list[index].isRightValue) { return(false); } else { // ignored } offset += 1; index = position + offset; if (!ParserHelper.IsOperator(list[index], ",")) { return(false); } else { // ignored } offset += 1; index = position + offset; while (FunctionAParser.Parse(context, index)) { ; } while (ParenParser.Parse(context, index)) { ; } while (TableIParser.Parse(context, index)) { ; } while (TableSParser.Parse(context, index)) { ; } while (ListParser.Parse(context, index)) { ; } while (PropertyParser.Parse(context, index)) { ; } while (IndexParser.Parse(context, index)) { ; } while (CallParser.Parse(context, index)) { ; } while (NotParser.Parse(context, index)) { ; } while (LengthParser.Parse(context, index)) { ; } while (NegateParser.Parse(context, index)) { ; } while (PowerParser.Parse(context, index)) { ; } while (MultiplyParser.Parse(context, index)) { ; } while (DivisionParser.Parse(context, index)) { ; } while (ModParser.Parse(context, index)) { ; } while (AddParser.Parse(context, index)) { ; } while (SubtractParser.Parse(context, index)) { ; } while (ConcatParser.Parse(context, index)) { ; } while (LessParser.Parse(context, index)) { ; } while (GreaterParser.Parse(context, index)) { ; } while (LessEqualParser.Parse(context, index)) { ; } while (GreaterEqualParser.Parse(context, index)) { ; } while (EqualParser.Parse(context, index)) { ; } while (NotEqualParser.Parse(context, index)) { ; } while (AndParser.Parse(context, index)) { ; } while (OrParser.Parse(context, index)) { ; } if (!list[index].isRightValue) { return(false); } else { // ignored } offset += 1; index = position + offset; if (!ParserHelper.IsKeyword(list[index], "do")) { return(false); } else { // ignored } offset += 1; index = position + offset; while (ModuleParser.Parse(context, index)) { ; } if (list[index].type != Expression.Type.Module) { return(false); } else { // ignored } offset += 1; index = position + offset; if (!ParserHelper.IsKeyword(list[index], "end")) { return(false); } else { // ignored } offset += 1; index = position + offset; context.Insert(position, ExpressionCreator.CreateFor(list, position, offset)); context.Remove(position + 1, offset); return(true); }
/* * EditorGUILayout.BeginHorizontal(); * scrollPos = * EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(100), GUILayout.Height(100)); * GUILayout.Label(t); * EditorGUILayout.EndScrollView(); */ private void OnGUI() { // if(isInit) // { // //lSys = new LSystem(); // //rules.Add(""); // //varsCreated = variables.Count; // //serObj = new SerializedObject(this); // isInit = false; // } lSys.Clear(); //Could do this first thing on clicking "Generate"? Will that keep adding production rules... scrollPos = EditorGUILayout.BeginScrollView(scrollPos); //scrollPos = EditorGUILayout.BeginVertical(GUILayout.Height(100)); GUILayout.Label("L-Systems:", EditorStyles.boldLabel); //SerializedObject obj = new SerializedObject(this); // SerializedProperty keyProp = obj.FindProperty("keyList"); // EditorGUILayout.PropertyField(keyProp, new GUIContent("Names: "), true); // SerializedProperty valProp = obj.FindProperty("valList"); // EditorGUILayout.PropertyField(valProp, new GUIContent("Values: "), true); DrawVariableMap(); //GUILayout.Space(VariableDrawer.propHeight); // int lowCount = keyList.Count; // if (valList.Count < lowCount) // { // lowCount = valList.Count; // } //change to just copy dict? foreach (KeyValuePair <string, float> kv in variables) { //Debug.Log("Key: " + kv.Key + " = " + kv.Value); lSys.SetVar(kv.Key, kv.Value); // lSys.SetVar(variables[i].key, variables[i].value); } axiom = EditorGUILayout.DelayedTextField("Axiom: ", lSys.GetAxiom()); lSys.SetAxiom(axiom); DrawProductionRules(); serObj.ApplyModifiedProperties(); foreach (ProductionRule pr in pRules) { pr.suc.Clear(); if (pr.sucRep.Length > 0) { List <Module> mods = ModuleParser.StringToModuleList(pr.sucRep, lSys); pr.suc.InsertRange(0, mods); } } stepSize = EditorGUILayout.FloatField("Segment Length: ", stepSize); width = EditorGUILayout.FloatField("Segment Width: ", width); angle = EditorGUILayout.FloatField("Angle: ", angle); num = EditorGUILayout.IntField("Iterations: ", num); numOut = EditorGUILayout.IntField("Output Count: ", numOut); turtlePos = (Interpreter.TurtlePos)EditorGUILayout.EnumPopup("Turtle Position: ", turtlePos); GUILayout.FlexibleSpace(); if (GUILayout.Button("Generate")) { //Debug.Log("Generating..."); //Debug.Log(pRules.Count); foreach (ProductionRule r in pRules) { lSys.AddRule(r); } float xOffset = 10f; Material mat = new Material(Shader.Find("Sprites/Default")); mat.color = new Color(0.0f, 0.0f, 0.0f, 1.0f); AssetDatabase.CreateAsset(mat, "Assets/GeometryMaterial.mat"); List <Mesh> meshes = new List <Mesh>(); dupCount = 0; dupMap.Clear(); //string symbols = "Ff+-[]|"; for (int i = 0; i < numOut; ++i) { EditorUtility.DisplayProgressBar("Generating Geometry...", "Generating Geometry...", ((float)i / numOut)); List <Module> mods = lSys.RunSystem(num); string str_out = ""; foreach (Module m in mods) { str_out += m; //if (symbols.IndexOf(m.sym) != -1) } //str_out = Regex.Replace(str_out, "[^Ff+*/ ()0-9|,-]", "", RegexOptions.Compiled); //str_out.Replace("^[Ff+-()[][0-9]", ""); //Debug.Log(str_out); if (dupMap.ContainsKey(str_out)) { dupMap[str_out] += 1; } else { dupMap.Add(str_out, 1); } //Debug.Log(str_out); Interpreter intptr = new Interpreter(); GameObject go = new GameObject("Geometry" + i); //go.transform.position = Vector3.zero; go.transform.position = new Vector3(0f, 0f, 0f); MeshFilter mf = go.AddComponent <MeshFilter>(); MeshRenderer mr = go.AddComponent <MeshRenderer>(); //Material mat = new Material(Shader.Find("Sprites/Default")); mr.sharedMaterial = mat; //mr.sharedMaterial.color = Color.black; Mesh newMesh = intptr.InterpretSystem(mods, turtlePos, stepSize, width, angle); mf.mesh = newMesh; //Dictionary<Vector3, int> vertexCount = new Dictionary<Vector3, int>(); //foreach (Vector3 v in newMesh.vertices) //{ // if (vertexCount.ContainsKey(v)) // { // vertexCount[v] += 1; // } // else // { // vertexCount.Add(v, 1); // } //} //bool isDuplicate = false; //foreach (Mesh m in meshes) //{ // Dictionary<Vector3, int> vCount = new Dictionary<Vector3, int>(); // foreach (Vector3 v in m.vertices) // { // if (vCount.ContainsKey(v)) // { // vCount[v] += 1; // } // else // { // vCount.Add(v, 1); // } // } // bool isDup = true; // if (vertexCount.Keys.Count == vCount.Keys.Count) // { // foreach (KeyValuePair<Vector3, int> kv in vertexCount) // { // if (!vCount.ContainsKey(kv.Key)) // { // isDup = false; // break; // } // else if (vCount[kv.Key] != kv.Value) // { // isDup = false; // break; // } // } // if (isDup) // { // isDuplicate = true; // ++dupCount; // } // } //} //if (!isDuplicate) // meshes.Add(newMesh); ++createdCount; AssetDatabase.CreateAsset(mf.sharedMesh, "Assets/NewGO" + createdCount + ".mesh"); //AssetDatabase.CreateAsset(mr.sharedMaterial, "Assets/NewGO" + createdCount + ".mat"); PrefabUtility.SaveAsPrefabAssetAndConnect(go, "Assets/NewGO" + createdCount + ".prefab", InteractionMode.AutomatedAction); } EditorUtility.ClearProgressBar(); foreach (KeyValuePair <string, int> kv in dupMap) { if (kv.Value > 1) { dupCount += kv.Value - 1; Debug.Log("Duplicate Reuslt: " + kv.Key + "\nTimes Generated: " + kv.Value); } } Debug.Log("Num Duplicates: " + dupCount); } EditorGUILayout.EndScrollView(); }
// vbe is the com coclass interface from the interop assembly. // There is no shared interface between VBA and VB6 types, hence object. internal Parser(object vbe) : this() { if (_parser != null) { throw new InvalidOperationException("ParserState is already initialized."); } _vbe = RootComWrapperFactory.GetVbeWrapper(vbe); _vbeEvents = VBEEvents.Initialize(_vbe); var declarationFinderFactory = new ConcurrentlyConstructedDeclarationFinderFactory(); var projectRepository = new ProjectsRepository(_vbe); _state = new RubberduckParserState(_vbe, projectRepository, declarationFinderFactory, _vbeEvents); _state.StateChanged += _state_StateChanged; var vbeVersion = double.Parse(_vbe.Version, CultureInfo.InvariantCulture); var predefinedCompilationConstants = new VBAPredefinedCompilationConstants(vbeVersion); var typeLibProvider = new TypeLibWrapperProvider(projectRepository); var compilationArgumentsProvider = new CompilationArgumentsProvider(typeLibProvider, _dispatcher, predefinedCompilationConstants); var compilationsArgumentsCache = new CompilationArgumentsCache(compilationArgumentsProvider); var preprocessorErrorListenerFactory = new PreprocessingParseErrorListenerFactory(); var preprocessorParser = new VBAPreprocessorParser(preprocessorErrorListenerFactory, preprocessorErrorListenerFactory); var preprocessor = new VBAPreprocessor(preprocessorParser, compilationsArgumentsCache); var mainParseErrorListenerFactory = new MainParseErrorListenerFactory(); var mainTokenStreamParser = new VBATokenStreamParser(mainParseErrorListenerFactory, mainParseErrorListenerFactory); var tokenStreamProvider = new SimpleVBAModuleTokenStreamProvider(); var stringParser = new TokenStreamParserStringParserAdapterWithPreprocessing(tokenStreamProvider, mainTokenStreamParser, preprocessor); var projectManager = new RepositoryProjectManager(projectRepository); var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager(); var parserStateManager = new ParserStateManager(_state); var referenceRemover = new ReferenceRemover(_state, moduleToModuleReferenceManager); var supertypeClearer = new SupertypeClearer(_state); var comLibraryProvider = new ComLibraryProvider(); var referencedDeclarationsCollector = new LibraryReferencedDeclarationsCollector(comLibraryProvider); var comSynchronizer = new COMReferenceSynchronizer(_state, parserStateManager, projectRepository, referencedDeclarationsCollector); var builtInDeclarationLoader = new BuiltInDeclarationLoader( _state, new List <ICustomDeclarationLoader> { new DebugDeclarations(_state), new SpecialFormDeclarations(_state), new FormEventDeclarations(_state), new AliasDeclarations(_state), //new RubberduckApiDeclarations(_state) } ); var codePaneSourceCodeHandler = new CodePaneSourceCodeHandler(projectRepository); var sourceFileHandler = _vbe.TempSourceFileHandler; var attributesSourceCodeHandler = new SourceFileHandlerSourceCodeHandlerAdapter(sourceFileHandler, projectRepository); var moduleParser = new ModuleParser( codePaneSourceCodeHandler, attributesSourceCodeHandler, stringParser); var parseRunner = new ParseRunner( _state, parserStateManager, moduleParser); var declarationResolveRunner = new DeclarationResolveRunner( _state, parserStateManager, comSynchronizer); var referenceResolveRunner = new ReferenceResolveRunner( _state, parserStateManager, moduleToModuleReferenceManager, referenceRemover); var parsingStageService = new ParsingStageService( comSynchronizer, builtInDeclarationLoader, parseRunner, declarationResolveRunner, referenceResolveRunner ); var parsingCacheService = new ParsingCacheService( _state, moduleToModuleReferenceManager, referenceRemover, supertypeClearer, compilationsArgumentsCache ); _parser = new SynchronousParseCoordinator( _state, parsingStageService, parsingCacheService, projectManager, parserStateManager ); }
public void RuleParser_SeparateModuleRepresentations_ExceptionTest(string input) { var parser = new ModuleParser <int>(new IntExpressionParserFactory()); Assert.Throws <ParserException>(() => parser.SeparateModulesRepresentations(input)); }