Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ELLIOTTCABLE/Old-World-Paws.c
A run at an ISO C99 Paws interpreter
https://github.com/ELLIOTTCABLE/Old-World-Paws.c
Last synced: about 2 months ago
JSON representation
A run at an ISO C99 Paws interpreter
- Host: GitHub
- URL: https://github.com/ELLIOTTCABLE/Old-World-Paws.c
- Owner: ELLIOTTCABLE
- Created: 2010-01-25T20:50:20.000Z (over 14 years ago)
- Default Branch: Master
- Last Pushed: 2010-07-20T08:26:05.000Z (almost 14 years ago)
- Last Synced: 2024-04-15T00:25:01.217Z (2 months ago)
- Language: C
- Homepage:
- Size: 367 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
Lists
- AwesomeInterpreter - Old-World-Paws.c
README
Paws.c
======
It’s Paws, in ISO/IEC 9899:1999. That’s C99, for people too lazy to google it.### Roadmap & Status
#### Paws.c — v1, “I can interpret an AST!”
- Threading implementation: partial, and `routine` interpreter under heavy development
- Default (native) implementation of lookups
- Expression interpreter
- Cross-platformization: Only known to compile on OS X; almost definitely will not work on Windows#### Paws.c — v2, “I can execute a document!”
- cPaws parser#### Paws.c — v3, “Hello, world!”
- Interpretation‐unit acquisition, ‘packaging’
- Intra–interpretation‐unit communication, `list` sharingBuilding
--------
Can’t really be arsed learning `make` right now, not to mention it seems like a bit of a clusterfuck of a tool,
so… these:# This is just a shortcut. You can use `gcc` instead of `clang` here; it takes the same arguments.
C() { eval local last="\$$#"; last=${last##*/}; clang -o "${last%.*}.o" "$@" }
# The command-line interface’s binary, `Paws.c` itself
clang -O0 -std=c99 -pedantic-errors -Wall -ISource \
Source/Paws.c/Ancillary/Threading/Threading.c \
Source/Paws.c/Ancillary/Threading/Pool/Pool.c \
Source/Paws.c/Ancillary/Threading/Thread/Thread.c \
Source/Paws.c/Ancillary/Magazine/Magazine.c \
Source/Paws.c/Ancillary/Unit/Unit.c \
Source/Paws.c/Types/list/ll.c \
Source/Paws.c/Types/list/list.c \
Source/Paws.c/Types/routine/ast.c \
Source/Paws.c/Types/routine/routine.c \
Source/Paws.c/Types/execution/execution.c \
Source/Paws.c/Types/numeric/numeric.c \
Source/Paws.c/Types/string/string.c \
Source/Paws.c/Paws.c \
Source/Paws.c/Tools/Paws.c.c -o Paws.o && ./Paws.o
# The ‘cests’ (tests) for Paws
C -O0 -std=c99 -pedantic-errors -Wall -ISource Source/Cest.c \
Source/Paws.c/Ancillary/Threading/Threading.c \
Source/Paws.c/Ancillary/Threading/Pool/Pool.tests.c \
Source/Paws.c/Ancillary/Threading/Thread/Thread.tests.c \
Source/Paws.c/Ancillary/Magazine/Magazine.tests.c \
Source/Paws.c/Ancillary/Unit/Unit.tests.c \
Source/Paws.c/Types/list/ll.tests.c \
Source/Paws.c/Types/list/list.tests.c \
Source/Paws.c/Types/routine/ast.tests.c \
Source/Paws.c/Types/routine/routine.tests.c \
Source/Paws.c/Types/execution/execution.tests.c \
Source/Paws.c/Types/numeric/numeric.tests.c \
Source/Paws.c/Types/string/string.tests.c \
Source/Paws.c/Paws.tests.c && \
./Paws.tests.o
# Run `gdb` against the tests for Paws (use `run`)
C -O0 -std=c99 -pedantic-errors -Wall -ggdb -ISource Source/Cest.c \
Source/Paws.c/Ancillary/Threading/Threading.c \
Source/Paws.c/Ancillary/Threading/Pool/Pool.tests.c \
Source/Paws.c/Ancillary/Threading/Thread/Thread.tests.c \
Source/Paws.c/Ancillary/Magazine/Magazine.tests.c \
Source/Paws.c/Ancillary/Unit/Unit.tests.c \
Source/Paws.c/Types/list/ll.tests.c \
Source/Paws.c/Types/list/list.tests.c \
Source/Paws.c/Types/routine/ast.tests.c \
Source/Paws.c/Types/routine/routine.tests.c \
Source/Paws.c/Types/execution/execution.tests.c \
Source/Paws.c/Types/numeric/numeric.tests.c \
Source/Paws.c/Types/string/string.tests.c \
Source/Paws.c/Paws.tests.c && \
gdb -q -se ./Paws.tests.o
# use `run`Conventions
-----------
Several coding conventions used in this project:### Commit labels
Some commits are ‘labeled’ by space-separated words in parenthesis at the start of the commit message. You can
filter the commit list by these words. Some of the more common ones:- `minor`: A commit with little or no consequence, for instance typo fixes, tiny source-code spacing changes, and
so forth. Filtering these out will provide you with a much cleaner commit list, with no real loss of useful
information.
- `api`: A commit that *changes* the public API of the naming in a major way (i.e. changing the name of a public
method or function, or re-arranging functions in some way); filtering against these will provide you a fairly
comprehensive list of changes which will probably affect you during an upgrade.
- `new`: Adds new features, methods, or functions; *adds* to the API instead modifying anything that already
exists.
- `fix`: Fixes a bug or mistake of some sort. Does not indicate mutation of the API, unless `api` is included as
well.
- `refactor`: Rather than specifically fixing a known bug, or adding new features, this modifies the existing
codebase to be cleaner, safer, or more understandable in some way.
- `tests`: Only affects the tests, does not change any implementation.
- `incomplete`: Most commits to this project are required to be ‘stand-alone’; that is, the project should at
least compile, if not pass all tests, at any commit you decide to `git checkout`. Filtering out this label will
provide with a list of commits that should be *somewhat* safe to compile against.
- `doc`: Only affects the documentation, does not change any implementation or the test suite.