GithubHelp home page GithubHelp logo

danger-noodle's Introduction

danger-noodle

(aka Havabol)

Status

Some base code is laid out. We can easily swap out the current Scanner code (by Sean) with another once the decision is made.

No interpreting actually happens at this point. Just scanning, token construction, and classification.

Building

On a Linux machine (or in Cygwin / MinGW under Windows) run ci/build.sh from the root folder. The script will drop a danger-noodle.jar in the root folder. Done!

Testing

Plans for continuous integration testing are still in progress. Looking in to using Concourse CI as the testing platform. Pipeline and build steps will be placed under the ci folder - see ci/pipeline.yml and the other .yml files.

Contributing

Please attempt not to commit directly to master. It makes code review considerably easier when all work is done from a separate branch and then PR / reviewed into master.

Sample flow:

git checkout -b my_feature_branch
# ... do work
git add .
git commit -m "I did some things!"
git push --set-upstream origin my_feature_branch

Back on Github, create a PR against the base branch with your feature branch. Post to Slack and then profit. After changes are approved (with Github's review features) and at least one member approves (and tests pass!), you can squash merge into master.

danger-noodle's People

Contributors

esnfish avatar pirogoeth avatar shaneb3489 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

danger-noodle's Issues

Division of responsibilities

  • Symbol table work including initialization of global table and each STEntry class / subclass (assigned to @pirogoeth)
  • Scanner work (assigned to [who?])
  • Utility work (assigned to [who?])
    • Skipping a comment
    • Date recognition and validation (future)
    • Numerics class
    • Others... (so descriptive, thanks Larry)

p2 output requirements

Output each statement and its tokens. It is okay if your output prints the next statement prior to printing the last token of the previous statement.


If you are doing the interpreter (hurka durka), you must use a hexDump routine to print the value of character string literals. (a la String.format("%02x")?????)

Continuous integration

It would be really dope to have all changes to all of the codebase actively tested against all of the input files - from p1 inputs onward. But, at that point, it would be good to have separate unit stubs that let us test chunks of functionality out of each piece individually (ie., test Scanner without making huge modifications just to only test it - be able to still retrieve tokens at a time and diff against expected outputs)

"Recommended software"

I am assuming these are pieces that Larry is recommending that we have?

  • Scanner, Token
  • SymbolTable, STEntry, STFunction, STControl, STIdentifier
  • Utility classes
    • Numeric class

Requirements for part two of assignment

  • Implement a SymbolTable class backed by a HashMap
  • Symbol Table entry classes
    • STEntry - base class (done in #8 - @pirogoeth)
    • STIdentifier > STEntry - representing identifier tokens (done in #8 - @pirogoeth)
    • STFunction > STEntry - representing a function in its full form (done in #8 - @pirogoeth)
    • STControl > STEntry - representing flow control blocks (done in #8 - @pirogoeth)
  • Additional Scanner features:
    • Combination of two-character operators (ie., <=, >=, !=, ^= (in doc as ^ ???), ==)
    • Skip comment lines
    • Convert strings to correct representation (done #10 - @pirogoeth)
    • Classify the following operators: and, or, not, in, notin (done now - @EsNFish )
    • Recognize flow control / block end tokens (ie., if, endif, else, while, endwhile, for, endfor)
    • Recognize declaration tokens (Int, Float, String, Bool)
    • Recognize boolean constants
    • Provide access to currentToken and nextToken(wip - @EsNFish)

Memory management?

Need a memory manager to do things...


Default value for non-primitives: null
Default value for primitives: null

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.