<commit_before># TODO List

## Language Updates
- Make Compiler have a field which is CompilerError
  - redo tests for CompilerError
  - call field self.error so that something like self.error.semantic\_error(stuff) makes sense
- Build SymbolTable to always have len at least 1
- Test API for symbol\_table.py
- Build symbol table tests
- Make docstrings better
  - Come up with a template for docstrings
  - Maybe use the sphinx template so that documentation can be generated??
- Remove self.semantic\_error calls from compiler.py and replace with better errors
- Test compiler.py
- Build up all types of expressions - Different class maybe??
- if-elif-else statements
- Notion of state - old()
- while loops
- for loops
- type casting
- external math functions - sin, cos, etc.??
<commit_msg>Updated TODO<commit_after># TODO List

## Language Updates
- Make sap.tests.test\_utilities module to help with tests
  - integrate into error\_tests.py
- Build SymbolTable to always have len at least 1
- Test API for symbol\_table.py
- Build up all types of expressions - Different class maybe??
- Test expressions
- Build compiler.py
- Test compiler
- Make docstrings better
  - Come up with a template for docstrings
  - Maybe use the sphinx template so that documentation can be generated??
- Remove self.semantic\_error calls from compiler.py and replace with better errors
- Test compiler.py
- if-elif-else statements
- built-in functions that have IF1 codes
  - max, min, abs, etc.
- Notion of state - old()
- while loops
- for loops
- type casting
- external functions
  - sin, cos, tan, etc.

{'fraction_non_alphanumeric': 0.06954887218045112, 'fraction_numerical': 0.0018796992481203006, 'mean_word_length': 3.5369318181818183, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3566089', 'n_tokens_mistral': 431, 'n_tokens_neox': 425, 'n_words': 209}