<commit_before># Sana Compiler Framework

[] ([![Build Status](https://travis-ci.org/amanjpro/sana.svg?branch=master)](https://travis-ci.org/amanjpro/sana))

Sana is an extensible compiler framework written in Scala. As a research
project, Sana aims to be both fully modular in a sense that removing a new
language component should be as easy as adding a new one. Sana also tries to be
safe and immutable in most of the cases, but not when it adds a considerable
amount of overhead. Sana implements ``languages à la carte'' which is proposed
by <NAME>.



## Installation

To play with Sana, first clone the project:
```
git clone github.com/amanjpro/languages-a-la-carte
```

Then, using `sbt` you can build the wanted target. For example to build the
`tiny` language, you do:

```
sbt tiny/compile
```

[] (Please consult the project's [wiki](https://github.com/amanjpro/sana/wiki)
to know all possible targets.)

You can generate a fat jar by running assembly for your target, for example for
`tiny` it will be:

```
sbt tiny/assembly
```


## Usage

[] (Please refer to the [wiki](https://github.com/amanjpro/sana/wiki))

## Contributing

1. Fork it!
2. Join us on `freenode`: #sanacompiler
3. Experiment with the module system of Sana
4. Play with Sana more and implement a language feature on top of an
   existing language.
5. Report bugs
[] (6. Go through [wiki](https://github.com/amanjpro/sana/wiki/Contributing))

## Q/A Forum
[here](https://groups.google.com/d/forum/sana-compiler-framework)


[](## History)


[](## Credits)


## Language modules:
- tiny: no components
- calcj: arith ops
- primj: primitives in Java
- brokenj: switch, break, continue, label
- ooj: classes, fields, methods, constructor, super, select, this, new, null
- arrayj: arrays and array literals
- robustj: exception handling
- dynj: cast and isinstanceof
- ppj: synchronized and volatile
- modulej: imports and class loaders

## License

```
Copyright (c) <2015>, <NAME> - http://www.amanj.me
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the <organization> nor the
      names of its contributors may be used to endorse or promote products
      derived from this software without specific prior written permission.<commit_msg>Ignore ignored 2<commit_after># Sana Compiler Framework

> [![Build Status](https://travis-ci.org/amanjpro/sana.svg?branch=master)](https://travis-ci.org/amanjpro/sana)

Sana is an extensible compiler framework written in Scala. As a research
project, Sana aims to be both fully modular in a sense that removing a new
language component should be as easy as adding a new one. Sana also tries to be
safe and immutable in most of the cases, but not when it adds a considerable
amount of overhead. Sana implements ``languages à la carte'' which is proposed
by <NAME>.



## Installation

To play with Sana, first clone the project:
```
git clone github.com/amanjpro/languages-a-la-carte
```

Then, using `sbt` you can build the wanted target. For example to build the
`tiny` language, you do:

```
sbt tiny/compile
```

> Please consult the project's [wiki](https://github.com/amanjpro/sana/wiki)
to know all possible targets.

You can generate a fat jar by running assembly for your target, for example for
`tiny` it will be:

```
sbt tiny/assembly
```


## Usage

> Please refer to the [wiki](https://github.com/amanjpro/sana/wiki)

## Contributing

1. Fork it!
2. Join us on `freenode`: #sanacompiler
3. Experiment with the module system of Sana
4. Play with Sana more and implement a language feature on top of an
   existing language.
5. Report bugs
> 6. Go through [wiki](https://github.com/amanjpro/sana/wiki/Contributing)

## Q/A Forum
[here](https://groups.google.com/d/forum/sana-compiler-framework)


> (## History)


> (## Credits)


## Language modules:
- tiny: no components
- calcj: arith ops
- primj: primitives in Java
- brokenj: switch, break, continue, label
- ooj: classes, fields, methods, constructor, super, select, this, new, null
- arrayj: arrays and array literals
- robustj: exception handling
- dynj: cast and isinstanceof
- ppj: synchronized and volatile
- modulej: imports and class loaders

## License

```
Copyright (c) <2015>, <NAME> - http://www.amanj.me
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the <organization> nor the
      names of its contributors may be used to endorse or promote products
      derived from this software without specific prior written permission.
{'fraction_non_alphanumeric': 0.0887170992085404, 'fraction_numerical': 0.003865267807840972, 'mean_word_length': 4.0832553788587465, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 17, 'https://': 12, 'lorem ipsum': 0, 'www.': 2, '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': '157086', 'n_tokens_mistral': 1568, 'n_tokens_neox': 1512, 'n_words': 693}