Code Monkey home page Code Monkey logo

gpp_compiler's Introduction

Welcome to GPP_COMPILER

Language that provides an abstraction to a PART of GTK difficulty .

To get projet on your computer, clone it using the following command :

git clone https://github.com/RedRosh/GPP_COMPILER

Install gtk3 on your ubuntu machine:

sudo apt-get install libgtk-3-dev

To test the compiler, on your terminal, do the following :

1- change directory :

cd GPP_COMPILER

2- Compile the compiler :

make all

3-finally, run your test file:

./gpp test.gpp

How to write a gpp code :

The syntaxe of a gpp file is pretty simple , it contains 4 types of widgets that are :

  • Interface : The root component, a window that contains the other ones.

  • Button : A simple button that you can click.

  • InputField : A field where you can write your input.

  • Label : A place holder in which you can write titles, names ...

The correct way to write the code is such as the following :

WIDGET WIDGET_NAME : {
    PROPERTY : VALUE [,]
    [PROPERTY : VALUE ]
};

Begin
Start INTERFACE_NAME INTERFACE_PROPERTY;
Put WIDGET_NAME X Y ;
[Put WIDGET_NAME X Y ;]
Show INTERFACE_NAME;
End
  • WIDGET : one of the 4 previous types, written in PascalCase.

  • WIDGET_NAME : your variable name which can contain numbers and letters only, and starting with a letter.

  • PROPERTY : can be one of the following :

    • For any widget :

      • Height : is the height of the widget, and has a VALUE of a positive Integer.

      • Width : is the width of the widget, and has a VALUE of a positive Integer.

      • Opacity : is the opacity of the widget, and has a VALUE of a positive Integer between 0 and 100.

        The following properties are for styling purposes :

      FONT PROPERTIES

      • FontSize : is the size of the font, and has an Integer value.
      • FontStyle : is the style of the font, and can take one of the following VALUES : "normal", "oblique", "italic".
      • FontWeight : is the weight of the font, and can take one of the following VALUES : "normal", "bold", "bolder", "lighter".

      COLOR PROPERTIES

      • BackgroundColor : A string that is the bachgroundcolor in hexadecimal. Ex : "#123456"
      • Color : A string that is the widget color in hexadecimal. Ex : "#123456"

      FONT PROPERTIES

      • LetterSpacing : The lenght between letters, take an Integer value.
      • TextDecorationLine : Can be one of these VALUES : "none", "underline", "line-through".
      • TextDecorationStyle : Can be one of these VALUES : "solid", "double", "wavy".

      BOX PROPERTIES

      • MarginTop

      • MarginLeft

      • MarginRight

      • MarginBottom

        The margin lenght in each side, takes an Integer value

      • PaddingTop

      • PaddingLeft

      • PaddingRight

      • PaddingBottom

        The margin lenght in each side, takes an Integer value

      • MinWidth : The minimum value of the widget's width, takes an Integer value.

      • MinHeight : The minimum value of the widget's height, takes an Integer value.

      BORDER PROPERTIES

      • BorderWidth : The width of the border, takes an Integer value
      • BorderRadius : The width of the border, takes an Integer value.
      • BorderStyle : Can be one of these VALUES : "none", "solid", "dotted", "dashed".
      • BorderColor : A string that is the widget's border color in hexadecimal. Ex : "#123456".

      For more informations about styling props, Click here

    • For the Interface widget :

      • Title : is the title of the interface, and has a VALUE of a String.
    • For the Button widget :

      • Text : is the text inside the button, and has a VALUE of a String.
    • For the InputField widget :

      • Text : is the text inside the input field, and has a VALUE of a String.

      • PlaceHolder : is the default appearing text in the input field, and has a VALUE of a String.

      • MaxLength : is the maximum length of the input, and has a VALUE of a positive Integer.

    • For the Label widget :

      • Text : is the text in the label, and has a VALUE of a String.

      • Angle : is the angle in which the text is written, and has a VALUE of an Integer between 0 and 359.

      • Xalign : is the horizontal text alignment, and has a VALUE of a positive Integer.

      • Yalign : is the vertical text alignment, and has a VALUE of a positive Integer.

PS1 : If you want to add more properties to a widget, you need to end your line with a comma ( , ).

  • INTERFACE_NAME : is the name of your predefined Interface variable.

    • INTERFACE_PROPERTY : is the property in which you want your interface to show up. It can be:

      • "CENTER" : if you want your interface to appear in the center of your string.

      • "MOUSE : if you want your interface to appear in the current position of your mouse.

      Note that "CENTER" and "MOUSE" are strings and not keywoards.

  • X : The x position of your widget, it has the value of an Integer.

  • Y : The y position of your widget, it has the value of an Integer.

PS2 : all the keywords are written in PascalCase.

FINAL PRODUCT :

Here's the final result ⭐ ⭐ ⭐ ⭐ ⭐ :

Test Image

TO DO :

  • Lexer
  • Parser
  • Testing the code
  • Semantic
  • Styles
  • Testing the code :

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.