Have you ever tried to explain an algorithm on a presentation or document and felt the lack of having a standard to write pseudocode? Well, this Atom package is a syntax highlighter for a pseudocode language.
It is still in development and open for new contributors.
- Install Atom editor
- cd ~/.atom/packages
- git clone https://github.com/andrefreitas/language-pseudocode
- Open Atom Editor
- Create a file called hello.pseudo
- Learn the language by the examples here
Here you can see some examples. The language is still not complete but can be enough just to write simple algorithms.
FOR each component in commit
component.revisions_twr += twr
IF is_bug_fix(commit) THEN
component.fixes_twr += twr
ENDIF
IF is_new_author(component, commit.author) THEN
component.authors_twr += twr
ENDIF
ENDFOR
counter = 0
WHILE counter < 10
counter += 1
print(counter)
ENDWHILE
FUNCTION twr(ti)
RETURN 1 / (1 + e ^ ( -12 * ti + 12) )
ENDFUNCTION
CLASS person
name
email
FUNCTION person(name, email)
this.name = name
this.email = email
ENDFUNCTION
ENDCLASS
ABSTRACT CLASS Data
URL
FUNCTION load(filter, callback)
loadStored(filter, callback)
sync(filter, callback)
ENDFUNCTION
FUNCTION loadStored(filter, callback)
entities = query(filter)
callback(entities)
ENDFUNCTION
FUNCTION sync(filter, callback)
entities = request(filter, callback)
store(entities)
callback(entities)
ENDFUNCTION
FUNCTION ABSTRACT query(filter) // Local database query
FUNCTION ABSTRACT store(entities) // Saves entities on local database
FUNCTION ABSTRACT request(filter, callback) // API async JSON request
ENDCLASS
CLASS IterationsData EXTENDS DataInterface
FUNCTION query(filter)
(...)
ENDFUNCTION
FUNCTION store(entities)
(...)
ENDFUNCTION
FUNCTION request(filter)
(...)
ENDFUNCTION
ENDCLASS
CLASS person
string name
int age
float weight
FUNCTION person(string name, int age, float weight)
this.name = name
this.age = age
this.weight = weight
ENDFUNCTION
ENDCLASS
list numbers = [1,2,3]
set lights = {"green", "red", "yellow"}
map person = {name: "Carlos", age: 12}
I would love to have contributors to improve this language. Just send me an email hello@andrefreitas.pt
- André Freitas - hello@andrefreitas.pt
- Write a grammar
- Support for classes, prints and optional typing
- Define a standard library for io, network, etc
- Build a parser to analyze time complexity
- Publish on Atom (when language will be more complete)
- Have a brainstorming session of what would be useful for pseudocode
Copyright 2015 André Freitas
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.