Code Monkey home page Code Monkey logo

tea-programming-language's Introduction

Tea Programming Language

Implementation a programming language named Tea. Exercise related to this topics:

  • Recursive Programming
  • C++ (as language)
  • 2 Dimensional Arrays
  • Struct Templates
  • Stack Implementation
  • Data Structures

Problem

A company's engineers decided to write simple programming language. That language would be easy to write, so has simple rules. Tea programs consist of subsequent lines of statements. Each statement has a simple job. There are 7 statements and 5 variables.

Statements

inc
Increments arg1 by arg2
dec
Decrements arg2 by arg2
mul
Multiplies arg1 by arg2
div
Divides arg1 by arg2
function
Defines a function named arg1
call
Calls arg1 with argument arg2
return
returns arg1

Variables

Engineers of the company all hated local variable declerations. So, Tea does not allow define variables. There are 5 predefined variables: [a,b,c,d,e]. A function can use these variables by accessing and operating on them. They all specific to a function. Every function uses different [a,b,c,d,e] variables. They are all 0 at initialization.

Functions

Functions are defined like;

  function foo
  //operations with call, mul, inc, div, dec
  return a  // or any variable 
Functions are called like;
call foo e

This function call initializes all variables for this call except e. e is taken by parent functions variable. (But it initializes again for new function, changes on it does not change parent's e). Due to return a statement, function finally assigns its a to the parent's a variable. Each Tea program has a main function and starts from this function. It is not necessity to place functions in certain order. A function can be defined and called before or after another functions including main.

Input / Coding with tea

example1.tea

  function main
  inc a 2
  inc b 3
  call foo a
  call bar b
  inc d a
  inc d c
  return d
  function foo
  inc a 4
  div a 2
  return a
  function bar
  inc c 7
  dec c b
  return c

workflow of example1.tea

Lines are 0-indexed

Executed Line Next Line [a,b,c,d,e]
0 1 0,0,0,0,0
1 2 2,0,0,0,0
2 3 2,3,0,0,0
3 9 2,0,0,0,0
9 10 6,0,0,0,0
10 11 3,0,0,0,0
11 4 3,3,0,0,0
4 13 0,3,0,0,0
13 14 0,3,7,0,0
14 15 0,3,4,0,0
15 5 3,3,4,0,0
5 6 3,3,4,3,0
6 7 3,3,4,7,0
7 3,3,4,7,0
Then program outputs 7.

How to Run

compile:

g++ tea.cpp -o tea.exe

run:

tea.exe example_code

Notes

As I code this program, there is a problem with variables. They should initialize at start but every function uses new set of variables. Also functions can call functions, so i cannot use just one set of inputs for main, one for called functions. I needed segmentated memory. But I had limitation which is set by my instructor. In this limits:

I implemented variables as 2D array: T variables[LANGUAGE_DEPTH][5]; . Which means I have LANGUAGE_DEPTH times array of 5 variables. Variables[0] is set of variables of main function. If main calls a function i use Variables[1] for it. If it calls another, program uses Variables[2]. I say this k number in Variables[k] depth or degree of function. I use LANGUAGE_DEPTH property to scale power of Tea programming language. In other words, capability to work with nested functions. You can have more powerfull tea engine with increasing it. (Default: 5).

tea-programming-language's People

Contributors

urtuba avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.