annotate utils/gen_language.ipynb @ 42:792da050d8c4 tip

more dox
author james <jb302@eecs.qmul.ac.uk>
date Tue, 22 Apr 2014 14:25:14 +0100
parents 256d24488e3f
children
rev   line source
jb302@1 1 {
jb302@1 2 "metadata": {
jb302@1 3 "name": "gen_language"
jb302@1 4 },
jb302@1 5 "nbformat": 3,
jb302@1 6 "nbformat_minor": 0,
jb302@1 7 "worksheets": [
jb302@1 8 {
jb302@1 9 "cells": [
jb302@1 10 {
jb302@1 11 "cell_type": "code",
jb302@1 12 "collapsed": false,
jb302@1 13 "input": [
jb302@1 14 "from pprint import pprint\n",
jb302@1 15 "import sys\n",
jb302@1 16 "sys.path.append('../assembler')\n",
jb302@1 17 "from assembler import *\n",
jb302@14 18 "f = open('iset.csv', 'r')\n",
jb302@1 19 "\n",
jb302@1 20 "codes = []\n",
jb302@14 21 "lang = []\n",
jb302@14 22 "for line in f:\n",
jb302@14 23 " line = line.split(';')\n",
jb302@14 24 " codes.append(int(line[0]))\n",
jb302@14 25 " statement = line[1].strip().lower().split()\n",
jb302@14 26 " mnemonic = statement[0]\n",
jb302@14 27 " arguments = ''.join(statement[1:]).split(',')\n",
jb302@14 28 " lang.append([mnemonic, arguments])\n",
jb302@14 29 " \n",
jb302@14 30 "#pprint(lang) \n"
jb302@1 31 ],
jb302@1 32 "language": "python",
jb302@1 33 "metadata": {},
jb302@18 34 "outputs": []
jb302@1 35 },
jb302@1 36 {
jb302@1 37 "cell_type": "code",
jb302@1 38 "collapsed": false,
jb302@1 39 "input": [
jb302@14 40 "consts = { 'addr11':1, 'addr16':2, '@addr16':2, 'vect8':1, '#data8':1, 'port_addr':1, 'rel8':1, '#data16':2}\n",
jb302@14 41 "labelable = ('addr11', 'addr16', 'rel8')\n",
jb302@14 42 "\n",
jb302@1 43 "mne_syms = []\n",
jb302@1 44 "arg_syms = []\n",
jb302@1 45 "for line in lang:\n",
jb302@1 46 " mne_syms.append(line[0])\n",
jb302@1 47 " arg_syms.extend(line[1])\n",
jb302@1 48 "mne_set = set(mne_syms)\n",
jb302@1 49 "arg_set = set(arg_syms)\n",
jb302@1 50 "\n",
jb302@1 51 "iset = {}\n",
jb302@1 52 "for mne in mne_set:\n",
jb302@1 53 " i = 0\n",
jb302@1 54 " valid_args = {}\n",
jb302@1 55 " for line in lang:\n",
jb302@14 56 " args = []\n",
jb302@1 57 " if line[0] == mne:\n",
jb302@14 58 " width = 1\n",
jb302@14 59 " for a in line[1]:\n",
jb302@14 60 " if a in consts:\n",
jb302@14 61 " width = width + consts[a]\n",
jb302@14 62 " valid_args.update({tuple(line[1]):[int(codes[i]), width]})\n",
jb302@14 63 " \n",
jb302@18 64 " found_label = 0\n",
jb302@14 65 " for a in line[1]:\n",
jb302@14 66 " if a in labelable:\n",
jb302@14 67 " found_label = 1\n",
jb302@14 68 " args.append('label')\n",
jb302@18 69 " elif a == '@addr16':\n",
jb302@18 70 " found_label = 1\n",
jb302@18 71 " args.append('@label')\n",
jb302@14 72 " else:\n",
jb302@14 73 " args.append(a)\n",
jb302@14 74 " if found_label:\n",
jb302@14 75 " valid_args.update({tuple(args):[int(codes[i]), width]})\n",
jb302@14 76 " \n",
jb302@1 77 " i = i + 1\n",
jb302@1 78 " iset.update({mne:valid_args})\n",
jb302@18 79 "pprint(iset, indent=5)\n"
jb302@1 80 ],
jb302@1 81 "language": "python",
jb302@1 82 "metadata": {},
jb302@18 83 "outputs": [
jb302@18 84 {
jb302@18 85 "output_type": "stream",
jb302@18 86 "stream": "stdout",
jb302@18 87 "text": [
jb302@18 88 "{ 'add': { ('a', '#data8'): [166, 2],\n",
jb302@18 89 " ('a', '@dptr'): [167, 1],\n",
jb302@18 90 " ('a', 'dph'): [164, 1],\n",
jb302@18 91 " ('a', 'dpl'): [165, 1],\n",
jb302@18 92 " ('a', 'r0'): [160, 1],\n",
jb302@18 93 " ('a', 'r1'): [161, 1],\n",
jb302@18 94 " ('a', 'r2'): [162, 1],\n",
jb302@18 95 " ('a', 'r3'): [163, 1]},\n",
jb302@18 96 " 'addc': { ('a', '#data8'): [174, 2],\n",
jb302@18 97 " ('a', '@dptr'): [175, 1],\n",
jb302@18 98 " ('a', 'dph'): [172, 1],\n",
jb302@18 99 " ('a', 'dpl'): [173, 1],\n",
jb302@18 100 " ('a', 'r0'): [168, 1],\n",
jb302@18 101 " ('a', 'r1'): [169, 1],\n",
jb302@18 102 " ('a', 'r2'): [170, 1],\n",
jb302@18 103 " ('a', 'r3'): [171, 1]},\n",
jb302@18 104 " 'anl': { ('a', '#data8'): [134, 2],\n",
jb302@18 105 " ('a', '@dptr'): [135, 1],\n",
jb302@18 106 " ('a', 'dph'): [132, 1],\n",
jb302@18 107 " ('a', 'dpl'): [133, 1],\n",
jb302@18 108 " ('a', 'r0'): [128, 1],\n",
jb302@18 109 " ('a', 'r1'): [129, 1],\n",
jb302@18 110 " ('a', 'r2'): [130, 1],\n",
jb302@18 111 " ('a', 'r3'): [131, 1]},\n",
jb302@18 112 " 'cjne': { ('a', '#data8', 'label'): [223, 3],\n",
jb302@18 113 " ('a', '#data8', 'rel8'): [223, 3],\n",
jb302@18 114 " ('r0', '#data', 'label'): [212, 2],\n",
jb302@18 115 " ('r0', '#data', 'rel8'): [212, 2],\n",
jb302@18 116 " ('r1', '#data', 'label'): [213, 2],\n",
jb302@18 117 " ('r1', '#data', 'rel8'): [213, 2],\n",
jb302@18 118 " ('r2', '#data', 'label'): [214, 2],\n",
jb302@18 119 " ('r2', '#data', 'rel8'): [214, 2],\n",
jb302@18 120 " ('r3', '#data', 'label'): [215, 2],\n",
jb302@18 121 " ('r3', '#data', 'rel8'): [215, 2]},\n",
jb302@18 122 " 'clr': { ('bs',): [11, 1], ('c',): [9, 1], ('ie',): [13, 1]},\n",
jb302@18 123 " 'cpl': { ('a',): [15, 1], ('c',): [14, 1]},\n",
jb302@18 124 " 'da': { ('a',): [250, 1]},\n",
jb302@18 125 " 'dec': { ('a',): [159, 1], ('dptr',): [157, 1]},\n",
jb302@18 126 " 'div': { ('r0', 'r1'): [249, 1]},\n",
jb302@18 127 " 'djnz': { ('r0', 'label'): [208, 2],\n",
jb302@18 128 " ('r0', 'rel8'): [208, 2],\n",
jb302@18 129 " ('r1', 'label'): [209, 2],\n",
jb302@18 130 " ('r1', 'rel8'): [209, 2],\n",
jb302@18 131 " ('r2', 'label'): [210, 2],\n",
jb302@18 132 " ('r2', 'rel8'): [210, 2],\n",
jb302@18 133 " ('r3', 'label'): [211, 2],\n",
jb302@18 134 " ('r3', 'rel8'): [211, 2]},\n",
jb302@18 135 " 'hlt': { ('',): [255, 1]},\n",
jb302@18 136 " 'in': { ('a', 'port_addr'): [252, 2]},\n",
jb302@18 137 " 'inc': { ('a',): [158, 1], ('dptr',): [156, 1]},\n",
jb302@18 138 " 'int': { ('vect8',): [254, 2]},\n",
jb302@18 139 " 'jc': { ('label',): [226, 2], ('rel8',): [226, 2]},\n",
jb302@18 140 " 'jmp': { ('@a+dptr',): [221, 1], ('@dptr',): [222, 1]},\n",
jb302@18 141 " 'jnc': { ('label',): [227, 2], ('rel8',): [227, 2]},\n",
jb302@18 142 " 'jns': { ('label',): [231, 2], ('rel8',): [231, 2]},\n",
jb302@18 143 " 'jnz': { ('label',): [225, 2], ('rel8',): [225, 2]},\n",
jb302@18 144 " 'jpe': { ('label',): [229, 2], ('rel8',): [229, 2]},\n",
jb302@18 145 " 'jpo': { ('label',): [228, 2], ('rel8',): [228, 2]},\n",
jb302@18 146 " 'js': { ('label',): [230, 2], ('rel8',): [230, 2]},\n",
jb302@18 147 " 'jz': { ('label',): [224, 2], ('rel8',): [224, 2]},\n",
jb302@18 148 " 'laf': { ('',): [18, 1]},\n",
jb302@18 149 " 'lcall': { ('addr16',): [217, 3], ('label',): [217, 3]},\n",
jb302@18 150 " 'ljmp': { ('addr16',): [216, 3], ('label',): [216, 3]},\n",
jb302@18 151 " 'mov': { ('@addr16', 'a'): [29, 3],\n",
jb302@18 152 " ('@dptr', 'a'): [31, 1],\n",
jb302@18 153 " ('@dptr', 'dph'): [36, 1],\n",
jb302@18 154 " ('@dptr', 'dpl'): [37, 1],\n",
jb302@18 155 " ('@dptr', 'r0'): [32, 1],\n",
jb302@18 156 " ('@dptr', 'r1'): [33, 1],\n",
jb302@18 157 " ('@dptr', 'r2'): [34, 1],\n",
jb302@18 158 " ('@dptr', 'r3'): [35, 1],\n",
jb302@18 159 " ('@dptr', 'sph'): [38, 1],\n",
jb302@18 160 " ('@dptr', 'spl'): [39, 1],\n",
jb302@18 161 " ('@label', 'a'): [29, 3],\n",
jb302@18 162 " ('a', '#data8'): [21, 2],\n",
jb302@18 163 " ('a', '@a+dptr'): [26, 1],\n",
jb302@18 164 " ('a', '@a+pc'): [27, 1],\n",
jb302@18 165 " ('a', '@addr16'): [28, 3],\n",
jb302@18 166 " ('a', '@dptr'): [30, 1],\n",
jb302@18 167 " ('a', '@label'): [28, 3],\n",
jb302@18 168 " ('a', 'addr16'): [24, 3],\n",
jb302@18 169 " ('a', 'dph'): [60, 1],\n",
jb302@18 170 " ('a', 'dpl'): [61, 1],\n",
jb302@18 171 " ('a', 'label'): [24, 3],\n",
jb302@18 172 " ('a', 'r0'): [56, 1],\n",
jb302@18 173 " ('a', 'r1'): [57, 1],\n",
jb302@18 174 " ('a', 'r2'): [58, 1],\n",
jb302@18 175 " ('a', 'r3'): [59, 1],\n",
jb302@18 176 " ('a', 'sph'): [62, 1],\n",
jb302@18 177 " ('a', 'spl'): [63, 1],\n",
jb302@18 178 " ('addr16', 'a'): [25, 3],\n",
jb302@18 179 " ('dph', '#data8'): [44, 2],\n",
jb302@18 180 " ('dph', '@dptr'): [100, 1],\n",
jb302@18 181 " ('dph', 'a'): [52, 1],\n",
jb302@18 182 " ('dph', 'dpl'): [101, 1],\n",
jb302@18 183 " ('dph', 'r0'): [96, 1],\n",
jb302@18 184 " ('dph', 'r1'): [97, 1],\n",
jb302@18 185 " ('dph', 'r2'): [98, 1],\n",
jb302@18 186 " ('dph', 'r3'): [99, 1],\n",
jb302@18 187 " ('dph', 'sph'): [102, 1],\n",
jb302@18 188 " ('dph', 'spl'): [103, 1],\n",
jb302@18 189 " ('dpl', '#data8'): [45, 2],\n",
jb302@18 190 " ('dpl', '@dptr'): [109, 1],\n",
jb302@18 191 " ('dpl', 'a'): [53, 1],\n",
jb302@18 192 " ('dpl', 'dph'): [108, 1],\n",
jb302@18 193 " ('dpl', 'r0'): [104, 1],\n",
jb302@18 194 " ('dpl', 'r1'): [105, 1],\n",
jb302@18 195 " ('dpl', 'r2'): [106, 1],\n",
jb302@18 196 " ('dpl', 'r3'): [107, 1],\n",
jb302@18 197 " ('dpl', 'sph'): [110, 1],\n",
jb302@18 198 " ('dpl', 'spl'): [111, 1],\n",
jb302@18 199 " ('dptr', '#data16'): [23, 3],\n",
jb302@18 200 " ('dptr', 'sp'): [19, 1],\n",
jb302@18 201 " ('label', 'a'): [25, 3],\n",
jb302@18 202 " ('r0', '#data8'): [40, 2],\n",
jb302@18 203 " ('r0', '@dptr'): [64, 1],\n",
jb302@18 204 " ('r0', 'a'): [48, 1],\n",
jb302@18 205 " ('r0', 'dph'): [68, 1],\n",
jb302@18 206 " ('r0', 'dpl'): [69, 1],\n",
jb302@18 207 " ('r0', 'r1'): [65, 1],\n",
jb302@18 208 " ('r0', 'r2'): [66, 1],\n",
jb302@18 209 " ('r0', 'r3'): [67, 1],\n",
jb302@18 210 " ('r0', 'sph'): [70, 1],\n",
jb302@18 211 " ('r0', 'spl'): [71, 1],\n",
jb302@18 212 " ('r1', '#data8'): [41, 2],\n",
jb302@18 213 " ('r1', '@dptr'): [73, 1],\n",
jb302@18 214 " ('r1', 'a'): [49, 1],\n",
jb302@18 215 " ('r1', 'dph'): [76, 1],\n",
jb302@18 216 " ('r1', 'dpl'): [77, 1],\n",
jb302@18 217 " ('r1', 'r0'): [72, 1],\n",
jb302@18 218 " ('r1', 'r2'): [74, 1],\n",
jb302@18 219 " ('r1', 'r3'): [75, 1],\n",
jb302@18 220 " ('r1', 'sph'): [78, 1],\n",
jb302@18 221 " ('r1', 'spl'): [79, 1],\n",
jb302@18 222 " ('r2', '#data8'): [42, 2],\n",
jb302@18 223 " ('r2', '@dptr'): [82, 1],\n",
jb302@18 224 " ('r2', 'a'): [50, 1],\n",
jb302@18 225 " ('r2', 'dph'): [84, 1],\n",
jb302@18 226 " ('r2', 'dpl'): [85, 1],\n",
jb302@18 227 " ('r2', 'r0'): [80, 1],\n",
jb302@18 228 " ('r2', 'r1'): [81, 1],\n",
jb302@18 229 " ('r2', 'r3'): [83, 1],\n",
jb302@18 230 " ('r2', 'sph'): [86, 1],\n",
jb302@18 231 " ('r2', 'spl'): [87, 1],\n",
jb302@18 232 " ('r3', '#data8'): [43, 2],\n",
jb302@18 233 " ('r3', '@dptr'): [91, 1],\n",
jb302@18 234 " ('r3', 'a'): [51, 1],\n",
jb302@18 235 " ('r3', 'dph'): [92, 1],\n",
jb302@18 236 " ('r3', 'dpl'): [93, 1],\n",
jb302@18 237 " ('r3', 'r0'): [88, 1],\n",
jb302@18 238 " ('r3', 'r1'): [89, 1],\n",
jb302@18 239 " ('r3', 'r2'): [90, 1],\n",
jb302@18 240 " ('r3', 'sph'): [94, 1],\n",
jb302@18 241 " ('r3', 'spl'): [95, 1],\n",
jb302@18 242 " ('sp', '#data16'): [22, 3],\n",
jb302@18 243 " ('sp', 'dptr'): [20, 1],\n",
jb302@18 244 " ('sph', '#data8'): [46, 2],\n",
jb302@18 245 " ('sph', '@dptr'): [118, 1],\n",
jb302@18 246 " ('sph', 'a'): [54, 1],\n",
jb302@18 247 " ('sph', 'dph'): [116, 1],\n",
jb302@18 248 " ('sph', 'dpl'): [117, 1],\n",
jb302@18 249 " ('sph', 'r0'): [112, 1],\n",
jb302@18 250 " ('sph', 'r1'): [113, 1],\n",
jb302@18 251 " ('sph', 'r2'): [114, 1],\n",
jb302@18 252 " ('sph', 'r3'): [115, 1],\n",
jb302@18 253 " ('sph', 'spl'): [119, 1],\n",
jb302@18 254 " ('spl', '#data8'): [47, 2],\n",
jb302@18 255 " ('spl', '@dptr'): [127, 1],\n",
jb302@18 256 " ('spl', 'a'): [55, 1],\n",
jb302@18 257 " ('spl', 'dph'): [124, 1],\n",
jb302@18 258 " ('spl', 'dpl'): [125, 1],\n",
jb302@18 259 " ('spl', 'r0'): [120, 1],\n",
jb302@18 260 " ('spl', 'r1'): [121, 1],\n",
jb302@18 261 " ('spl', 'r2'): [122, 1],\n",
jb302@18 262 " ('spl', 'r3'): [123, 1],\n",
jb302@18 263 " ('spl', 'sph'): [126, 1]},\n",
jb302@18 264 " 'mul': { ('r0', 'r1'): [248, 1]},\n",
jb302@18 265 " 'nop': { ('',): [0, 1]},\n",
jb302@18 266 " 'orl': { ('a', '#data8'): [142, 2],\n",
jb302@18 267 " ('a', '@dptr'): [143, 1],\n",
jb302@18 268 " ('a', 'dph'): [140, 1],\n",
jb302@18 269 " ('a', 'dpl'): [141, 1],\n",
jb302@18 270 " ('a', 'r0'): [136, 1],\n",
jb302@18 271 " ('a', 'r1'): [137, 1],\n",
jb302@18 272 " ('a', 'r2'): [138, 1],\n",
jb302@18 273 " ('a', 'r3'): [139, 1]},\n",
jb302@18 274 " 'out': { ('port_addr', 'a'): [253, 2]},\n",
jb302@18 275 " 'pcall': { ('addr11',): [207, 2], ('label',): [207, 2]},\n",
jb302@18 276 " 'pjmp': { ('addr11',): [199, 2], ('label',): [199, 2]},\n",
jb302@18 277 " 'pop': { ('a',): [246, 1],\n",
jb302@18 278 " ('dph',): [244, 1],\n",
jb302@18 279 " ('dpl',): [245, 1],\n",
jb302@18 280 " ('flags',): [247, 1],\n",
jb302@18 281 " ('r0',): [240, 1],\n",
jb302@18 282 " ('r1',): [241, 1],\n",
jb302@18 283 " ('r2',): [242, 1],\n",
jb302@18 284 " ('r3',): [243, 1]},\n",
jb302@18 285 " 'push': { ('a',): [238, 1],\n",
jb302@18 286 " ('dph',): [236, 1],\n",
jb302@18 287 " ('dpl',): [237, 1],\n",
jb302@18 288 " ('flags',): [239, 1],\n",
jb302@18 289 " ('r0',): [232, 1],\n",
jb302@18 290 " ('r1',): [233, 1],\n",
jb302@18 291 " ('r2',): [234, 1],\n",
jb302@18 292 " ('r3',): [235, 1]},\n",
jb302@18 293 " 'reserved': { ('',): [251, 1]},\n",
jb302@18 294 " 'ret': { ('',): [218, 1]},\n",
jb302@18 295 " 'reti': { ('',): [219, 1]},\n",
jb302@18 296 " 'rl': { ('a',): [152, 1]"
jb302@18 297 ]
jb302@18 298 },
jb302@18 299 {
jb302@18 300 "output_type": "stream",
jb302@18 301 "stream": "stdout",
jb302@18 302 "text": [
jb302@18 303 "},\n",
jb302@18 304 " 'rlc': { ('a',): [153, 1]},\n",
jb302@18 305 " 'rr': { ('a',): [154, 1]},\n",
jb302@18 306 " 'rrc': { ('a',): [155, 1]},\n",
jb302@18 307 " 'set': { ('bs',): [10, 1], ('c',): [8, 1], ('ie',): [12, 1]},\n",
jb302@18 308 " 'sfa': { ('',): [17, 1]},\n",
jb302@18 309 " 'sjmp': { ('label',): [220, 2], ('rel8',): [220, 2]},\n",
jb302@18 310 " 'sub': { ('a', '#data8'): [182, 2],\n",
jb302@18 311 " ('a', '@dptr'): [183, 1],\n",
jb302@18 312 " ('a', 'dph'): [180, 1],\n",
jb302@18 313 " ('a', 'dpl'): [181, 1],\n",
jb302@18 314 " ('a', 'r0'): [176, 1],\n",
jb302@18 315 " ('a', 'r1'): [177, 1],\n",
jb302@18 316 " ('a', 'r2'): [178, 1],\n",
jb302@18 317 " ('a', 'r3'): [179, 1]},\n",
jb302@18 318 " 'subb': { ('a', '#data8'): [190, 2],\n",
jb302@18 319 " ('a', '@dptr'): [191, 1],\n",
jb302@18 320 " ('a', 'dph'): [188, 1],\n",
jb302@18 321 " ('a', 'dpl'): [189, 1],\n",
jb302@18 322 " ('a', 'r0'): [184, 1],\n",
jb302@18 323 " ('a', 'r1'): [185, 1],\n",
jb302@18 324 " ('a', 'r2'): [186, 1],\n",
jb302@18 325 " ('a', 'r3'): [187, 1]},\n",
jb302@18 326 " 'xcsd': { ('',): [16, 1]},\n",
jb302@18 327 " 'xrl': { ('a', '#data8'): [150, 2],\n",
jb302@18 328 " ('a', '@dptr'): [151, 1],\n",
jb302@18 329 " ('a', 'dph'): [148, 1],\n",
jb302@18 330 " ('a', 'dpl'): [149, 1],\n",
jb302@18 331 " ('a', 'r0'): [144, 1],\n",
jb302@18 332 " ('a', 'r1'): [145, 1],\n",
jb302@18 333 " ('a', 'r2'): [146, 1],\n",
jb302@18 334 " ('a', 'r3'): [147, 1]}}\n"
jb302@18 335 ]
jb302@18 336 }
jb302@18 337 ],
jb302@18 338 "prompt_number": 11
jb302@14 339 },
jb302@14 340 {
jb302@14 341 "cell_type": "code",
jb302@14 342 "collapsed": false,
jb302@14 343 "input": [
jb302@14 344 "# generate function lookup table\n",
jb302@14 345 "optable = []\n",
jb302@14 346 "for l in lang:\n",
jb302@14 347 " optable.append(l[0])\n",
jb302@14 348 "\n",
jb302@14 349 "for i in range(17):\n",
jb302@14 350 " print \"%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, \" % (optable[(i*15)], optable[(i*15)+1], optable[(i*15)+2], optable[(i*15)+3], optable[(i*15)+4], optable[(i*15)+5], optable[(i*15)+6], optable[(i*15)+7], optable[(i*15)+8], optable[(i*15)+9], optable[(i*15)+10], optable[(i*15)+11], optable[(i*15)+12], optable[(i*15)+13], optable[(i*15)+14])\n",
jb302@14 351 "\n"
jb302@14 352 ],
jb302@14 353 "language": "python",
jb302@14 354 "metadata": {},
jb302@18 355 "outputs": []
jb302@14 356 },
jb302@14 357 {
jb302@14 358 "cell_type": "code",
jb302@14 359 "collapsed": false,
jb302@14 360 "input": [
jb302@14 361 "# print function templates\n",
jb302@14 362 "#for mne in mne_set:\n",
jb302@14 363 "# print \"//implement me\\nvoid\\n%s(void) {\\n registers.PC = registers.PC + 1;\\n}\\n\" % mne.upper()\n",
jb302@14 364 "\n",
jb302@14 365 "# print function definitions\n",
jb302@14 366 "#for mne in mne_set:\n",
jb302@14 367 "# print \"void\\n%s(void);\\n\" % mne.upper()\n"
jb302@14 368 ],
jb302@14 369 "language": "python",
jb302@14 370 "metadata": {},
jb302@18 371 "outputs": []
jb302@14 372 },
jb302@14 373 {
jb302@14 374 "cell_type": "code",
jb302@14 375 "collapsed": false,
jb302@18 376 "input": [],
jb302@14 377 "language": "python",
jb302@14 378 "metadata": {},
jb302@18 379 "outputs": []
jb302@14 380 },
jb302@14 381 {
jb302@14 382 "cell_type": "code",
jb302@14 383 "collapsed": false,
jb302@14 384 "input": [],
jb302@14 385 "language": "python",
jb302@14 386 "metadata": {},
jb302@1 387 "outputs": []
jb302@1 388 }
jb302@1 389 ],
jb302@1 390 "metadata": {}
jb302@1 391 }
jb302@1 392 ]
jb302@1 393 }