Skip to content

Instantly share code, notes, and snippets.

@nmz787
nmz787 / Lexer.g4
Created May 19, 2020 23:06
Run with:
lexer grammar Lexer;
fragment WS: [\t ]+;
fragment NL: WS? ('\r'* '\n')+;
COLON_ATTRIBUTES: ('KeyId' |
'first key' |
'key' |
'key (interesting)' |
'key(# of 1second)' |
'key.subkey')+ -> mode(COLON_ATTRIBUTES_MODE);
@nmz787
nmz787 / Lexer.g4
Last active May 19, 2020 23:23
ANTLR not working for some reason that I can't figure out
lexer grammar Lexer;
fragment WS: [\t ]+;
fragment NL: WS? ('\r'* '\n')+;
COLON_ATTRIBUTES: ('KeyId' |
'first key' |
'key' |
'key (interesting)' |
'key(# of 1second)' |
'key.subkey')+ -> mode(COLON_ATTRIBUTES_MODE);
@nmz787
nmz787 / Gds2png.py
Created June 4, 2020 10:20
Gds to png
import os.path
from gdsCAD import *
from PIL import Image, ImageDraw
#l = core.GdsImport(os.path.abspath("wafer.GDS"), verbose=True)
#l2, l4 = utils.split_layers(a, [2,4])
l4_gds = core.GdsImport(os.path.abspath("die5_from_topleft_layer4_slits_shown.GDS"), verbose=True)
l2_gds = core.GdsImport(os.path.abspath("die5_from_topleft_layer2_shown.GDS"), verbose=True)
# most of the following code is from here: https://github.com/WoLpH/numpy-stl#combining-multiple-stl-files
# but instead of combining STLs, I'm just copying and replicating the same one
import math
import stl
from stl import mesh
import numpy
# find the max dimensions, so we can know the bounding box, getting the height, width, length (because these are the step size)...
def find_mins_maxs(obj):
@nmz787
nmz787 / antlr_lexer_test.py
Created October 22, 2020 22:40
ANTLR Python Lexer unit-testing
from antlr4 import CommonTokenStream, InputStream, Token
# from mytool.parsers.error_listener import MyErrorListener
def getTokensFromText(input_string, MyLexer):
input_stream = InputStream(input_string)
lexer = MyLexer(input_stream)
# lexer.addErrorListener(MyErrorListener)
stream = CommonTokenStream(lexer)
stream.fill()
@nmz787
nmz787 / open_source_cad_layerprops_converter.py
Last active January 27, 2023 07:47
converts a CSV to klayout, GDS3D, or Calibre layer-property files.
'''
usage:
open_source_layerprops_converter.py /path/to/num_to_names.csv /path/to/output/layerprops.ext -out_format klayout/gds3d/calibre
example CSV (not including this line):
1,0,metal0,drawing
1,2,metal0,via
2,0,metal1,drawing
'''
@nmz787
nmz787 / machine.py
Last active May 11, 2023 14:07
micropython mock library - for checking syntax of your MicroPython from Linux
class _board(object):
def __getattr__(self, *args, **kwargs):
return 1
from pyb import Pin as Pin
from pyb import I2C as I2C
from stm import mem32, mem16, mem8
@nmz787
nmz787 / each_cell_on_its_own_line
Last active August 20, 2023 09:38
git-xlsx-textconv-python
import xlrd
import sys
if __name__ == '__main__':
if len(sys.argv) != 2:
print "Usage: git-xlsx-textconv file.xslx"
excelFileName = sys.argv[1]
xlFile = xlrd.open_workbook(excelFileName)