topic: PicoC/IntroTopic
library home

comment / plain text

The Pico C Reference Manual

Pico C is a new programming language which I'm in the middle of writing a spec for. I plan to then write a Pico->C translator and, (especially if I can get help) a GCC front-end for Pico.

Pico is a (far) better "object oriented C" than C++. It borrows some key ideas (generic functions, real macros) from the lisp world. The core of Pico is, in my estimation, simpler than C (to understand, to describe, to compile) yet the expressiveness of Pico far greater than C++.

For more overview, you should read WhatThisIsAbout.

Current Milestone Goal: finishing up the (informal) language spec.

Next Milestone Goal: a Pico->C translator.

Project Contact: lord@regexps.com

the core language

ClassHierarchy : Although Pico is low-level, it is also a "pure" object oriented language.
InTheBeginning : void is the root of the class hierarchy.
ScalarClasses : Classes for numbers.
ProcedureOverloading : Pico is polymorphic.
OperatorTranslations : How operators are expanded.
LvalueTypes : How to turn assignment into a polymorphic procedure call without messing up register allocation.
ImplicitConversion : When and how are values implicitly cast to other types?
ExplicitCast : When and how may values be explicitly cast to other types?
SpecialCasts : Some kinds of cast operator definitions that have special meaning.
FunctionPointers : How procedure references are dealt with.
MultipleValues : Procedures can return more than one value.
LimitsOnVariables : Limits on how you can use variables.
CallingConventions : Programs can define how frames are allocated.

the preprocessor
PicoPreprocessing : Notes on the preprocessor.

loose ends
FrameContents : I'm not sure whether or how much to expose stack frames.
ModuleSystems? : What kinds of higher-level module system should be built for Pico?
SchemePlans : How I (tentatively) plan to use Pico to implement Scheme.

Here are some "scrap pieces" -- bits and pieces that might (after revision) make it into Pico:

AlternativeStrategies CompilationUnits HelloWorld IdentifierNames IgnoredType ImplicitFunctions MissingDataTypes NamingUnits NegativeDefinitions NoImplicitDecls PointerTypes PointersAreIntegers ProcedureDeclarations ProcedureDefinitions SimpleExpressionTypes TodoList TypeOf TypedefTypes VirtualMachine VoidType

You are using LabNotes from regexps.com