2021-08-19 20:33:31 -06:00
|
|
|
{
|
|
|
|
"cells": [
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2021-08-23 16:08:23 -06:00
|
|
|
"execution_count": 86,
|
2021-08-19 20:33:31 -06:00
|
|
|
"source": [
|
2021-08-23 16:08:23 -06:00
|
|
|
"file = open(\"testB.neu\")\r\n",
|
2021-08-19 20:33:31 -06:00
|
|
|
"dirty_blob = file.read()\r\n",
|
|
|
|
"\r\n",
|
|
|
|
"# get rid of comments and leading/trailing whitespace\r\n",
|
|
|
|
"lines = dirty_blob.split(\"\\n\")\r\n",
|
|
|
|
"for i, line in enumerate(lines):\r\n",
|
|
|
|
" if line.strip()[:2] == \"//\":\r\n",
|
|
|
|
" del lines[i]\r\n",
|
|
|
|
"\r\n",
|
2021-08-23 16:08:23 -06:00
|
|
|
"for i, line in enumerate(lines):\r\n",
|
|
|
|
" lines[i] = line.strip()\r\n",
|
|
|
|
"\r\n",
|
|
|
|
"tidy_blob = \" \".join(lines)"
|
2021-08-19 20:33:31 -06:00
|
|
|
],
|
2021-08-23 16:08:23 -06:00
|
|
|
"outputs": [],
|
2021-08-19 20:33:31 -06:00
|
|
|
"metadata": {}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2021-08-23 16:08:23 -06:00
|
|
|
"execution_count": 87,
|
2021-08-19 20:33:31 -06:00
|
|
|
"source": [
|
|
|
|
"data = []\r\n",
|
|
|
|
"\r\n",
|
2021-08-23 16:08:23 -06:00
|
|
|
"# get blocks\r\n",
|
2021-08-19 20:33:31 -06:00
|
|
|
"for line in lines:\r\n",
|
|
|
|
" object = {}\r\n",
|
|
|
|
" if \"=\" in line:\r\n",
|
|
|
|
" keytype = line.split(\" \")[0].split(\":\")\r\n",
|
|
|
|
" key = keytype[0]\r\n",
|
|
|
|
" object[\"key\"] = key\r\n",
|
|
|
|
" if len(keytype) > 1:\r\n",
|
|
|
|
" type = keytype[1]\r\n",
|
|
|
|
" object[\"type\"] = type\r\n",
|
2021-08-23 16:08:23 -06:00
|
|
|
" data.append(object)"
|
|
|
|
],
|
|
|
|
"outputs": [],
|
|
|
|
"metadata": {}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 88,
|
|
|
|
"source": [
|
|
|
|
"words = tidy_blob.split(\" \")"
|
|
|
|
],
|
|
|
|
"outputs": [],
|
|
|
|
"metadata": {}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 89,
|
|
|
|
"source": [
|
|
|
|
"def extract_objects(keywords):\r\n",
|
|
|
|
" blocks = []\r\n",
|
|
|
|
" depth = -1\r\n",
|
|
|
|
" i = -1\r\n",
|
|
|
|
" last = \"\"\r\n",
|
|
|
|
" for word in keywords:\r\n",
|
|
|
|
" #print(f\"Word: {word} | Depth: {depth} | i: {i}\")\r\n",
|
|
|
|
" if word == \"{\":\r\n",
|
|
|
|
" depth += 1\r\n",
|
|
|
|
" if depth == 1:\r\n",
|
|
|
|
" #print(\"New block of depth 1\")\r\n",
|
|
|
|
" blocks.append({\"key\": last, \"object\": []})\r\n",
|
|
|
|
" i += 1\r\n",
|
|
|
|
" elif word == \"}\":\r\n",
|
|
|
|
" depth -= 1\r\n",
|
|
|
|
" else:\r\n",
|
|
|
|
" last = word\r\n",
|
|
|
|
" if depth >= 1:\r\n",
|
|
|
|
" blocks[i][\"object\"].append(word)\r\n",
|
|
|
|
" return blocks\r\n",
|
2021-08-19 20:33:31 -06:00
|
|
|
"\r\n",
|
2021-08-23 16:08:23 -06:00
|
|
|
"data = extract_objects(words)\r\n",
|
|
|
|
"temp = []\r\n",
|
|
|
|
"for blob in data:\r\n",
|
|
|
|
" temp.append(extract_objects(blob[\"object\"]))\r\n",
|
|
|
|
"\r\n",
|
|
|
|
" \r\n",
|
|
|
|
"\r\n",
|
|
|
|
"temp"
|
2021-08-19 20:33:31 -06:00
|
|
|
],
|
|
|
|
"outputs": [
|
|
|
|
{
|
2021-08-23 16:08:23 -06:00
|
|
|
"output_type": "execute_result",
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"[[{'key': 'aa', 'object': ['{', 'aaa']},\n",
|
|
|
|
" {'key': 'ab', 'object': ['{', 'aba']},\n",
|
|
|
|
" {'key': 'ac', 'object': ['{', 'abb']}],\n",
|
|
|
|
" [{'key': 'ba', 'object': ['{']},\n",
|
|
|
|
" {'key': 'bb', 'object': ['{']},\n",
|
|
|
|
" {'key': 'bc', 'object': ['{']}],\n",
|
|
|
|
" [{'key': 'ba', 'object': ['{']},\n",
|
|
|
|
" {'key': 'bb', 'object': ['{']},\n",
|
|
|
|
" {'key': 'bc', 'object': ['{']}]]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"execution_count": 89
|
2021-08-19 20:33:31 -06:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"metadata": {}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"metadata": {
|
|
|
|
"orig_nbformat": 4,
|
|
|
|
"language_info": {
|
|
|
|
"name": "python",
|
|
|
|
"version": "3.7.8",
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
"codemirror_mode": {
|
|
|
|
"name": "ipython",
|
|
|
|
"version": 3
|
|
|
|
},
|
|
|
|
"pygments_lexer": "ipython3",
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
"file_extension": ".py"
|
|
|
|
},
|
|
|
|
"kernelspec": {
|
|
|
|
"name": "python3",
|
|
|
|
"display_name": "Python 3.7.8 64-bit"
|
|
|
|
},
|
|
|
|
"interpreter": {
|
|
|
|
"hash": "57baa5815c940fdaff4d14510622de9616cae602444507ba5d0b6727c008cbd6"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"nbformat": 4,
|
|
|
|
"nbformat_minor": 2
|
|
|
|
}
|