Skip to content
/ tactic Public

Tactic is a small Scheme-like language in one file

Notifications You must be signed in to change notification settings

eddieh/tactic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tactic

./logo.png

Tactic is a small Scheme like langauge in one file.

Syntax

Instead of parenthesis, Tactic use brackets. Characters and strings are delimited by the usual single and double quotes. Quoted (literal) list are lists begin with a leading l, quasiquoted list begin with a leading q, and unquoted expressions begin with a leading $. Lambdas begin with a leading ^. The idenity function has the following form:

^[x x]

A function is a list that’s car is the formal parameter list and the cdr is the body, when the formal parameters is a list the function takes multiple arguments:

^[[a b] [fn a b]]

Here are some valid Tactic definitions:

[def a 1]
[def b 2]
[def c ^[[a b] [cat a b]]]
[def d l[1 2 3]]
[def e q[$a $b 3]]
[def f ^[x [pow x 5]]
[def g 'c']
[def h "hello"]
[def i 3.14]

Rich Numbers

Since Tactic is Scheme like (non-algebraic) and does not use certain characters for syntax it supprts rich number literals that are written naturally. In Tactic these are all valid numbers: 12, 100.1, 1/3, 56%, 0x1a1c, 0b01010, 10^3, 34e13, 3+6i, 3i+4j+4k, 102,010,333.

Explicit lexing and parsing steps

Seperate and explicit steps for lexing and parsing to support precise and detailed error messages.

About

Tactic is a small Scheme-like language in one file

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published