cscg24-lolpython

CSCG 2024 Challenge 'Can I Haz Lolpython?'
git clone https://git.sinitax.com/sinitax/cscg24-lolpython
Log | Files | Refs | sfeed.txt

calclex.py (892B)


      1# -----------------------------------------------------------------------------
      2# calclex.py
      3# -----------------------------------------------------------------------------
      4import sys
      5
      6sys.path.append("..")
      7import ply.lex as lex
      8
      9tokens = (
     10    'NAME','NUMBER',
     11    'PLUS','MINUS','TIMES','DIVIDE','EQUALS',
     12    'LPAREN','RPAREN',
     13    )
     14
     15# Tokens
     16
     17t_PLUS    = r'\+'
     18t_MINUS   = r'-'
     19t_TIMES   = r'\*'
     20t_DIVIDE  = r'/'
     21t_EQUALS  = r'='
     22t_LPAREN  = r'\('
     23t_RPAREN  = r'\)'
     24t_NAME    = r'[a-zA-Z_][a-zA-Z0-9_]*'
     25
     26def t_NUMBER(t):
     27    r'\d+'
     28    try:
     29        t.value = int(t.value)
     30    except ValueError:
     31        print "Integer value too large", t.value
     32        t.value = 0
     33    return t
     34
     35t_ignore = " \t"
     36
     37def t_newline(t):
     38    r'\n+'
     39    t.lineno += t.value.count("\n")
     40    
     41def t_error(t):
     42    print "Illegal character '%s'" % t.value[0]
     43    t.lexer.skip(1)
     44    
     45# Build the lexer
     46lex.lex()
     47
     48
     49